From fbf1ebe346dcafbfc1ed431104d382cccf8fe93c Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Sat, 10 Jun 2023 01:29:07 +0100 Subject: [PATCH] Update pagination behaviour on page chooser to match Django standard --- wagtail/admin/tests/test_page_chooser.py | 4 ++-- wagtail/admin/views/chooser.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/wagtail/admin/tests/test_page_chooser.py b/wagtail/admin/tests/test_page_chooser.py index 2a99e2c3e6..2d0d878de5 100644 --- a/wagtail/admin/tests/test_page_chooser.py +++ b/wagtail/admin/tests/test_page_chooser.py @@ -298,13 +298,13 @@ class TestChooserBrowseChild(WagtailTestUtils, TestCase): self.setup_pagination_test_data() response = self.get({"p": "foo"}) - self.assertEqual(response.context["pagination_page"].number, 1) + self.assertEqual(response.status_code, 404) def test_pagination_out_of_range_page(self): self.setup_pagination_test_data() response = self.get({"p": 100}) - self.assertEqual(response.context["pagination_page"].number, 5) + self.assertEqual(response.status_code, 404) class TestChooserSearch(WagtailTestUtils, TransactionTestCase): diff --git a/wagtail/admin/views/chooser.py b/wagtail/admin/views/chooser.py index 59af96772c..032479dc81 100644 --- a/wagtail/admin/views/chooser.py +++ b/wagtail/admin/views/chooser.py @@ -1,7 +1,7 @@ import re from django.conf import settings -from django.core.paginator import Paginator +from django.core.paginator import InvalidPage, Paginator from django.http import Http404 from django.shortcuts import get_object_or_404 from django.template.response import TemplateResponse @@ -342,7 +342,10 @@ class BrowseView(View): # We apply pagination first so we don't need to walk the entire list # in the block below paginator = Paginator(pages, per_page=25) - pages = paginator.get_page(request.GET.get("p")) + try: + pages = paginator.page(request.GET.get("p", 1)) + except InvalidPage: + raise Http404 # Annotate each page with can_choose/can_decend flags for page in pages: