diff options
Diffstat (limited to 'tests/regressiontests/generic_inline_admin')
| -rw-r--r-- | tests/regressiontests/generic_inline_admin/models.py | 21 | ||||
| -rw-r--r-- | tests/regressiontests/generic_inline_admin/tests.py | 22 |
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 |
