kopia lustrzana https://github.com/wagtail/wagtail
Update pagination behaviour on wagtail.contrib.forms to match Django standard
rodzic
2b9ba182c2
commit
e6add87cd0
|
@ -174,11 +174,7 @@ class TestFormsIndex(WagtailTestUtils, TestCase):
|
|||
response = self.client.get(reverse("wagtailforms:index"), {"p": "Hello world!"})
|
||||
|
||||
# Check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailforms/index.html")
|
||||
|
||||
# Check that it got page one
|
||||
self.assertEqual(response.context["page_obj"].number, 1)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_forms_index_pagination_out_of_range(self):
|
||||
# Create some more form pages to make pagination kick in
|
||||
|
@ -188,13 +184,7 @@ class TestFormsIndex(WagtailTestUtils, TestCase):
|
|||
response = self.client.get(reverse("wagtailforms:index"), {"p": 99999})
|
||||
|
||||
# Check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailforms/index.html")
|
||||
|
||||
# Check that it got the last page
|
||||
self.assertEqual(
|
||||
response.context["page_obj"].number, response.context["paginator"].num_pages
|
||||
)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_cannot_see_forms_without_permission(self):
|
||||
# Login with as a user without permission to see forms
|
||||
|
@ -310,7 +300,7 @@ class TestFormsIndexWithLocalisationEnabled(WagtailTestUtils, TestCase):
|
|||
self.assertEqual(response.context["page_obj"].number, 2)
|
||||
|
||||
response = self.client.get(self.forms_index_url, {"p": 3})
|
||||
self.assertEqual(response.context["page_obj"].number, 2)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
# now check the French pages.
|
||||
response = self.client.get(
|
||||
|
@ -478,11 +468,7 @@ class TestFormsSubmissionsList(WagtailTestUtils, TestCase):
|
|||
)
|
||||
|
||||
# Check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailforms/submissions_index.html")
|
||||
|
||||
# Check that we got page one
|
||||
self.assertEqual(response.context["page_obj"].number, 1)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_list_submissions_pagination_out_of_range(self):
|
||||
self.make_list_submissions()
|
||||
|
@ -493,13 +479,7 @@ class TestFormsSubmissionsList(WagtailTestUtils, TestCase):
|
|||
)
|
||||
|
||||
# Check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailforms/submissions_index.html")
|
||||
|
||||
# Check that we got the last page
|
||||
self.assertEqual(
|
||||
response.context["page_obj"].number, response.context["paginator"].num_pages
|
||||
)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_list_submissions_default_order(self):
|
||||
response = self.client.get(
|
||||
|
@ -1187,11 +1167,7 @@ class TestCustomFormsSubmissionsList(WagtailTestUtils, TestCase):
|
|||
)
|
||||
|
||||
# Check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailforms/submissions_index.html")
|
||||
|
||||
# Check that we got page one
|
||||
self.assertEqual(response.context["page_obj"].number, 1)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_list_submissions_pagination_out_of_range(self):
|
||||
self.make_list_submissions()
|
||||
|
@ -1202,13 +1178,7 @@ class TestCustomFormsSubmissionsList(WagtailTestUtils, TestCase):
|
|||
)
|
||||
|
||||
# Check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, "wagtailforms/submissions_index.html")
|
||||
|
||||
# Check that we got the last page
|
||||
self.assertEqual(
|
||||
response.context["page_obj"].number, response.context["paginator"].num_pages
|
||||
)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
|
||||
class TestDeleteFormSubmission(WagtailTestUtils, TestCase):
|
||||
|
|
|
@ -3,7 +3,6 @@ from collections import OrderedDict
|
|||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.paginator import InvalidPage
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy, ngettext
|
||||
|
@ -23,46 +22,13 @@ def get_submissions_list_view(request, *args, **kwargs):
|
|||
return form_page.serve_submissions_list_view(request, *args, **kwargs)
|
||||
|
||||
|
||||
class SafePaginateListView(ListView):
|
||||
"""Listing view with safe pagination, allowing incorrect or out of range values"""
|
||||
|
||||
paginate_by = 20
|
||||
page_kwarg = "p"
|
||||
|
||||
def paginate_queryset(self, queryset, page_size):
|
||||
"""Paginate the queryset if needed with nice defaults on invalid param."""
|
||||
paginator = self.get_paginator(
|
||||
queryset,
|
||||
page_size,
|
||||
orphans=self.get_paginate_orphans(),
|
||||
allow_empty_first_page=self.get_allow_empty(),
|
||||
)
|
||||
page_kwarg = self.page_kwarg
|
||||
page_request = (
|
||||
self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 0
|
||||
)
|
||||
try:
|
||||
page_number = int(page_request)
|
||||
except ValueError:
|
||||
if page_request == "last":
|
||||
page_number = paginator.num_pages
|
||||
else:
|
||||
page_number = 0
|
||||
try:
|
||||
if page_number > paginator.num_pages:
|
||||
page_number = paginator.num_pages # page out of range, show last page
|
||||
page = paginator.page(page_number)
|
||||
except InvalidPage:
|
||||
page = paginator.page(1)
|
||||
finally:
|
||||
return paginator, page, page.object_list, page.has_other_pages()
|
||||
|
||||
|
||||
class FormPagesListView(SafePaginateListView):
|
||||
class FormPagesListView(ListView):
|
||||
"""Lists the available form pages for the current user"""
|
||||
|
||||
template_name = "wagtailforms/index.html"
|
||||
context_object_name = "form_pages"
|
||||
paginate_by = 20
|
||||
page_kwarg = "p"
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
@ -174,7 +140,7 @@ class DeleteSubmissionsView(TemplateView):
|
|||
return context
|
||||
|
||||
|
||||
class SubmissionsListView(SpreadsheetExportMixin, SafePaginateListView):
|
||||
class SubmissionsListView(SpreadsheetExportMixin, ListView):
|
||||
"""Lists submissions for the provided form page"""
|
||||
|
||||
template_name = "wagtailforms/submissions_index.html"
|
||||
|
@ -188,6 +154,8 @@ class SubmissionsListView(SpreadsheetExportMixin, SafePaginateListView):
|
|||
) # used to validate ordering in URL
|
||||
page_title = gettext_lazy("Form data")
|
||||
select_date_form = None
|
||||
paginate_by = 20
|
||||
page_kwarg = "p"
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
"""Check permissions and set the form page"""
|
||||
|
|
Ładowanie…
Reference in New Issue