Update pagination behaviour on choosers to match Django standard

pull/10533/head
Matt Westcott 2023-06-09 21:32:28 +01:00
rodzic 0e73399dd2
commit 2b9ba182c2
4 zmienionych plików z 20 dodań i 27 usunięć

Wyświetl plik

@ -8,7 +8,7 @@ from django.core.exceptions import (
ObjectDoesNotExist,
PermissionDenied,
)
from django.core.paginator import Paginator
from django.core.paginator import InvalidPage, Paginator
from django.forms.models import modelform_factory
from django.http import Http404
from django.template.loader import render_to_string
@ -232,7 +232,10 @@ class BaseChooseView(
objects = self.filter_object_list(objects)
paginator = Paginator(objects, per_page=self.per_page)
return paginator.get_page(request.GET.get("p"))
try:
return paginator.page(request.GET.get("p", 1))
except InvalidPage:
raise Http404
def get(self, request):
self.filter_form = self.get_filter_form()

Wyświetl plik

@ -1617,11 +1617,7 @@ class TestDocumentChooserView(WagtailTestUtils, TestCase):
)
# Check response
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtaildocs/chooser/results.html")
# Check that we got page one
self.assertEqual(response.context["results"].number, 1)
self.assertEqual(response.status_code, 404)
def test_pagination_out_of_range(self):
self.make_docs()
@ -1631,14 +1627,7 @@ class TestDocumentChooserView(WagtailTestUtils, TestCase):
)
# Check response
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtaildocs/chooser/results.html")
# Check that we got the last page
self.assertEqual(
response.context["results"].number,
response.context["results"].paginator.num_pages,
)
self.assertEqual(response.status_code, 404)
def test_construct_queryset_hook_browse(self):
document = models.Document.objects.create(

Wyświetl plik

@ -1590,10 +1590,12 @@ class TestImageChooserView(WagtailTestUtils, TestCase):
self.assertEqual(response.context["search_query"], "Hello")
def test_pagination(self):
pages = ["0", "1", "-1", "9999", "Not a page"]
for page in pages:
response = self.get({"p": page})
self.assertEqual(response.status_code, 200)
# page numbers in range should be accepted
response = self.get({"p": 1})
self.assertEqual(response.status_code, 200)
# page numbers out of range should return 404
response = self.get({"p": 9999})
self.assertEqual(response.status_code, 404)
def test_filter_by_tag(self):
for i in range(0, 10):

Wyświetl plik

@ -4347,14 +4347,13 @@ class TestSnippetChoose(WagtailTestUtils, TestCase):
self.assertEqual(response.context["results"][0].text, "advert 1")
def test_simple_pagination(self):
pages = ["0", "1", "-1", "9999", "Not a page"]
for page in pages:
response = self.get({"p": page})
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(
response, "wagtailadmin/generic/chooser/chooser.html"
)
# page numbers in range should be accepted
response = self.get({"p": 1})
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtailadmin/generic/chooser/chooser.html")
# page numbers out of range should return 404
response = self.get({"p": 9999})
self.assertEqual(response.status_code, 404)
def test_not_searchable(self):
# filter_form should not have a search field