summaryrefslogtreecommitdiff
path: root/tests/admin_filters
diff options
context:
space:
mode:
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)