kopia lustrzana https://github.com/wagtail/wagtail
Fix incorrect user_has_any_permission usage
rodzic
1b4d7902b1
commit
c6f1667e5f
|
@ -103,7 +103,7 @@ permission_policy.instances_user_has_permission_for(user, "publish")
|
|||
permission_policy.instances_user_has_permission_for(user, "publish").exists()
|
||||
|
||||
# proxy.can_remove_locks()
|
||||
permission_policy.user_has_any_permission(user, "unlock")
|
||||
permission_policy.user_has_permission(user, "unlock")
|
||||
```
|
||||
|
||||
The `UserPagePermissionsProxy` object that was previously available in page's `ActionMenuItem` context as `user_page_permissions` has been removed. In cases where the page object is available (e.g. the page edit view), the `PagePermissionTester` object stored as the `user_page_permissions_tester` context variable is still available.
|
||||
|
|
|
@ -3,7 +3,7 @@ from io import BytesIO
|
|||
|
||||
from django.conf import settings
|
||||
from django.conf.locale import LANG_INFO
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.auth.models import Group, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.test import TestCase
|
||||
from django.test.utils import override_settings
|
||||
|
@ -12,7 +12,7 @@ from django.utils import timezone, translation
|
|||
from openpyxl import load_workbook
|
||||
|
||||
from wagtail.admin.views.mixins import ExcelDateFormatter
|
||||
from wagtail.models import ModelLogEntry, Page, PageLogEntry
|
||||
from wagtail.models import GroupPagePermission, ModelLogEntry, Page, PageLogEntry
|
||||
from wagtail.test.utils import WagtailTestUtils
|
||||
|
||||
|
||||
|
@ -70,6 +70,41 @@ class TestLockedPagesView(WagtailTestUtils, TestCase):
|
|||
response, 'title="This page is locked, by you, to further editing"'
|
||||
)
|
||||
|
||||
def test_get_with_minimal_permissions(self):
|
||||
group = Group.objects.create(name="test group")
|
||||
self.user.is_superuser = False
|
||||
self.user.save()
|
||||
self.user.groups.add(group)
|
||||
self.user.user_permissions.add(
|
||||
Permission.objects.get(
|
||||
content_type__app_label="wagtailadmin", codename="access_admin"
|
||||
)
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=group,
|
||||
page=Page.objects.first(),
|
||||
permission_type="unlock",
|
||||
)
|
||||
|
||||
response = self.get()
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailadmin/reports/locked_pages.html")
|
||||
self.assertContains(response, "No locked pages found.")
|
||||
|
||||
def test_get_with_no_permissions(self):
|
||||
self.user.is_superuser = False
|
||||
self.user.save()
|
||||
self.user.user_permissions.add(
|
||||
Permission.objects.get(
|
||||
content_type__app_label="wagtailadmin", codename="access_admin"
|
||||
)
|
||||
)
|
||||
|
||||
response = self.get()
|
||||
|
||||
self.assertRedirects(response, reverse("wagtailadmin_home"))
|
||||
|
||||
def test_csv_export(self):
|
||||
|
||||
self.page = Page.objects.first()
|
||||
|
|
|
@ -224,7 +224,7 @@ class LockedPagesPanel(Component):
|
|||
locked=True,
|
||||
locked_by=request.user,
|
||||
),
|
||||
"can_remove_locks": PagePermissionPolicy().user_has_any_permission(
|
||||
"can_remove_locks": PagePermissionPolicy().user_has_permission(
|
||||
request.user, "unlock"
|
||||
),
|
||||
"request": request,
|
||||
|
|
|
@ -63,6 +63,6 @@ class LockedPagesView(PageReportView):
|
|||
return super().get_queryset()
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not PagePermissionPolicy().user_has_any_permission(request.user, "unlock"):
|
||||
if not PagePermissionPolicy().user_has_permission(request.user, "unlock"):
|
||||
raise PermissionDenied
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
|
|
@ -908,7 +908,7 @@ def register_core_features(features):
|
|||
|
||||
class LockedPagesMenuItem(MenuItem):
|
||||
def is_shown(self, request):
|
||||
return PagePermissionPolicy().user_has_any_permission(request.user, "unlock")
|
||||
return PagePermissionPolicy().user_has_permission(request.user, "unlock")
|
||||
|
||||
|
||||
class WorkflowReportMenuItem(MenuItem):
|
||||
|
|
|
@ -2980,7 +2980,7 @@ class UserPagePermissionsProxy:
|
|||
|
||||
def can_remove_locks(self):
|
||||
"""Returns True if the user has permission to unlock pages they have not locked"""
|
||||
return self.permission_policy.user_has_any_permission(self.user, "unlock")
|
||||
return self.permission_policy.user_has_permission(self.user, "unlock")
|
||||
|
||||
|
||||
class PagePermissionTester:
|
||||
|
|
Ładowanie…
Reference in New Issue