Improve locked_by-filter for locked pages report, fixes

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

Wyświetl plik

@ -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(
"""
<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
@ -44,6 +54,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

@ -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