diff --git a/wagtail/documents/tests/test_admin_views.py b/wagtail/documents/tests/test_admin_views.py index 7fcb65eff9..eb07bd48ac 100644 --- a/wagtail/documents/tests/test_admin_views.py +++ b/wagtail/documents/tests/test_admin_views.py @@ -131,6 +131,25 @@ class TestDocumentIndexView(TestCase, WagtailTestUtils): self.assertContains(response, '%s?next=%s' % (edit_url, next_url)) +class TestDocumentListingResultsView(TestCase, WagtailTestUtils): + def setUp(self): + self.login() + + def get(self, params={}): + return self.client.get(reverse("wagtaildocs:listing_results"), params) + + def test_search(self): + doc = models.Document.objects.create(title="A boring report") + + response = self.get({"q": "boring"}) + self.assertEqual(response.status_code, 200) + # 'next' param on edit page link should point back to the documents index, not the results view + self.assertContains( + response, + "/admin/documents/edit/%d/?next=/admin/documents/%%3Fq%%3Dboring" % doc.id, + ) + + class TestDocumentAddView(TestCase, WagtailTestUtils): def setUp(self): self.login() diff --git a/wagtail/documents/views/documents.py b/wagtail/documents/views/documents.py index a259b6e0ff..605b8ce7fe 100644 --- a/wagtail/documents/views/documents.py +++ b/wagtail/documents/views/documents.py @@ -69,12 +69,17 @@ class BaseListingView(TemplateView): paginator = Paginator(documents, per_page=20) documents = paginator.get_page(self.request.GET.get('p')) + next_url = reverse("wagtaildocs:index") + request_query_string = self.request.META.get("QUERY_STRING") + if request_query_string: + next_url += "?" + request_query_string + context.update({ 'ordering': ordering, 'documents': documents, 'query_string': query_string, 'is_searching': bool(query_string), - 'next': self.request.get_full_path(), + 'next': next_url, }) return context diff --git a/wagtail/images/tests/test_admin_views.py b/wagtail/images/tests/test_admin_views.py index b76043097e..88409a1ce3 100644 --- a/wagtail/images/tests/test_admin_views.py +++ b/wagtail/images/tests/test_admin_views.py @@ -196,6 +196,28 @@ class TestImageIndexView(TestCase, WagtailTestUtils): ) +class TestImageListingResultsView(TestCase, WagtailTestUtils): + def setUp(self): + self.login() + + def get(self, params={}): + return self.client.get(reverse("wagtailimages:listing_results"), params) + + def test_search(self): + monster = Image.objects.create( + title="A scary monster", + file=get_test_image_file(), + ) + + response = self.get({"q": "monster"}) + self.assertEqual(response.status_code, 200) + # 'next' param on edit page link should point back to the images index, not the results view + self.assertContains( + response, + "/admin/images/%d/?next=/admin/images/%%3Fq%%3Dmonster" % monster.id, + ) + + class TestImageAddView(TestCase, WagtailTestUtils): def setUp(self): self.login() diff --git a/wagtail/images/views/images.py b/wagtail/images/views/images.py index c48635356f..47f33730ff 100644 --- a/wagtail/images/views/images.py +++ b/wagtail/images/views/images.py @@ -79,11 +79,16 @@ class BaseListingView(TemplateView): paginator = Paginator(images, per_page=INDEX_PAGE_SIZE) images = paginator.get_page(self.request.GET.get('p')) + next_url = reverse("wagtailimages:index") + request_query_string = self.request.META.get("QUERY_STRING") + if request_query_string: + next_url += "?" + request_query_string + context.update({ 'images': images, 'query_string': query_string, 'is_searching': bool(query_string), - 'next': self.request.get_full_path(), + 'next': next_url, }) return context