From cd0f8381cddb875172d15bc904fca5ebeadc43fe Mon Sep 17 00:00:00 2001 From: riceyrice Date: Fri, 3 Jun 2016 13:12:56 +0100 Subject: [PATCH] Ensure pagination is retained on invalid upload Otherwise hidden Search tab causes web browser to load _every_ image in the system. --- CHANGELOG.txt | 3 ++- docs/releases/1.5.1.rst | 2 +- .../wagtailimages/tests/test_admin_views.py | 18 ++++++++++++++++++ wagtail/wagtailimages/views/chooser.py | 3 ++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 9de70dfbb..de84f49fa 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -18,7 +18,8 @@ Changelog * Fix: Link tooltip now shows correct urls for newly inserted document links (Matt Westcott) * Fix: Now page chooser (in a rich text editor) opens up at the link's parent page, rather than at the page itself (Matt Westcott) * Fix: Reverted fix for explorer menu scrolling with page content, as it blocked access to menus that exceed screen height - + * Fix: Image listing in the image chooser no longer becomes unpaginated after an invalid upload form submission (Stephen Rice) + 1.5 (31.05.2016) ~~~~~~~~~~~~~~~~ diff --git a/docs/releases/1.5.1.rst b/docs/releases/1.5.1.rst index 4d078c620..a5599dd76 100644 --- a/docs/releases/1.5.1.rst +++ b/docs/releases/1.5.1.rst @@ -21,4 +21,4 @@ Bug fixes * Link tooltip now shows correct urls for newly inserted document links (Matt Westcott) * Now page chooser (in a rich text editor) opens up at the link's parent page, rather than at the page itself (Matt Westcott) * Reverted fix for explorer menu scrolling with page content, as it blocked access to menus that exceed screen height - \ No newline at end of file + * Image listing in the image chooser no longer becomes unpaginated after an invalid upload form submission (Stephen Rice) diff --git a/wagtail/wagtailimages/tests/test_admin_views.py b/wagtail/wagtailimages/tests/test_admin_views.py index 0708c6338..66ce0b71a 100644 --- a/wagtail/wagtailimages/tests/test_admin_views.py +++ b/wagtail/wagtailimages/tests/test_admin_views.py @@ -490,6 +490,24 @@ class TestImageChooserUploadView(TestCase, WagtailTestUtils): # The form should have an error self.assertFormError(response, 'uploadform', 'file', "This field is required.") + def test_pagination_after_upload_form_error(self): + for i in range(0, 20): + Image.objects.create( + title="Test image %d" % i, + file=get_test_image_file(), + ) + + response = self.client.post(reverse('wagtailimages:chooser_upload'), { + 'title': "Test image", + }) + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'wagtailimages/chooser/chooser.html') + + # The re-rendered image chooser listing should be paginated + self.assertContains(response, "Page 1 of ") + self.assertEqual(12, len(response.context['images'])) + @override_settings(DEFAULT_FILE_STORAGE='wagtail.tests.dummy_external_storage.DummyExternalStorage') def test_upload_with_external_storage(self): response = self.client.post(reverse('wagtailimages:chooser_upload'), { diff --git a/wagtail/wagtailimages/views/chooser.py b/wagtail/wagtailimages/views/chooser.py index f34788043..94d92cde0 100644 --- a/wagtail/wagtailimages/views/chooser.py +++ b/wagtail/wagtailimages/views/chooser.py @@ -144,7 +144,8 @@ def chooser_upload(request): else: form = ImageForm(user=request.user) - images = Image.objects.order_by('title') + images = Image.objects.order_by('-created_at') + paginator, images = paginate(request, images, per_page=12) return render_modal_workflow( request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js',