summaryrefslogtreecommitdiff
path: root/tests/admin_filters
diff options
context:
space:
mode:
authorSimon Meers <simon@simonmeers.com>2017-08-14 20:46:02 +1000
committerTim Graham <timograham@gmail.com>2017-08-22 08:17:26 -0400
commit7bba82453ce142e170325c28e684aa7ee719a0b3 (patch)
treebb8c1a028f83e1eefd80f6a81cbbcdb2158b40e3 /tests/admin_filters
parentfea9cb46aacc73cabac883a806ccb7fdc1f979dd (diff)
downloaddjango-7bba82453ce142e170325c28e684aa7ee719a0b3.tar.gz
Fixed #28496 -- Added ModelAdmin.get_changelist_instance().
Diffstat (limited to 'tests/admin_filters')
-rw-r--r--tests/admin_filters/tests.py112
1 files changed, 51 insertions, 61 deletions
diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py
index 06b795b2db..4a11c1a96b 100644
--- a/tests/admin_filters/tests.py
+++ b/tests/admin_filters/tests.py
@@ -7,7 +7,6 @@ from django.contrib.admin import (
RelatedOnlyFieldListFilter, SimpleListFilter, site,
)
from django.contrib.admin.options import IncorrectLookupParameters
-from django.contrib.admin.views.main import ChangeList
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.core.exceptions import ImproperlyConfigured
@@ -291,15 +290,6 @@ class ListFiltersTests(TestCase):
self.john = Employee.objects.create(name='John Blue', department=self.dev)
self.jack = Employee.objects.create(name='Jack Red', department=self.design)
- def get_changelist(self, request, model, modeladmin):
- return ChangeList(
- request, model, modeladmin.list_display,
- modeladmin.list_display_links, modeladmin.list_filter,
- modeladmin.date_hierarchy, modeladmin.search_fields,
- modeladmin.list_select_related, modeladmin.list_per_page,
- modeladmin.list_max_show_all, modeladmin.list_editable, modeladmin,
- )
-
def test_choicesfieldlistfilter_has_none_choice(self):
"""
The last choice is for the None value.
@@ -310,7 +300,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookmarkChoicesAdmin(Bookmark, site)
request = self.request_factory.get('/', {})
- changelist = self.get_changelist(request, Bookmark, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
filterspec = changelist.get_filters(request)[0][0]
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[-1]['display'], 'None')
@@ -320,11 +310,11 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdmin(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist(request)
request = self.request_factory.get('/', {'date_registered__gte': self.today,
'date_registered__lt': self.tomorrow})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -345,7 +335,7 @@ class ListFiltersTests(TestCase):
request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(day=1),
'date_registered__lt': self.next_month})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -370,7 +360,7 @@ class ListFiltersTests(TestCase):
request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(month=1, day=1),
'date_registered__lt': self.next_year})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -397,7 +387,7 @@ class ListFiltersTests(TestCase):
'date_registered__gte': str(self.one_week_ago),
'date_registered__lt': str(self.tomorrow),
})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -418,7 +408,7 @@ class ListFiltersTests(TestCase):
# Null/not null queries
request = self.request_factory.get('/', {'date_registered__isnull': 'True'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -433,7 +423,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choice['query_string'], '?date_registered__isnull=True')
request = self.request_factory.get('/', {'date_registered__isnull': 'False'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -461,7 +451,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdmin(Book, site)
request = self.request_factory.get('/', {'year__isnull': 'True'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -475,7 +465,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choices[-1]['query_string'], '?year__isnull=True')
request = self.request_factory.get('/', {'year': '2002'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][0]
@@ -488,7 +478,7 @@ class ListFiltersTests(TestCase):
# Make sure that correct filters are returned with custom querysets
modeladmin = BookAdminWithCustomQueryset(self.alfred, Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
filterspec = changelist.get_filters(request)[0][0]
choices = list(filterspec.choices(changelist))
@@ -504,7 +494,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdmin(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure that all users are present in the author's list filter
filterspec = changelist.get_filters(request)[0][1]
@@ -512,7 +502,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(sorted(filterspec.lookup_choices), sorted(expected))
request = self.request_factory.get('/', {'author__isnull': 'True'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -526,7 +516,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choices[-1]['query_string'], '?author__isnull=True')
request = self.request_factory.get('/', {'author__id__exact': self.alfred.pk})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
@@ -540,7 +530,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdmin(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure that all users are present in the contrib's list filter
filterspec = changelist.get_filters(request)[0][2]
@@ -548,7 +538,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(sorted(filterspec.lookup_choices), sorted(expected))
request = self.request_factory.get('/', {'contributors__isnull': 'True'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -562,7 +552,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choices[-1]['query_string'], '?contributors__isnull=True')
request = self.request_factory.get('/', {'contributors__id__exact': self.bob.pk})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][2]
@@ -576,7 +566,7 @@ class ListFiltersTests(TestCase):
# FK relationship -----
request = self.request_factory.get('/', {'books_authored__isnull': 'True'})
- changelist = self.get_changelist(request, User, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -590,7 +580,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choices[-1]['query_string'], '?books_authored__isnull=True')
request = self.request_factory.get('/', {'books_authored__id__exact': self.bio_book.pk})
- changelist = self.get_changelist(request, User, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][0]
@@ -601,7 +591,7 @@ class ListFiltersTests(TestCase):
# M2M relationship -----
request = self.request_factory.get('/', {'books_contributed__isnull': 'True'})
- changelist = self.get_changelist(request, User, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -615,7 +605,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choices[-1]['query_string'], '?books_contributed__isnull=True')
request = self.request_factory.get('/', {'books_contributed__id__exact': self.django_book.pk})
- changelist = self.get_changelist(request, User, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
@@ -638,7 +628,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdminRelatedOnlyFilter(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure that only actual authors are present in author's list filter
filterspec = changelist.get_filters(request)[0][4]
@@ -654,7 +644,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdminRelatedOnlyFilter(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Only actual departments should be present in employee__department's
# list filter.
@@ -669,7 +659,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdminRelatedOnlyFilter(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure that only actual contributors are present in contrib's list filter
filterspec = changelist.get_filters(request)[0][5]
@@ -688,7 +678,7 @@ class ListFiltersTests(TestCase):
modeladmin = BookmarkAdminGenericRelation(Bookmark, site)
request = self.request_factory.get('/', {'tags__tag': 'python'})
- changelist = self.get_changelist(request, Bookmark, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
queryset = changelist.get_queryset(request)
expected = [python_bookmark, django_bookmark]
@@ -704,10 +694,10 @@ class ListFiltersTests(TestCase):
def verify_booleanfieldlistfilter(self, modeladmin):
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
request = self.request_factory.get('/', {'is_best_seller__exact': 0})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -721,7 +711,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choice['query_string'], '?is_best_seller__exact=0')
request = self.request_factory.get('/', {'is_best_seller__exact': 1})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -735,7 +725,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(choice['query_string'], '?is_best_seller__exact=1')
request = self.request_factory.get('/', {'is_best_seller__isnull': 'True'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -755,10 +745,10 @@ class ListFiltersTests(TestCase):
"""
modeladmin = BookAdminWithUnderscoreLookupAndTuple(Book, site)
request = self.request_factory.get('/')
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
request = self.request_factory.get('/', {'author__email': 'alfred@example.com'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -769,14 +759,14 @@ class ListFiltersTests(TestCase):
modeladmin = BookAdmin(Book, site)
request = self.request_factory.get('/', {'author__id__exact': 'StringNotInteger!'})
with self.assertRaises(IncorrectLookupParameters):
- self.get_changelist(request, Book, modeladmin)
+ modeladmin.get_changelist_instance(request)
def test_simplelistfilter(self):
modeladmin = DecadeFilterBookAdmin(Book, site)
# Make sure that the first option is 'All' ---------------------------
request = self.request_factory.get('/', {})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -792,7 +782,7 @@ class ListFiltersTests(TestCase):
# Look for books in the 1980s ----------------------------------------
request = self.request_factory.get('/', {'publication-decade': 'the 80s'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -808,7 +798,7 @@ class ListFiltersTests(TestCase):
# Look for books in the 1990s ----------------------------------------
request = self.request_factory.get('/', {'publication-decade': 'the 90s'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -824,7 +814,7 @@ class ListFiltersTests(TestCase):
# Look for books in the 2000s ----------------------------------------
request = self.request_factory.get('/', {'publication-decade': 'the 00s'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -840,7 +830,7 @@ class ListFiltersTests(TestCase):
# Combine multiple filters -------------------------------------------
request = self.request_factory.get('/', {'publication-decade': 'the 00s', 'author__id__exact': self.alfred.pk})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -871,7 +861,7 @@ class ListFiltersTests(TestCase):
request = self.request_factory.get('/', {})
msg = "The list filter 'DecadeListFilterWithoutTitle' does not specify a 'title'."
with self.assertRaisesMessage(ImproperlyConfigured, msg):
- self.get_changelist(request, Book, modeladmin)
+ modeladmin.get_changelist_instance(request)
def test_simplelistfilter_without_parameter(self):
"""
@@ -881,7 +871,7 @@ class ListFiltersTests(TestCase):
request = self.request_factory.get('/', {})
msg = "The list filter 'DecadeListFilterWithoutParameter' does not specify a 'parameter_name'."
with self.assertRaisesMessage(ImproperlyConfigured, msg):
- self.get_changelist(request, Book, modeladmin)
+ modeladmin.get_changelist_instance(request)
def test_simplelistfilter_with_none_returning_lookups(self):
"""
@@ -890,7 +880,7 @@ class ListFiltersTests(TestCase):
"""
modeladmin = DecadeFilterBookAdminWithNoneReturningLookups(Book, site)
request = self.request_factory.get('/', {})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
filterspec = changelist.get_filters(request)[0]
self.assertEqual(len(filterspec), 0)
@@ -902,12 +892,12 @@ class ListFiltersTests(TestCase):
modeladmin = DecadeFilterBookAdminWithFailingQueryset(Book, site)
request = self.request_factory.get('/', {})
with self.assertRaises(ZeroDivisionError):
- self.get_changelist(request, Book, modeladmin)
+ modeladmin.get_changelist_instance(request)
def test_simplelistfilter_with_queryset_based_lookups(self):
modeladmin = DecadeFilterBookAdminWithQuerysetBasedLookups(Book, site)
request = self.request_factory.get('/', {})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
filterspec = changelist.get_filters(request)[0][0]
self.assertEqual(filterspec.title, 'publication decade')
@@ -932,7 +922,7 @@ class ListFiltersTests(TestCase):
"""
modeladmin = BookAdmin(Book, site)
request = self.request_factory.get('/', {'no': '207'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -952,7 +942,7 @@ class ListFiltersTests(TestCase):
# When it ends with '__in' -----------------------------------------
modeladmin = DecadeFilterBookAdminParameterEndsWith__In(Book, site)
request = self.request_factory.get('/', {'decade__in': 'the 90s'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -969,7 +959,7 @@ class ListFiltersTests(TestCase):
# When it ends with '__isnull' ---------------------------------------
modeladmin = DecadeFilterBookAdminParameterEndsWith__Isnull(Book, site)
request = self.request_factory.get('/', {'decade__isnull': 'the 90s'})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -990,7 +980,7 @@ class ListFiltersTests(TestCase):
"""
modeladmin = DepartmentFilterEmployeeAdmin(Employee, site)
request = self.request_factory.get('/', {'department': self.john.department.pk})
- changelist = self.get_changelist(request, Employee, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
queryset = changelist.get_queryset(request)
@@ -1010,7 +1000,7 @@ class ListFiltersTests(TestCase):
"""
modeladmin = DepartmentFilterUnderscoredEmployeeAdmin(Employee, site)
request = self.request_factory.get('/', {'department__whatever': self.john.department.pk})
- changelist = self.get_changelist(request, Employee, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
queryset = changelist.get_queryset(request)
@@ -1030,7 +1020,7 @@ class ListFiltersTests(TestCase):
modeladmin = EmployeeAdmin(Employee, site)
request = self.request_factory.get('/', {})
- changelist = self.get_changelist(request, Employee, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -1055,7 +1045,7 @@ class ListFiltersTests(TestCase):
# Filter by Department=='Development' --------------------------------
request = self.request_factory.get('/', {'department__code__exact': 'DEV'})
- changelist = self.get_changelist(request, Employee, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
# Make sure the correct queryset is returned
queryset = changelist.get_queryset(request)
@@ -1084,7 +1074,7 @@ class ListFiltersTests(TestCase):
modeladmin = DepartmentFilterDynamicValueBookAdmin(Book, site)
def _test_choices(request, expected_displays):
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
filterspec = changelist.get_filters(request)[0][0]
self.assertEqual(filterspec.title, 'publication decade')
choices = tuple(c['display'] for c in filterspec.choices(changelist))
@@ -1106,6 +1096,6 @@ class ListFiltersTests(TestCase):
"""
modeladmin = NotNinetiesListFilterAdmin(Book, site)
request = self.request_factory.get('/', {})
- changelist = self.get_changelist(request, Book, modeladmin)
+ changelist = modeladmin.get_changelist_instance(request)
changelist.get_results(request)
self.assertEqual(changelist.full_result_count, 4)