summaryrefslogtreecommitdiff
path: root/tests/admin_filters
diff options
context:
space:
mode:
authorNick Sandford <nick@sandford.id.au>2015-11-07 13:01:25 +0000
committerTim Graham <timograham@gmail.com>2015-11-18 19:54:27 -0500
commit5fa7b592b3f43282823045954c61a1f9a4b31a7f (patch)
treed104e79418b9f49bdef5426a7d1fb984ca514d9e /tests/admin_filters
parentad167502f36f2547718aee290d4d11bf7a26ff82 (diff)
downloaddjango-5fa7b592b3f43282823045954c61a1f9a4b31a7f.tar.gz
Fixed #22810 -- Corrected admin changelist count for list filters that filter by default.
Diffstat (limited to 'tests/admin_filters')
-rw-r--r--tests/admin_filters/tests.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py
index a34c268ace..51f571ad3f 100644
--- a/tests/admin_filters/tests.py
+++ b/tests/admin_filters/tests.py
@@ -43,6 +43,22 @@ class DecadeListFilter(SimpleListFilter):
return queryset.filter(year__gte=2000, year__lte=2009)
+class NotNinetiesListFilter(SimpleListFilter):
+ title = "Not nineties books"
+ parameter_name = "book_year"
+
+ def lookups(self, request, model_admin):
+ return (
+ ('the 90s', "the 1990's"),
+ )
+
+ def queryset(self, request, queryset):
+ if self.value() == 'the 90s':
+ return queryset.filter(year__gte=1990, year__lte=1999)
+ else:
+ return queryset.exclude(year__gte=1990, year__lte=1999)
+
+
class DecadeListFilterWithTitleAndParameter(DecadeListFilter):
title = 'publication decade'
parameter_name = 'publication-decade'
@@ -179,6 +195,10 @@ class DecadeFilterBookAdmin(ModelAdmin):
ordering = ('-id',)
+class NotNinetiesListFilterAdmin(ModelAdmin):
+ list_filter = (NotNinetiesListFilter,)
+
+
class DecadeFilterBookAdminWithoutTitle(ModelAdmin):
list_filter = (DecadeListFilterWithoutTitle,)
@@ -1026,3 +1046,14 @@ class ListFiltersTests(TestCase):
_test_choices(self.request_factory.get('/', {'publication-decade': 'the 90s'}),
("All", "the 1980's"))
+
+ def test_list_filter_queryset_filtered_by_default(self):
+ """
+ A list filter that filters the queryset by default gives the correct
+ full_result_count.
+ """
+ modeladmin = NotNinetiesListFilterAdmin(Book, site)
+ request = self.request_factory.get('/', {})
+ changelist = self.get_changelist(request, Book, modeladmin)
+ changelist.get_results(request)
+ self.assertEqual(changelist.full_result_count, 4)