Improve locked_by-filter for locked pages report, fixes #9116

It now only displays users, which have actually locked something.
stable/3.0.x
Stefan Hammer 2022-09-01 12:02:33 +02:00 zatwierdzone przez Matt Westcott
rodzic 054c077c68
commit f164180d36
2 zmienionych plików z 29 dodań i 0 usunięć

Wyświetl plik

@ -30,6 +30,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(
"""
<select name="locked_by" id="id_locked_by">
<option value="" selected>---------</option>
</select>
""",
response.content.decode(),
)
self.page = Page.objects.first()
self.page.locked = True
self.page.locked_by = self.user
@ -43,6 +53,16 @@ class TestLockedPagesView(TestCase, WagtailTestUtils):
self.assertNotContains(response, "No locked pages found.")
self.assertContains(response, self.page.title)
self.assertInHTML(
f"""
<select name="locked_by" id="id_locked_by">
<option value="" selected>---------</option>
<option value="{self.user.pk}">{self.user}</option>
</select>
""",
response.content.decode(),
)
def test_csv_export(self):
self.page = Page.objects.first()

Wyświetl plik

@ -2,6 +2,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 _
@ -11,8 +12,16 @@ from wagtail.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