diff options
| author | Stanislas Guerra <stanislas.guerra@gmail.com> | 2014-05-21 12:32:19 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-08-04 09:39:02 -0400 |
| commit | 98e8da3709e400d549e87c7ff1450a2685c0adcf (patch) | |
| tree | d2532acc84686fdff908807998487d46841e9ef8 /tests | |
| parent | bf5382c6e549d78da9f7029cd86686459b52eaed (diff) | |
Fixed #16311 -- Added a RelatedOnlyFieldListFilter class in admin.filters.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/admin_filters/tests.py | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py index 17c67929dc..23c6c10319 100644 --- a/tests/admin_filters/tests.py +++ b/tests/admin_filters/tests.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import datetime from django.contrib.admin import (site, ModelAdmin, SimpleListFilter, - BooleanFieldListFilter, AllValuesFieldListFilter) + BooleanFieldListFilter, AllValuesFieldListFilter, RelatedOnlyFieldListFilter) from django.contrib.admin.views.main import ChangeList from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User @@ -134,6 +134,15 @@ class BookAdminWithUnderscoreLookupAndTuple(BookAdmin): list_filter = ('year', ('author__email', AllValuesFieldListFilter), 'contributors', 'is_best_seller', 'date_registered', 'no') +class BookAdminRelatedOnlyFilter(ModelAdmin): + list_filter = ( + 'year', 'is_best_seller', 'date_registered', 'no', + ('author', RelatedOnlyFieldListFilter), + ('contributors', RelatedOnlyFieldListFilter), + ) + ordering = ('-id',) + + class DecadeFilterBookAdmin(ModelAdmin): list_filter = ('author', DecadeListFilterWithTitleAndParameter) ordering = ('-id',) @@ -359,6 +368,13 @@ class ListFiltersTests(TestCase): def test_relatedfieldlistfilter_foreignkey(self): modeladmin = BookAdmin(Book, site) + request = self.request_factory.get('/') + changelist = self.get_changelist(request, Book, modeladmin) + + # Make sure that all users are present in the author's list filter + filterspec = changelist.get_filters(request)[0][1] + self.assertEqual(filterspec.lookup_choices, [(1, 'alfred'), (2, 'bob'), (3, 'lisa')]) + request = self.request_factory.get('/', {'author__isnull': 'True'}) changelist = self.get_changelist(request, Book, modeladmin) @@ -387,6 +403,13 @@ class ListFiltersTests(TestCase): def test_relatedfieldlistfilter_manytomany(self): modeladmin = BookAdmin(Book, site) + request = self.request_factory.get('/') + changelist = self.get_changelist(request, Book, modeladmin) + + # Make sure that all users are present in the contrib's list filter + filterspec = changelist.get_filters(request)[0][2] + self.assertEqual(filterspec.lookup_choices, [(1, 'alfred'), (2, 'bob'), (3, 'lisa')]) + request = self.request_factory.get('/', {'contributors__isnull': 'True'}) changelist = self.get_changelist(request, Book, modeladmin) @@ -464,6 +487,26 @@ class ListFiltersTests(TestCase): self.assertEqual(choice['selected'], True) self.assertEqual(choice['query_string'], '?books_contributed__id__exact=%d' % self.django_book.pk) + def test_relatedonlyfieldlistfilter_foreignkey(self): + modeladmin = BookAdminRelatedOnlyFilter(Book, site) + + request = self.request_factory.get('/') + changelist = self.get_changelist(request, Book, modeladmin) + + # Make sure that only actual authors are present in author's list filter + filterspec = changelist.get_filters(request)[0][1] + self.assertEqual(filterspec.lookup_choices, [(1, 'alfred'), (2, 'bob')]) + + def test_relatedonlyfieldlistfilter_manytomany(self): + modeladmin = BookAdminRelatedOnlyFilter(Book, site) + + request = self.request_factory.get('/') + changelist = self.get_changelist(request, Book, modeladmin) + + # Make sure that only actual contributors are present in contrib's list filter + filterspec = changelist.get_filters(request)[0][2] + self.assertEqual(filterspec.lookup_choices, [(2, 'bob'), (3, 'lisa')]) + def test_booleanfieldlistfilter(self): modeladmin = BookAdmin(Book, site) self.verify_booleanfieldlistfilter(modeladmin) |
