Skip to content

Commit

Permalink
Fixed #21510 -- Readded search reset link in changelist search bar
Browse files Browse the repository at this point in the history
Thanks moritz.pfeiffer at alp-phone.ch for the report and
Tim Graham for the initial patch.
  • Loading branch information
claudep committed Dec 11, 2013
1 parent 5db028a commit c7c6474
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 4 deletions.
2 changes: 1 addition & 1 deletion django/contrib/admin/views/main.py
Expand Up @@ -217,7 +217,7 @@ def get_results(self, request):
# Perform a slight optimization: # Perform a slight optimization:
# full_result_count is equal to paginator.count if no filters # full_result_count is equal to paginator.count if no filters
# were applied # were applied
if self.get_filters_params(): if self.get_filters_params() or self.params.get(SEARCH_VAR):
full_result_count = self.root_queryset.count() full_result_count = self.root_queryset.count()
else: else:
full_result_count = result_count full_result_count = result_count
Expand Down
2 changes: 2 additions & 0 deletions docs/releases/1.6.1.txt
Expand Up @@ -47,3 +47,5 @@ Bug fixes
* Fixed password hash upgrade when changing the iteration count (#21535). * Fixed password hash upgrade when changing the iteration count (#21535).
* Fixed a bug in the debug view when the urlconf only contains one element * Fixed a bug in the debug view when the urlconf only contains one element
(#21530). (#21530).
* Re-added missing search result count and reset link in changelist admin view
(#21510).
15 changes: 12 additions & 3 deletions tests/admin_views/tests.py
Expand Up @@ -2275,6 +2275,15 @@ def test_pluggable_search(self):
self.assertContains(response, "\n1 pluggable search person\n") self.assertContains(response, "\n1 pluggable search person\n")
self.assertContains(response, "Amy") self.assertContains(response, "Amy")


def test_reset_link(self):
"""
Test presence of reset link in search bar ("1 result (_x total_)").
"""
response = self.client.get('/test_admin/admin/admin_views/person/?q=Gui')
self.assertContains(response,
"""<span class="small quiet">1 result (<a href="?">3 total</a>)</span>""",
html=True)



@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
class AdminInheritedInlinesTest(TestCase): class AdminInheritedInlinesTest(TestCase):
Expand Down Expand Up @@ -2716,17 +2725,17 @@ def test_changelist_view_count_queries(self):
resp = self.client.get('/test_admin/admin/admin_views/person/') resp = self.client.get('/test_admin/admin/admin_views/person/')
self.assertEqual(resp.context['selection_note'], '0 of 2 selected') self.assertEqual(resp.context['selection_note'], '0 of 2 selected')
self.assertEqual(resp.context['selection_note_all'], 'All 2 selected') self.assertEqual(resp.context['selection_note_all'], 'All 2 selected')
with self.assertNumQueries(4): # here one more count(*) query will run, because filters were applied
with self.assertNumQueries(5):
extra = {'q': 'not_in_name'} extra = {'q': 'not_in_name'}
resp = self.client.get('/test_admin/admin/admin_views/person/', extra) resp = self.client.get('/test_admin/admin/admin_views/person/', extra)
self.assertEqual(resp.context['selection_note'], '0 of 0 selected') self.assertEqual(resp.context['selection_note'], '0 of 0 selected')
self.assertEqual(resp.context['selection_note_all'], 'All 0 selected') self.assertEqual(resp.context['selection_note_all'], 'All 0 selected')
with self.assertNumQueries(4): with self.assertNumQueries(5):
extra = {'q': 'person'} extra = {'q': 'person'}
resp = self.client.get('/test_admin/admin/admin_views/person/', extra) resp = self.client.get('/test_admin/admin/admin_views/person/', extra)
self.assertEqual(resp.context['selection_note'], '0 of 2 selected') self.assertEqual(resp.context['selection_note'], '0 of 2 selected')
self.assertEqual(resp.context['selection_note_all'], 'All 2 selected') self.assertEqual(resp.context['selection_note_all'], 'All 2 selected')
# here one more count(*) query will run, because filters were applied
with self.assertNumQueries(5): with self.assertNumQueries(5):
extra = {'gender__exact': '1'} extra = {'gender__exact': '1'}
resp = self.client.get('/test_admin/admin/admin_views/person/', extra) resp = self.client.get('/test_admin/admin/admin_views/person/', extra)
Expand Down

0 comments on commit c7c6474

Please sign in to comment.