diff options
Diffstat (limited to 'tests/regressiontests/generic_inline_admin')
4 files changed, 59 insertions, 38 deletions
diff --git a/tests/regressiontests/generic_inline_admin/admin.py b/tests/regressiontests/generic_inline_admin/admin.py new file mode 100644 index 0000000000..87224edab7 --- /dev/null +++ b/tests/regressiontests/generic_inline_admin/admin.py @@ -0,0 +1,44 @@ +from django.contrib import admin +from django.contrib.contenttypes import generic + +from models import (Media, PhoneNumber, Episode, EpisodeExtra, Contact, + Category, EpisodePermanent, EpisodeMaxNum) + +site = admin.AdminSite(name="admin") + +class MediaInline(generic.GenericTabularInline): + model = Media + + +class EpisodeAdmin(admin.ModelAdmin): + inlines = [ + MediaInline, + ] + + +class MediaExtraInline(generic.GenericTabularInline): + model = Media + extra = 0 + + +class MediaMaxNumInline(generic.GenericTabularInline): + model = Media + extra = 5 + max_num = 2 + + +class PhoneNumberInline(generic.GenericTabularInline): + model = PhoneNumber + + +class MediaPermanentInline(generic.GenericTabularInline): + model = Media + can_delete = False + + +site.register(Episode, EpisodeAdmin) +site.register(EpisodeExtra, inlines=[MediaExtraInline]) +site.register(EpisodeMaxNum, inlines=[MediaMaxNumInline]) +site.register(Contact, inlines=[PhoneNumberInline]) +site.register(Category) +site.register(EpisodePermanent, inlines=[MediaPermanentInline]) diff --git a/tests/regressiontests/generic_inline_admin/models.py b/tests/regressiontests/generic_inline_admin/models.py index 32ecd3b889..e78f110416 100644 --- a/tests/regressiontests/generic_inline_admin/models.py +++ b/tests/regressiontests/generic_inline_admin/models.py @@ -1,13 +1,14 @@ from django.db import models -from django.contrib import admin from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType + class Episode(models.Model): name = models.CharField(max_length=100) length = models.CharField(max_length=100, blank=True) author = models.CharField(max_length=100, blank=True) + class Media(models.Model): """ Media that can associated to any object. @@ -22,15 +23,6 @@ class Media(models.Model): def __unicode__(self): return self.url -class MediaInline(generic.GenericTabularInline): - model = Media - -class EpisodeAdmin(admin.ModelAdmin): - inlines = [ - MediaInline, - ] -admin.site.register(Episode, EpisodeAdmin) - # # These models let us test the different GenericInline settings at # different urls in the admin site. @@ -43,34 +35,21 @@ admin.site.register(Episode, EpisodeAdmin) class EpisodeExtra(Episode): pass -class MediaExtraInline(generic.GenericTabularInline): - model = Media - extra = 0 - -admin.site.register(EpisodeExtra, inlines=[MediaExtraInline]) # # Generic inline with extra and max_num # - class EpisodeMaxNum(Episode): pass -class MediaMaxNumInline(generic.GenericTabularInline): - model = Media - extra = 5 - max_num = 2 - -admin.site.register(EpisodeMaxNum, inlines=[MediaMaxNumInline]) - # # Generic inline with unique_together # - class Category(models.Model): name = models.CharField(max_length=50) + class PhoneNumber(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() @@ -81,25 +60,15 @@ class PhoneNumber(models.Model): 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]) -admin.site.register(Category) - # # Generic inline with can_delete=False # - class EpisodePermanent(Episode): pass -class MediaPermanentInline(generic.GenericTabularInline): - model = Media - can_delete = False -admin.site.register(EpisodePermanent, inlines=[MediaPermanentInline]) diff --git a/tests/regressiontests/generic_inline_admin/tests.py b/tests/regressiontests/generic_inline_admin/tests.py index da59922fe5..858d6a5f3b 100644 --- a/tests/regressiontests/generic_inline_admin/tests.py +++ b/tests/regressiontests/generic_inline_admin/tests.py @@ -10,10 +10,12 @@ from django.test import TestCase # local test models from models import (Episode, EpisodeExtra, EpisodeMaxNum, Media, - MediaInline, EpisodePermanent, MediaPermanentInline, Category) + EpisodePermanent, Category) +from admin import MediaInline, MediaPermanentInline class GenericAdminViewTest(TestCase): + urls = "regressiontests.generic_inline_admin.urls" fixtures = ['users.xml'] def setUp(self): @@ -125,6 +127,7 @@ class GenericAdminViewTest(TestCase): self.assertTrue(formset.get_queryset().ordered) class GenericInlineAdminParametersTest(TestCase): + urls = "regressiontests.generic_inline_admin.urls" fixtures = ['users.xml'] def setUp(self): @@ -177,6 +180,7 @@ class GenericInlineAdminParametersTest(TestCase): class GenericInlineAdminWithUniqueTogetherTest(TestCase): + urls = "regressiontests.generic_inline_admin.urls" fixtures = ['users.xml'] def setUp(self): @@ -203,6 +207,8 @@ class GenericInlineAdminWithUniqueTogetherTest(TestCase): self.assertEqual(response.status_code, 302) # redirect somewhere class NoInlineDeletionTest(TestCase): + urls = "regressiontests.generic_inline_admin.urls" + def test_no_deletion(self): fake_site = object() inline = MediaPermanentInline(EpisodePermanent, fake_site) @@ -211,6 +217,7 @@ class NoInlineDeletionTest(TestCase): self.assertFalse(formset.can_delete) class GenericInlineModelAdminTest(TestCase): + urls = "regressiontests.generic_inline_admin.urls" def setUp(self): self.site = AdminSite() diff --git a/tests/regressiontests/generic_inline_admin/urls.py b/tests/regressiontests/generic_inline_admin/urls.py index f41587280d..03431d3226 100644 --- a/tests/regressiontests/generic_inline_admin/urls.py +++ b/tests/regressiontests/generic_inline_admin/urls.py @@ -1,6 +1,7 @@ from django.conf.urls import patterns, include -from django.contrib import admin + +import admin urlpatterns = patterns('', - (r'^admin/', include(admin.site.urls)), + (r'^generic_inline_admin/admin/', include(admin.site.urls)), ) |
