8000 Fix: Allow viewing page settings even if change page settings if not … · django-cms/django-cms@a3f329b · GitHub
[go: up one dir, main page]

Skip to content

Commit a3f329b

Browse files
authored
Fix: Allow viewing page settings even if change page settings if not possible. (#7921)
1 parent 650f31a commit a3f329b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

cms/admin/pageadmin.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,6 +1051,24 @@ def has_change_permission(self, request, obj=None):
10511051
)
10521052
return can_change_page
10531053

1054+
def has_view_permission(self, request, obj=None):
1055+
"""
1056+
Return true if the current user has permission on the page.
1057+
Return the string 'All' if the user has all rights.
1058+
"""
1059+
# Identical to has_change_permission, but will remain untouched by any subclassing
1060+
# as done, e.g., by djangocms-versioning
1061+
site = get_site(request)
1062+
1063+
if obj:
1064+
return page_permissions.user_can_change_page(request.user, page=obj.page, site=site)
1065+
can_view_page = page_permissions.user_can_change_at_least_one_page(
1066+
user=request.user,
1067+
site=get_site(request),
1068+
use_cache=False,
1069+
)
1070+
return can_view_page
1071+
10541072
def has_delete_permission(self, request, obj=None):
10551073
"""
10561074
Returns True if the current user has permission to delete the page.

cms/tests/test_permmod.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ def test_emulate_admin_index(self):
591591
with self.assertNumQueries(FuzzyInt(3, max_queries)):
592592
# internally this calls PageAdmin.has_[add|change|delete|view]_permission()
593593
expected_perms = {'add': True, 'change': True, 'delete': False}
594-
expected_perms.update({'view': False}) # Why
594+
expected_perms.update({'view': expected_perms['change']})
595595
self.assertEqual(expected_perms, site._registry[PageContent].get_model_perms(request))
596596

597597
# can't use the above loop for this test, as we're testing that
@@ -619,7 +619,7 @@ def test_emulate_admin_index(self):
619619
request.current_page = None
620620
request.session = {}
621621
expected_perms = {'add': True, 'change': True, 'delete': False}
622-
expected_perms.update({'view': False})
622+
expected_perms.update({'view': expected_perms['change']})
623623
self.assertEqual(expected_perms, site._registry[PageContent].get_model_perms(request))
624624

625625
def test_has_page_add_permission_with_target(self):

0 commit comments

Comments
 (0)
0