summaryrefslogtreecommitdiff
path: root/tests/regressiontests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2014-08-21 11:55:23 -0400
committerSimon Charette <charette.s@gmail.com>2014-08-27 22:05:30 -0400
commit4c96bd8fb31d2325112ba92ed3cbdc3ff1bbfabc (patch)
treea8a1bd14f97016c55542a850630a030e650bd9a9 /tests/regressiontests
parent5d647e5f1755d0fa571d14e3eb60b1f886d4d059 (diff)
Fixed #23329 -- Allowed inherited and m2m fields to be referenced in the admin.
Thanks to Trac alias Markush2010 and ross for the detailed reports. Backport of 3cbb759 from master
Diffstat (limited to 'tests/regressiontests')
-rw-r--r--tests/regressiontests/admin_views/admin.py5
-rw-r--r--tests/regressiontests/admin_views/models.py18
-rw-r--r--tests/regressiontests/admin_views/tests.py9
3 files changed, 31 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_views/admin.py b/tests/regressiontests/admin_views/admin.py
index 435883e637..73a3287e40 100644
--- a/tests/regressiontests/admin_views/admin.py
+++ b/tests/regressiontests/admin_views/admin.py
@@ -28,7 +28,7 @@ from .models import (Article, Chapter, Account, Media, Child, Parent, Picture,
AdminOrderedField, AdminOrderedModelMethod, AdminOrderedAdminMethod,
AdminOrderedCallable, Report, Color2, UnorderedObject, MainPrepopulated,
RelatedPrepopulated, UndeletableObject, UserMessenger, Simple, Choice,
- ShortMessage, Telegram)
+ ShortMessage, Telegram, ReferencedByParent, ChildOfReferer, M2MReference)
def callable_year(dt_value):
@@ -703,6 +703,9 @@ site.register(Report, ReportAdmin)
site.register(MainPrepopulated, MainPrepopulatedAdmin)
site.register(UnorderedObject, UnorderedObjectAdmin)
site.register(UndeletableObject, UndeletableObjectAdmin)
+site.register(ReferencedByParent)
+site.register(ChildOfReferer)
+site.register(M2MReference)
# We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2.
# That way we cover all four cases:
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py
index 5e25f0d542..b2684c0ef0 100644
--- a/tests/regressiontests/admin_views/models.py
+++ b/tests/regressiontests/admin_views/models.py
@@ -678,3 +678,21 @@ class Simple(models.Model):
class Choice(models.Model):
choice = models.IntegerField(blank=True, null=True,
choices=((1, 'Yes'), (0, 'No'), (None, 'No opinion')))
+
+
+# Models for #23329
+class ReferencedByParent(models.Model):
+ pass
+
+
+class ParentWithFK(models.Model):
+ fk = models.ForeignKey(ReferencedByParent)
+
+
+class ChildOfReferer(ParentWithFK):
+ pass
+
+
+class M2MReference(models.Model):
+ ref = models.ManyToManyField('self')
+
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index e7efca21d8..230fc4abaa 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -571,6 +571,15 @@ class AdminViewBasicTest(TestCase):
response = self.client.get("/test_admin/admin/admin_views/section/", {TO_FIELD_VAR: 'id'})
self.assertEqual(response.status_code, 200)
+ # Specifying a field referenced by another model though a m2m should be allowed.
+ response = self.client.get("/test_admin/admin/admin_views/m2mreference/", {TO_FIELD_VAR: 'id'})
+ self.assertEqual(response.status_code, 200)
+
+ # Specifying a field that is not refered by any other model directly registered
+ # to this admin site but registered through inheritance should be allowed.
+ response = self.client.get("/test_admin/admin/admin_views/referencedbyparent/", {TO_FIELD_VAR: 'id'})
+ self.assertEqual(response.status_code, 200)
+
def test_allowed_filtering_15103(self):
"""
Regressions test for ticket 15103 - filtering on fields defined in a