summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoseph Kocherhans <joseph@jkocherhans.com>2010-01-21 01:40:21 +0000
committerJoseph Kocherhans <joseph@jkocherhans.com>2010-01-21 01:40:21 +0000
commit856a39e841080abc34e8ae3bb2b20f780c33762d (patch)
tree7088b4de5deaea14d201a1f43e3eca6cacfb8a26 /tests
parent63c5e6621aac1cdf4d02d0b99266251cd1643c26 (diff)
Fixed #12577. Reverted some changes from [12098] since [12206] made them unneccessary. Also, added a test for using generic inlines with unique_together. Thanks for the report, Raffaele Salmaso.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12268 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/generic_inline_admin/models.py21
-rw-r--r--tests/regressiontests/generic_inline_admin/tests.py22
2 files changed, 43 insertions, 0 deletions
diff --git a/tests/regressiontests/generic_inline_admin/models.py b/tests/regressiontests/generic_inline_admin/models.py
index 9f1bbadd3e..2925b7a801 100644
--- a/tests/regressiontests/generic_inline_admin/models.py
+++ b/tests/regressiontests/generic_inline_admin/models.py
@@ -72,3 +72,24 @@ class MediaExcludeInline(generic.GenericTabularInline):
admin.site.register(EpisodeExclude, inlines=[MediaExcludeInline])
+#
+# Generic inline with unique_together
+#
+
+class PhoneNumber(models.Model):
+ content_type = models.ForeignKey(ContentType)
+ object_id = models.PositiveIntegerField()
+ content_object = generic.GenericForeignKey('content_type', 'object_id')
+ phone_number = models.CharField(max_length=30)
+
+ class Meta:
+ unique_together = (('content_type', 'object_id', 'phone_number',),)
+
+class Contact(models.Model):
+ name = models.CharField(max_length=50)
+ phone_numbers = generic.GenericRelation(PhoneNumber)
+
+class PhoneNumberInline(generic.GenericTabularInline):
+ model = PhoneNumber
+
+admin.site.register(Contact, inlines=[PhoneNumberInline])
diff --git a/tests/regressiontests/generic_inline_admin/tests.py b/tests/regressiontests/generic_inline_admin/tests.py
index 0cf1f4ea69..21704cd8de 100644
--- a/tests/regressiontests/generic_inline_admin/tests.py
+++ b/tests/regressiontests/generic_inline_admin/tests.py
@@ -176,3 +176,25 @@ class GenericInlineAdminParametersTest(TestCase):
response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episodeexclude/%s/' % e.pk)
formset = response.context['inline_admin_formsets'][0].formset
self.failIf('url' in formset.forms[0], 'The formset has excluded "url" field.')
+
+class GenericInlineAdminWithUniqueTogetherTest(TestCase):
+ fixtures = ['users.xml']
+
+ def setUp(self):
+ self.client.login(username='super', password='secret')
+
+ def tearDown(self):
+ self.client.logout()
+
+ def testAdd(self):
+ post_data = {
+ "name": u"John Doe",
+ # inline data
+ "generic_inline_admin-phonenumber-content_type-object_id-TOTAL_FORMS": u"1",
+ "generic_inline_admin-phonenumber-content_type-object_id-INITIAL_FORMS": u"0",
+ "generic_inline_admin-phonenumber-content_type-object_id-0-id": "",
+ "generic_inline_admin-phonenumber-content_type-object_id-0-phone_number": "555-555-5555",
+ }
+ response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/contact/add/')
+ response = self.client.post('/generic_inline_admin/admin/generic_inline_admin/contact/add/', post_data)
+ self.failUnlessEqual(response.status_code, 302) # redirect somewhere