kopia lustrzana https://github.com/wagtail/wagtail
Prevent error on locked pages report when a user has locked multiple pages (#11245)
Fixes #10960. Thanks to @richie-blake and @rohitsrma for reporting / investigation.pull/11297/head
rodzic
e8ff6a2fa3
commit
c001335e71
|
@ -16,6 +16,7 @@ Changelog
|
|||
* Fix: Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
|
||||
* Fix: Prevent snippet permission post-migrate hook from failing on multiple database configurations (Joe Tsoi)
|
||||
* Fix: Reinstate ability to filter on page type when searching on an empty query (Sage Abdullah)
|
||||
* Fix: Prevent error on locked pages report when a user has locked multiple pages (Matt Westcott)
|
||||
* Docs: Fix code example for `{% picture ... as ... %}` template tag (Rezyapkin)
|
||||
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ depth: 1
|
|||
* Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
|
||||
* Prevent snippet permission post-migrate hook from failing on multiple database configurations (Joe Tsoi)
|
||||
* Reinstate ability to filter on page type when searching on an empty query (Sage Abdullah)
|
||||
* Prevent error on locked pages report when a user has locked multiple pages (Matt Westcott)
|
||||
|
||||
### Documentation
|
||||
|
||||
|
|
|
@ -44,18 +44,31 @@ class TestLockedPagesView(WagtailTestUtils, TestCase):
|
|||
response.content.decode(),
|
||||
)
|
||||
|
||||
self.page = Page.objects.first()
|
||||
self.page.locked = True
|
||||
self.page.locked_by = self.user
|
||||
self.page.locked_at = timezone.now()
|
||||
self.page.save()
|
||||
parent_page = Page.objects.first()
|
||||
parent_page.add_child(
|
||||
instance=Page(
|
||||
title="First locked page",
|
||||
locked=True,
|
||||
locked_by=self.user,
|
||||
locked_at=timezone.now(),
|
||||
)
|
||||
)
|
||||
parent_page.add_child(
|
||||
instance=Page(
|
||||
title="Second locked page",
|
||||
locked=True,
|
||||
locked_by=self.user,
|
||||
locked_at=timezone.now(),
|
||||
)
|
||||
)
|
||||
|
||||
# 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)
|
||||
self.assertContains(response, "First locked page")
|
||||
self.assertContains(response, "Second locked page")
|
||||
|
||||
self.assertInHTML(
|
||||
f"""
|
||||
|
@ -198,6 +211,12 @@ class TestFilteredLockedPagesView(WagtailTestUtils, TestCase):
|
|||
self.unpublished_page.locked_at = timezone.now()
|
||||
self.unpublished_page.save()
|
||||
|
||||
self.christmas_page = Page.objects.get(url_path="/home/events/christmas/")
|
||||
self.christmas_page.locked = True
|
||||
self.christmas_page.locked_by = self.user
|
||||
self.christmas_page.locked_at = timezone.now()
|
||||
self.christmas_page.save()
|
||||
|
||||
def get(self, params={}):
|
||||
return self.client.get(reverse("wagtailadmin_reports:locked_pages"), params)
|
||||
|
||||
|
@ -206,16 +225,19 @@ class TestFilteredLockedPagesView(WagtailTestUtils, TestCase):
|
|||
self.assertEqual(response.status_code, 200)
|
||||
self.assertNotContains(response, "Tentative Unpublished Event")
|
||||
self.assertContains(response, "My locked page")
|
||||
self.assertContains(response, "Christmas")
|
||||
|
||||
response = self.get(params={"live": "false"})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Tentative Unpublished Event")
|
||||
self.assertNotContains(response, "My locked page")
|
||||
self.assertNotContains(response, "Christmas")
|
||||
|
||||
def test_filter_by_user(self):
|
||||
response = self.get(params={"locked_by": self.user.pk})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Tentative Unpublished Event")
|
||||
self.assertContains(response, "Christmas")
|
||||
self.assertNotContains(response, "My locked page")
|
||||
|
||||
|
||||
|
|
|
@ -15,7 +15,11 @@ 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)
|
||||
return (
|
||||
User.objects.filter(locked_pages__isnull=False)
|
||||
.order_by(User.USERNAME_FIELD)
|
||||
.distinct()
|
||||
)
|
||||
|
||||
|
||||
class LockedPagesReportFilterSet(WagtailFilterSet):
|
||||
|
|
Ładowanie…
Reference in New Issue