Skip to content

fix: #7633 page global perms 'can_view' unclear admin ui text #8256

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

wesleyboar
Copy link

@wesleyboar wesleyboar commented Jun 16, 2025

Description

Clarify misleadingly vague model description.

Important

Status:

  • Open against release/3.11.X.
  • Delete new migration.
  • Add to latest migration in v3.11.x.

#8256 (comment)

Related resources

Checklist

  • I have opened this pull request against main
  • I have added or modified the tests when changing logic
  • I have followed the conventional commits guidelines to add meaningful information into the changelog
  • I have read the contribution guidelines and I have joined the channel #pr-reviews on our Discord Server to find a “pr review buddy” who is going to review my pull request.

Copy link
Contributor

sourcery-ai bot commented Jun 16, 2025

Reviewer's Guide

This PR refines the semantics of the page-level “can_view” permission by updating its admin help text, adding a migration for the change, and introducing tests to ensure it only grants access to published restricted pages and not to unpublished ones.

Class diagram for updated AbstractPagePermission and PagePermission models

classDiagram
    class AbstractPagePermission {
        +BooleanField can_change_permissions
        +BooleanField can_move_page
        +BooleanField can_view
    }
    note for AbstractPagePermission "can_view: Grants access to published pages with view restrictions. Does not allow viewing unpublished pages."
    class PagePermission {
        +BooleanField can_view
    }
    note for PagePermission "can_view: Grants access to published pages with view restrictions. Does not allow viewing unpublished pages."
    AbstractPagePermission <|-- PagePermission
Loading

File-Level Changes

Change Details Files
Clarified the “can_view” field’s label and help text to specify its scope.
  • Renamed label to “can view restricted pages”
  • Expanded help text to state it only applies to published restricted pages and blocks unpublished ones
cms/models/permissionmodels.py
Added a migration to apply the updated help text to the database schema.
  • Created migration 0043 to alter the can_view field’s help_text
cms/migrations/0043_alter_pagepermission_can_view_help_text.py
Introduced a test to verify correct can_view behavior on published vs unpublished pages.
  • Added test_view_permission_behavior to check access on published restricted pages
  • Ensured unpublished pages are not viewable even with can_view
cms/tests/test_permissions.py

Assessment against linked issues

Issue Objective Addressed Explanation
#7633 Clarify the meaning of 'View restricted' in the Page Global Permissions admin UI.
#7633 Clarify the meaning of 'frontend view restriction' in the Page Global Permissions admin UI.
#7633 Address the unclear error message 'Edit permissions required' when creating a Page Global Permission. The PR does not address the error message 'Edit permissions required'.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@wesleyboar wesleyboar marked this pull request as ready for review June 16, 2025 23:38
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @wesleyboar - I've reviewed your changes - here's some feedback:

  • Please remove the “Generated by AI (Claude Sonnet 3.5)” header from the migration file to keep the commit history clean.
  • Now that the changes are complete, you can delete or update the “[!IMPORTANT] Incomplete” note in the PR description.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- Please remove the “Generated by AI (Claude Sonnet 3.5)” header from the migration file to keep the commit history clean.
- Now that the changes are complete, you can delete or update the “[!IMPORTANT] Incomplete” note in the PR description.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@wesleyboar
Copy link
Author

In response to @sorcery-ai:

  • Please remove the “Generated by AI (Claude Sonnet 3.5)” header from the migration file to keep the commit history clean.
Not unless a human says so, because the comment has purpose.

Other migrations have comment that they were auto-generated, so I think this was should explain how it was generated.

❌ The PR does not address the error message 'Edit permissions required'.

I suggest we not require that be addressed, because it is working as intended.

It's annoying to stumble through the error, but (1) I have not found a built in field-value-dependency mechanism in Django, (2) building a one-off with JavaScript seems like overkill, and (3) something like that would "best" be done by Django or Django CMS as a new feature any admin form could use.

@fsbraun
Copy link
Member

fsbraun commented Jun 17, 2025

@wesleyboar Thanks for clarifying and creating this! This clearly is v3 code - as of v4, no publishing logic is available in django CMS' core. Tests will fail :-(

Can I suggest the following:

  • Reopen against release/3.11.x
  • After approval, let us agree on the desired behavior on v4+
  • dCA creates the ports for v4 and v5

Now, django CMS 3.11 must not contain new migrations. Since you only change the label and help text of model fields, the corresponding migration is a database no-op. I suggest updating the latest relevant one instead of creating a new one.

@wesleyboar wesleyboar marked this pull request as draft June 17, 2025 17:07
@wesleyboar
Copy link
Author

wesleyboar commented Jun 17, 2025

Excellent. Makes sense.* Tasks added. PR converted to draft.

* Does it, though? Yes; see notes for self.

The comment indicates that the pull request contains code written for Django CMS v3, which assumes publishing logic exists in the core ("each published page in the CMS exists in as two cms.Page instances: public and draft"). Since v4 removed this core publishing functionality and moved it to external packages like djangocms-versioning, any tests or code that relies on the old v3 publishing system will fail when run against v4+.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] Admin UI Text in Page Global Permissions is Unclear
2 participants
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy