diff --git a/wagtail/admin/tests/test_reports_views.py b/wagtail/admin/tests/test_reports_views.py index fcdc617d50..f0f174a84d 100644 --- a/wagtail/admin/tests/test_reports_views.py +++ b/wagtail/admin/tests/test_reports_views.py @@ -31,6 +31,16 @@ class TestLockedPagesView(TestCase, WagtailTestUtils): # Initially there should be no locked pages self.assertContains(response, "No locked pages found.") + # No user locked anything + self.assertInHTML( + """ + + """, + response.content.decode(), + ) + self.page = Page.objects.first() self.page.locked = True self.page.locked_by = self.user @@ -44,6 +54,16 @@ class TestLockedPagesView(TestCase, WagtailTestUtils): self.assertNotContains(response, "No locked pages found.") self.assertContains(response, self.page.title) + self.assertInHTML( + f""" + + """, + response.content.decode(), + ) + def test_csv_export(self): self.page = Page.objects.first() diff --git a/wagtail/admin/views/reports/locked_pages.py b/wagtail/admin/views/reports/locked_pages.py index 3ac9f174ec..40a1ea1889 100644 --- a/wagtail/admin/views/reports/locked_pages.py +++ b/wagtail/admin/views/reports/locked_pages.py @@ -3,6 +3,7 @@ import datetime import django_filters from django.conf import settings +from django.contrib.auth import get_user_model from django.core.exceptions import PermissionDenied from django.utils.translation import gettext_lazy as _ @@ -12,8 +13,16 @@ from wagtail.core.models import Page, UserPagePermissionsProxy from .base import PageReportView +def get_users_for_filter(): + User = get_user_model() + return User.objects.filter(locked_pages__isnull=False).order_by(User.USERNAME_FIELD) + + class LockedPagesReportFilterSet(WagtailFilterSet): locked_at = django_filters.DateFromToRangeFilter(widget=DateRangePickerWidget) + locked_by = django_filters.ModelChoiceFilter( + field_name="locked_by", queryset=lambda request: get_users_for_filter() + ) class Meta: model = Page