diff options
| author | Karen Tracey <kmtracey@gmail.com> | 2008-10-21 19:03:21 +0000 |
|---|---|---|
| committer | Karen Tracey <kmtracey@gmail.com> | 2008-10-21 19:03:21 +0000 |
| commit | ae43d11838c783797805774a76cd15ff6ea565ba (patch) | |
| tree | 182934af9a40bdc0487bb3ac37dd6d02dc27d794 /tests/regressiontests/admin_views | |
| parent | 49ef21d9ea3070aba863af83b22d1ff6dba69f45 (diff) | |
Fixed #3096 -- Make admin list_filters respect limit_choices_to.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9241 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/admin_views')
| -rw-r--r-- | tests/regressiontests/admin_views/fixtures/admin-views-colors.xml | 19 | ||||
| -rw-r--r-- | tests/regressiontests/admin_views/models.py | 17 | ||||
| -rw-r--r-- | tests/regressiontests/admin_views/tests.py | 15 |
3 files changed, 50 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml b/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml new file mode 100644 index 0000000000..e1213561b9 --- /dev/null +++ b/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<django-objects version="1.0"> + <object pk="1" model="admin_views.color"> + <field type="CharField" name="value">Red</field> + <field type="BooleanField" name="warm">1</field> + </object> + <object pk="2" model="admin_views.color"> + <field type="CharField" name="value">Orange</field> + <field type="BooleanField" name="warm">1</field> + </object> + <object pk="3" model="admin_views.color"> + <field type="CharField" name="value">Blue</field> + <field type="BooleanField" name="warm">0</field> + </object> + <object pk="4" model="admin_views.color"> + <field type="CharField" name="value">Green</field> + <field type="BooleanField" name="warm">0</field> + </object> +</django-objects> diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index 52e75699ea..d381edadd0 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -74,7 +74,24 @@ class ModelWithStringPrimaryKey(models.Model): def __unicode__(self): return self.id +class Color(models.Model): + value = models.CharField(max_length=10) + warm = models.BooleanField() + def __unicode__(self): + return self.value + +class Thing(models.Model): + title = models.CharField(max_length=20) + color = models.ForeignKey(Color, limit_choices_to={'warm': True}) + def __unicode__(self): + return self.title + +class ThingAdmin(admin.ModelAdmin): + list_filter = ('color',) + admin.site.register(Article, ArticleAdmin) admin.site.register(CustomArticle, CustomArticleAdmin) admin.site.register(Section, inlines=[ArticleInline]) admin.site.register(ModelWithStringPrimaryKey) +admin.site.register(Color) +admin.site.register(Thing, ThingAdmin) diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index f331c12591..bc9d1d49ae 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -12,7 +12,7 @@ from django.utils.html import escape from models import Article, CustomArticle, Section, ModelWithStringPrimaryKey class AdminViewBasicTest(TestCase): - fixtures = ['admin-views-users.xml'] + fixtures = ['admin-views-users.xml', 'admin-views-colors.xml'] def setUp(self): self.client.login(username='super', password='secret') @@ -147,6 +147,19 @@ class AdminViewBasicTest(TestCase): response.content.index('Middle content') < response.content.index('Newest content'), "Results of sorting on ModelAdmin method are out of order." ) + + def testLimitedFilter(self): + """Ensure admin changelist filters do not contain objects excluded via limit_choices_to.""" + response = self.client.get('/test_admin/admin/admin_views/thing/') + self.failUnlessEqual(response.status_code, 200) + self.failUnless( + '<div id="changelist-filter">' in response.content, + "Expected filter not found in changelist view." + ) + self.failIf( + '<a href="?color__id__exact=3">Blue</a>' in response.content, + "Changelist filter not correctly limited by limit_choices_to." + ) def get_perm(Model, perm): """Return the permission object, for the Model""" |
