summaryrefslogtreecommitdiff
path: root/tests/admin_inlines/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/admin_inlines/admin.py')
-rw-r--r--tests/admin_inlines/admin.py153
1 files changed, 153 insertions, 0 deletions
diff --git a/tests/admin_inlines/admin.py b/tests/admin_inlines/admin.py
new file mode 100644
index 0000000000..44671d0ac4
--- /dev/null
+++ b/tests/admin_inlines/admin.py
@@ -0,0 +1,153 @@
+from __future__ import absolute_import
+
+from django.contrib import admin
+from django import forms
+
+from .models import *
+
+site = admin.AdminSite(name="admin")
+
+
+class BookInline(admin.TabularInline):
+ model = Author.books.through
+
+
+class AuthorAdmin(admin.ModelAdmin):
+ inlines = [BookInline]
+
+
+class InnerInline(admin.StackedInline):
+ model = Inner
+ can_delete = False
+ readonly_fields = ('readonly',) # For bug #13174 tests.
+
+
+class HolderAdmin(admin.ModelAdmin):
+
+ class Media:
+ js = ('my_awesome_admin_scripts.js',)
+
+
+class ReadOnlyInlineInline(admin.TabularInline):
+ model = ReadOnlyInline
+ readonly_fields = ['name']
+
+
+class InnerInline2(admin.StackedInline):
+ model = Inner2
+
+ class Media:
+ js = ('my_awesome_inline_scripts.js',)
+
+
+class InnerInline3(admin.StackedInline):
+ model = Inner3
+
+ class Media:
+ js = ('my_awesome_inline_scripts.js',)
+
+
+class TitleForm(forms.ModelForm):
+
+ def clean(self):
+ cleaned_data = self.cleaned_data
+ title1 = cleaned_data.get("title1")
+ title2 = cleaned_data.get("title2")
+ if title1 != title2:
+ raise forms.ValidationError("The two titles must be the same")
+ return cleaned_data
+
+
+class TitleInline(admin.TabularInline):
+ model = Title
+ form = TitleForm
+ extra = 1
+
+
+class Inner4StackedInline(admin.StackedInline):
+ model = Inner4Stacked
+
+
+class Inner4TabularInline(admin.TabularInline):
+ model = Inner4Tabular
+
+
+class Holder4Admin(admin.ModelAdmin):
+ inlines = [Inner4StackedInline, Inner4TabularInline]
+
+
+class InlineWeakness(admin.TabularInline):
+ model = ShoppingWeakness
+ extra = 1
+
+
+class QuestionInline(admin.TabularInline):
+ model = Question
+ readonly_fields=['call_me']
+
+ def call_me(self, obj):
+ return 'Callable in QuestionInline'
+
+
+class PollAdmin(admin.ModelAdmin):
+ inlines = [QuestionInline]
+
+ def call_me(self, obj):
+ return 'Callable in PollAdmin'
+
+
+class ChapterInline(admin.TabularInline):
+ model = Chapter
+ readonly_fields=['call_me']
+
+ def call_me(self, obj):
+ return 'Callable in ChapterInline'
+
+
+class NovelAdmin(admin.ModelAdmin):
+ inlines = [ChapterInline]
+
+
+class ConsigliereInline(admin.TabularInline):
+ model = Consigliere
+
+
+class SottoCapoInline(admin.TabularInline):
+ model = SottoCapo
+
+
+class ProfileInline(admin.TabularInline):
+ model = Profile
+ extra = 1
+
+
+# admin for #18433
+class ChildModel1Inline(admin.TabularInline):
+ model = ChildModel1
+
+
+class ChildModel2Inline(admin.StackedInline):
+ model = ChildModel2
+
+# admin for #19524
+class SightingInline(admin.TabularInline):
+ model = Sighting
+
+site.register(TitleCollection, inlines=[TitleInline])
+# Test bug #12561 and #12778
+# only ModelAdmin media
+site.register(Holder, HolderAdmin, inlines=[InnerInline])
+# ModelAdmin and Inline media
+site.register(Holder2, HolderAdmin, inlines=[InnerInline2])
+# only Inline media
+site.register(Holder3, inlines=[InnerInline3])
+
+site.register(Poll, PollAdmin)
+site.register(Novel, NovelAdmin)
+site.register(Fashionista, inlines=[InlineWeakness])
+site.register(Holder4, Holder4Admin)
+site.register(Author, AuthorAdmin)
+site.register(CapoFamiglia, inlines=[ConsigliereInline, SottoCapoInline, ReadOnlyInlineInline])
+site.register(ProfileCollection, inlines=[ProfileInline])
+site.register(ParentModelWithCustomPk, inlines=[ChildModel1Inline, ChildModel2Inline])
+site.register(ExtraTerrestrial, inlines=[SightingInline])