summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2018-08-18 16:15:18 -0400
committerTim Graham <timograham@gmail.com>2018-08-20 11:14:20 -0400
commitd311124be59df64278f3149d68e79ce45b8a6c64 (patch)
tree1c47886fa1d9d210723957f12ea541003e2f2a30 /tests
parent0e7a9525baec11d75badc37f8d8b92f17dba60ae (diff)
Fixed #29682 -- Fixed admin change form crash if a view-only model's form has an extra field.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_utils/tests.py16
-rw-r--r--tests/admin_views/admin.py11
-rw-r--r--tests/admin_views/tests.py1
3 files changed, 27 insertions, 1 deletions
diff --git a/tests/admin_utils/tests.py b/tests/admin_utils/tests.py
index d2697ca87e..463ba9556d 100644
--- a/tests/admin_utils/tests.py
+++ b/tests/admin_utils/tests.py
@@ -286,6 +286,22 @@ class UtilsTests(SimpleTestCase):
("not Really the Model", MockModelAdmin.test_from_model)
)
+ def test_label_for_field_form_argument(self):
+ class ArticleForm(forms.ModelForm):
+ extra_form_field = forms.BooleanField()
+
+ class Meta:
+ fields = '__all__'
+ model = Article
+
+ self.assertEqual(
+ label_for_field('extra_form_field', Article, form=ArticleForm()),
+ 'Extra form field'
+ )
+ msg = "Unable to lookup 'nonexistent' on Article or ArticleForm"
+ with self.assertRaisesMessage(AttributeError, msg):
+ label_for_field('nonexistent', Article, form=ArticleForm()),
+
def test_label_for_property(self):
# NOTE: cannot use @property decorator, because of
# AttributeError: 'property' object has no attribute 'short_description'
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index 8565d04a05..04cc6c79e7 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -91,6 +91,14 @@ class ChapterXtra1Admin(admin.ModelAdmin):
)
+class ArticleForm(forms.ModelForm):
+ extra_form_field = forms.BooleanField(required=False)
+
+ class Meta:
+ fields = '__all__'
+ model = Article
+
+
class ArticleAdmin(admin.ModelAdmin):
list_display = (
'content', 'date', callable_year, 'model_year', 'modeladmin_year',
@@ -101,10 +109,11 @@ class ArticleAdmin(admin.ModelAdmin):
list_filter = ('date', 'section')
autocomplete_fields = ('section',)
view_on_site = False
+ form = ArticleForm
fieldsets = (
('Some fields', {
'classes': ('collapse',),
- 'fields': ('title', 'content')
+ 'fields': ('title', 'content', 'extra_form_field'),
}),
('Some other fields', {
'classes': ('wide',),
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 297d625376..df1936aa90 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -1768,6 +1768,7 @@ class AdminViewPermissionsTest(TestCase):
response = self.client.get(article_change_url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['title'], 'View article')
+ self.assertContains(response, '<label>Extra form field:</label>')
self.assertContains(response, '<a href="/test_admin/admin/admin_views/article/" class="closelink">Close</a>')
post = self.client.post(article_change_url, change_dict)
self.assertEqual(post.status_code, 302)