From 047ca7c9b7dd697f4ec4ccc255379d20ad7dd9f7 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 3 Mar 2017 09:15:38 +0200 Subject: [PATCH] Fix error when empty search string is provided to list view --- smartmin/views.py | 7 +++---- test_runner/blog/tests.py | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/smartmin/views.py b/smartmin/views.py index ad64c24..a267c7e 100644 --- a/smartmin/views.py +++ b/smartmin/views.py @@ -645,11 +645,10 @@ def derive_queryset(self, **kwargs): # apply any filtering search_fields = self.derive_search_fields() - if search_fields and 'search' in self.request.GET: - terms = self.request.GET['search'].split() - + search_terms = self.request.GET.get('search') + if search_fields and search_terms: term_queries = [] - for term in terms: + for term in search_terms: field_queries = [] for field in search_fields: field_queries.append(Q(**{field: term})) diff --git a/test_runner/blog/tests.py b/test_runner/blog/tests.py index 3e9d047..6b6d6ed 100644 --- a/test_runner/blog/tests.py +++ b/test_runner/blog/tests.py @@ -219,6 +219,10 @@ def test_list(self): response = self.client.get(reverse('blog.post_list') + "?search=post") self.assertEqual(list(response.context['post_list']), [post1, post4, post2, post3, self.post]) + # empty search string should be ignored + response = self.client.get(reverse('blog.post_list') + "?search=") + self.assertEqual(list(response.context['post_list']), [post1, post4, post2, post3, self.post]) + # change the format to json response = self.client.get(reverse('blog.post_list') + "?_format=json") self.assertEqual(json.loads(response.content.decode("utf-8")), [