summaryrefslogtreecommitdiff
path: root/tests/regressiontests/modeladmin
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-05-03 10:44:23 +0000
committerJannis Leidel <jannis@leidel.info>2011-05-03 10:44:23 +0000
commit18d2f4a81611fa4051ccdcfb9dd443f3a247102e (patch)
tree86aafec1f0835166a33b84285de6166b03b7bf30 /tests/regressiontests/modeladmin
parenta85cd1688b7a4468a4836b892f35480dc16ad331 (diff)
Fixed #5833 -- Modified the admin list filters to be easier to customize. Many thanks to Honza Král, Tom X. Tobin, gerdemb, eandre, sciyoshi, bendavis78 and Julien Phalip for working on this.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16144 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/modeladmin')
-rw-r--r--tests/regressiontests/modeladmin/tests.py69
1 files changed, 64 insertions, 5 deletions
diff --git a/tests/regressiontests/modeladmin/tests.py b/tests/regressiontests/modeladmin/tests.py
index a20e579026..530b476b7c 100644
--- a/tests/regressiontests/modeladmin/tests.py
+++ b/tests/regressiontests/modeladmin/tests.py
@@ -2,19 +2,21 @@ from datetime import date
from django import forms
from django.conf import settings
-from django.contrib.admin.options import ModelAdmin, TabularInline, \
- HORIZONTAL, VERTICAL
+from django.contrib.admin.options import (ModelAdmin, TabularInline,
+ HORIZONTAL, VERTICAL)
from django.contrib.admin.sites import AdminSite
from django.contrib.admin.validation import validate
from django.contrib.admin.widgets import AdminDateWidget, AdminRadioSelect
+from django.contrib.admin import (SimpleListFilter,
+ BooleanFieldListFilter)
from django.core.exceptions import ImproperlyConfigured
from django.forms.models import BaseModelFormSet
from django.forms.widgets import Select
from django.test import TestCase
from django.utils import unittest
-from models import Band, Concert, ValidationTestModel, \
- ValidationTestInlineModel
+from models import (Band, Concert, ValidationTestModel,
+ ValidationTestInlineModel)
# None of the following tests really depend on the content of the request,
@@ -851,8 +853,65 @@ class ValidationTests(unittest.TestCase):
ValidationTestModel,
)
+ class RandomClass(object):
+ pass
+
+ class ValidationTestModelAdmin(ModelAdmin):
+ list_filter = (RandomClass,)
+
+ self.assertRaisesRegexp(
+ ImproperlyConfigured,
+ "'ValidationTestModelAdmin.list_filter\[0\]' is 'RandomClass' which is not a descendant of ListFilter.",
+ validate,
+ ValidationTestModelAdmin,
+ ValidationTestModel,
+ )
+
+ class ValidationTestModelAdmin(ModelAdmin):
+ list_filter = (('is_active', RandomClass),)
+
+ self.assertRaisesRegexp(
+ ImproperlyConfigured,
+ "'ValidationTestModelAdmin.list_filter\[0\]\[1\]' is 'RandomClass' which is not of type FieldListFilter.",
+ validate,
+ ValidationTestModelAdmin,
+ ValidationTestModel,
+ )
+
+ class AwesomeFilter(SimpleListFilter):
+ def get_title(self):
+ return 'awesomeness'
+ def get_choices(self, request):
+ return (('bit', 'A bit awesome'), ('very', 'Very awesome'), )
+ def get_query_set(self, cl, qs):
+ return qs
+
+ class ValidationTestModelAdmin(ModelAdmin):
+ list_filter = (('is_active', AwesomeFilter),)
+
+ self.assertRaisesRegexp(
+ ImproperlyConfigured,
+ "'ValidationTestModelAdmin.list_filter\[0\]\[1\]' is 'AwesomeFilter' which is not of type FieldListFilter.",
+ validate,
+ ValidationTestModelAdmin,
+ ValidationTestModel,
+ )
+
+ class ValidationTestModelAdmin(ModelAdmin):
+ list_filter = (BooleanFieldListFilter,)
+
+ self.assertRaisesRegexp(
+ ImproperlyConfigured,
+ "'ValidationTestModelAdmin.list_filter\[0\]' is 'BooleanFieldListFilter' which is of type FieldListFilter but is not associated with a field name.",
+ validate,
+ ValidationTestModelAdmin,
+ ValidationTestModel,
+ )
+
+ # Valid declarations below -----------
+
class ValidationTestModelAdmin(ModelAdmin):
- list_filter = ('is_active',)
+ list_filter = ('is_active', AwesomeFilter, ('is_active', BooleanFieldListFilter))
validate(ValidationTestModelAdmin, ValidationTestModel)