diff options
author | Nick Sandford <nick@sandford.id.au> | 2015-11-07 13:01:25 +0000 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-11-18 19:54:27 -0500 |
commit | 5fa7b592b3f43282823045954c61a1f9a4b31a7f (patch) | |
tree | d104e79418b9f49bdef5426a7d1fb984ca514d9e /tests/admin_filters | |
parent | ad167502f36f2547718aee290d4d11bf7a26ff82 (diff) | |
download | django-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.py | 31 |
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) |