summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLuke Plant <L.Plant.98@cantab.net>2011-01-28 14:59:54 +0000
committerLuke Plant <L.Plant.98@cantab.net>2011-01-28 14:59:54 +0000
commit276ecc72097b45b5115a7d6657332d5a37ca5435 (patch)
tree1f24f2adde473d831118e5c888b947e4140588ad /tests
parent8ab768f93501970ca2def2fda6a0a3893aabfb7d (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.py23
-rw-r--r--tests/regressiontests/admin_views/tests.py11
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']