Author: kmtracey Date: 2008-10-21 14:06:44 -0500 (Tue, 21 Oct 2008) New Revision: 9242
Added: django/branches/releases/1.0.X/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml Modified: django/branches/releases/1.0.X/ django/branches/releases/1.0.X/django/contrib/admin/filterspecs.py django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py Log: [1.0.X] Fixed #3096 -- Make admin list_filters respect limit_choices_to. Backport of [9241] from trunk. Property changes on: django/branches/releases/1.0.X ___________________________________________________________________ Name: svnmerge-integrated - /django/trunk:1-9097,9099-9102,9104-9109,9111,9113-9144,9146-9151,9153-9156,9158-9159,9161-9187,9189-9239 + /django/trunk:1-9097,9099-9102,9104-9109,9111,9113-9144,9146-9151,9153-9156,9158-9159,9161-9187,9189-9241 Modified: django/branches/releases/1.0.X/django/contrib/admin/filterspecs.py =================================================================== --- django/branches/releases/1.0.X/django/contrib/admin/filterspecs.py 2008-10-21 19:03:21 UTC (rev 9241) +++ django/branches/releases/1.0.X/django/contrib/admin/filterspecs.py 2008-10-21 19:06:44 UTC (rev 9242) @@ -60,7 +60,7 @@ self.lookup_title = f.verbose_name self.lookup_kwarg = '%s__%s__exact' % (f.name, f.rel.to._meta.pk.name) self.lookup_val = request.GET.get(self.lookup_kwarg, None) - self.lookup_choices = f.rel.to._default_manager.all() + self.lookup_choices = f.get_choices(include_blank=False) def has_output(self): return len(self.lookup_choices) > 1 @@ -72,8 +72,7 @@ yield {'selected': self.lookup_val is None, 'query_string': cl.get_query_string({}, [self.lookup_kwarg]), 'display': _('All')} - for val in self.lookup_choices: - pk_val = getattr(val, self.field.rel.to._meta.pk.attname) + for pk_val, val in self.lookup_choices: yield {'selected': self.lookup_val == smart_unicode(pk_val), 'query_string': cl.get_query_string({self.lookup_kwarg: pk_val}), 'display': val} Copied: django/branches/releases/1.0.X/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml (from rev 9241, django/trunk/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml) =================================================================== --- django/branches/releases/1.0.X/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml (rev 0) +++ django/branches/releases/1.0.X/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml 2008-10-21 19:06:44 UTC (rev 9242) @@ -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> Modified: django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py =================================================================== --- django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py 2008-10-21 19:03:21 UTC (rev 9241) +++ django/branches/releases/1.0.X/tests/regressiontests/admin_views/models.py 2008-10-21 19:06:44 UTC (rev 9242) @@ -74,7 +74,24 @@ 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) Modified: django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py =================================================================== --- django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py 2008-10-21 19:03:21 UTC (rev 9241) +++ django/branches/releases/1.0.X/tests/regressiontests/admin_views/tests.py 2008-10-21 19:06:44 UTC (rev 9242) @@ -12,7 +12,7 @@ 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 @@ 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""" --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-updates?hl=en -~----------~----~----~----~------~----~------~--~---