diff options
| author | Luke Plant <L.Plant.98@cantab.net> | 2011-01-28 14:59:54 +0000 |
|---|---|---|
| committer | Luke Plant <L.Plant.98@cantab.net> | 2011-01-28 14:59:54 +0000 |
| commit | 276ecc72097b45b5115a7d6657332d5a37ca5435 (patch) | |
| tree | 1f24f2adde473d831118e5c888b947e4140588ad /tests | |
| parent | 8ab768f93501970ca2def2fda6a0a3893aabfb7d (diff) | |
[1.2.X] Fixed #15103 - SuspiciousOperation with limit_choices_to and raw_id_fields
Thanks to natrius for the report.
This patch also fixes some unicode bugs in affected code.
Backport of [15347] from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15349 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/admin_views/models.py | 23 | ||||
| -rw-r--r-- | tests/regressiontests/admin_views/tests.py | 11 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index 168971b9ea..02d73ca2fd 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -151,6 +151,26 @@ class Thing(models.Model): class ThingAdmin(admin.ModelAdmin): list_filter = ('color',) +class Actor(models.Model): + name = models.CharField(max_length=50) + age = models.IntegerField() + def __unicode__(self): + return self.name + +class Inquisition(models.Model): + expected = models.BooleanField() + leader = models.ForeignKey(Actor) + def __unicode__(self): + return self.expected + +class Sketch(models.Model): + title = models.CharField(max_length=100) + inquisition = models.ForeignKey(Inquisition, limit_choices_to={'leader__name': 'Palin', + 'leader__age': 27, + }) + def __unicode__(self): + return self.title + class Fabric(models.Model): NG_CHOICES = ( ('Textured', ( @@ -605,6 +625,9 @@ admin.site.register(Section, save_as=True, inlines=[ArticleInline]) admin.site.register(ModelWithStringPrimaryKey) admin.site.register(Color) admin.site.register(Thing, ThingAdmin) +admin.site.register(Actor) +admin.site.register(Inquisition) +admin.site.register(Sketch) admin.site.register(Person, PersonAdmin) admin.site.register(Persona, PersonaAdmin) admin.site.register(Subscriber, SubscriberAdmin) diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 8bec9097f1..22689ad954 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -337,6 +337,17 @@ class AdminViewBasicTest(TestCase): response = self.client.get("/test_admin/admin/admin_views/workhour/?employee__person_ptr__exact=%d" % e1.pk) self.assertEqual(response.status_code, 200) + def test_allowed_filtering_15103(self): + """ + Regressions test for ticket 15103 - filtering on fields defined in a + ForeignKey 'limit_choices_to' should be allowed, otherwise raw_id_fields + can break. + """ + try: + self.client.get("/test_admin/admin/admin_views/inquisition/?leader__name=Palin&leader__age=27") + except SuspiciousOperation: + self.fail("Filters should be allowed if they are defined on a ForeignKey pointing to this model") + class SaveAsTests(TestCase): fixtures = ['admin-views-users.xml','admin-views-person.xml'] |
