kopia lustrzana https://github.com/wagtail/wagtail
Update reference to , add basic tests for locked pages report, and update to cope with missing UserPagePermissionsProxy.permissions if inactive or superuser
rodzic
df194b40f3
commit
9fbeff41b3
|
@ -0,0 +1,35 @@
|
|||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from wagtail.core.models import Page
|
||||
from wagtail.tests.utils import WagtailTestUtils
|
||||
|
||||
|
||||
class TestLockedPagesView(TestCase, WagtailTestUtils):
|
||||
def setUp(self):
|
||||
self.user = self.login()
|
||||
|
||||
def get(self, params={}):
|
||||
return self.client.get(reverse('wagtailadmin_reports:locked_pages'), params)
|
||||
|
||||
def test_simple(self):
|
||||
response = self.get()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'wagtailadmin/reports/locked_pages.html')
|
||||
|
||||
# Initially there should be no locked pages
|
||||
self.assertContains(response, "No locked pages found.")
|
||||
|
||||
self.page = Page.objects.first()
|
||||
self.page.locked = True
|
||||
self.page.locked_by = self.user
|
||||
self.page.locked_at = timezone.now()
|
||||
self.page.save()
|
||||
|
||||
# Now the listing should contain our locked page
|
||||
response = self.get()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'wagtailadmin/reports/locked_pages.html')
|
||||
self.assertNotContains(response, "No locked pages found.")
|
||||
self.assertContains(response, self.page.title)
|
|
@ -31,6 +31,6 @@ class LockedPagesView(ReportView):
|
|||
return super().get_queryset()
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not UserPagePermissionsProxy(request.user).can_unlock_pages():
|
||||
if not UserPagePermissionsProxy(request.user).can_remove_locks():
|
||||
return permission_denied(request)
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
|
|
@ -1835,7 +1835,12 @@ class UserPagePermissionsProxy:
|
|||
|
||||
def can_remove_locks(self):
|
||||
"""Returns True if the user has permission to unlock pages they have not locked"""
|
||||
return self.user.is_superuser or self.permissions.filter(permission_type='unlock').exists()
|
||||
if self.user.is_superuser:
|
||||
return True
|
||||
if not self.user.is_active:
|
||||
return False
|
||||
else:
|
||||
return self.permissions.filter(permission_type='unlock').exists()
|
||||
|
||||
|
||||
class PagePermissionTester:
|
||||
|
|
Ładowanie…
Reference in New Issue