summaryrefslogtreecommitdiff
path: root/tests/admin_inlines
diff options
context:
space:
mode:
authorPaulo Alvarado <commonzenpython@gmail.com>2018-05-18 19:50:58 -0400
committerTim Graham <timograham@gmail.com>2018-05-18 19:50:58 -0400
commitffb72a95bcd6fc5cce7915f3b3732a05837f29a2 (patch)
tree861b9ee2aaaf19339afe93ff8c9488de11cd405f /tests/admin_inlines
parenta7bc1aea03508f544c9dfac0f34b01996653cef4 (diff)
downloaddjango-ffb72a95bcd6fc5cce7915f3b3732a05837f29a2.tar.gz
Fixed #29414 -- Restored form inputs on admin inlines when the user doesn't have the change permission.
Regression in 825f0beda804e48e9197fcf3b0d909f9f548aa47.
Diffstat (limited to 'tests/admin_inlines')
-rw-r--r--tests/admin_inlines/admin.py18
-rw-r--r--tests/admin_inlines/models.py6
-rw-r--r--tests/admin_inlines/tests.py10
3 files changed, 31 insertions, 3 deletions
diff --git a/tests/admin_inlines/admin.py b/tests/admin_inlines/admin.py
index a56704865d..7ac13ed3a4 100644
--- a/tests/admin_inlines/admin.py
+++ b/tests/admin_inlines/admin.py
@@ -7,9 +7,9 @@ from .models import (
Consigliere, EditablePKBook, ExtraTerrestrial, Fashionista, Holder,
Holder2, Holder3, Holder4, Inner, Inner2, Inner3, Inner4Stacked,
Inner4Tabular, NonAutoPKBook, NonAutoPKBookChild, Novel,
- ParentModelWithCustomPk, Poll, Profile, ProfileCollection, Question,
- ReadOnlyInline, ShoppingWeakness, Sighting, SomeChildModel,
- SomeParentModel, SottoCapo, Title, TitleCollection,
+ NovelReadonlyChapter, ParentModelWithCustomPk, Poll, Profile,
+ ProfileCollection, Question, ReadOnlyInline, ShoppingWeakness, Sighting,
+ SomeChildModel, SomeParentModel, SottoCapo, Title, TitleCollection,
)
site = admin.AdminSite(name="admin")
@@ -153,6 +153,17 @@ class NovelAdmin(admin.ModelAdmin):
inlines = [ChapterInline]
+class ReadOnlyChapterInline(admin.TabularInline):
+ model = Chapter
+
+ def has_change_permission(self, request, obj=None):
+ return False
+
+
+class NovelReadonlyChapterAdmin(admin.ModelAdmin):
+ inlines = [ReadOnlyChapterInline]
+
+
class ConsigliereInline(admin.TabularInline):
model = Consigliere
@@ -231,6 +242,7 @@ site.register(Holder3, inlines=[InnerInline3])
site.register(Poll, PollAdmin)
site.register(Novel, NovelAdmin)
+site.register(NovelReadonlyChapter, NovelReadonlyChapterAdmin)
site.register(Fashionista, inlines=[InlineWeakness])
site.register(Holder4, Holder4Admin)
site.register(Author, AuthorAdmin)
diff --git a/tests/admin_inlines/models.py b/tests/admin_inlines/models.py
index 94134660e5..cb1ec39ae5 100644
--- a/tests/admin_inlines/models.py
+++ b/tests/admin_inlines/models.py
@@ -159,6 +159,12 @@ class Novel(models.Model):
name = models.CharField(max_length=40)
+class NovelReadonlyChapter(Novel):
+
+ class Meta:
+ proxy = True
+
+
class Chapter(models.Model):
name = models.CharField(max_length=40)
novel = models.ForeignKey(Novel, models.CASCADE)
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index 1bf9b34e77..4ce744f4ef 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -447,6 +447,16 @@ class TestInline(TestDataMixin, TestCase):
self.assertTrue(response.context['inline_admin_formset'].opts.has_registered_model)
self.assertNotContains(response, INLINE_CHANGELINK_HTML)
+ def test_noneditable_inline_has_field_inputs(self):
+ """Inlines without change permission shows field inputs on add form."""
+ response = self.client.get(reverse('admin:admin_inlines_novelreadonlychapter_add'))
+ self.assertContains(
+ response,
+ '<input type="text" name="chapter_set-0-name" '
+ 'class="vTextField" maxlength="40" id="id_chapter_set-0-name">',
+ html=True
+ )
+
@override_settings(ROOT_URLCONF='admin_inlines.urls')
class TestInlineMedia(TestDataMixin, TestCase):