summaryrefslogtreecommitdiff
path: root/tests/admin_inlines
diff options
context:
space:
mode:
authorPaulo <commonzenpython@gmail.com>2017-06-09 20:54:10 -0400
committerTim Graham <timograham@gmail.com>2017-06-12 21:12:54 -0400
commit9dc83c356d363c090f3351c908cad6f823aeb7bf (patch)
tree1cad39d01fa806159523ac259d5b61aed162ef1b /tests/admin_inlines
parentc68f5d83c0a4ea4ccf87c7d1d5dd1e9f7b2907a3 (diff)
downloaddjango-9dc83c356d363c090f3351c908cad6f823aeb7bf.tar.gz
Fixed #27967 -- Fixed KeyError in admin's inline form with inherited non-editable pk.
Thanks Robin Anupol for the initial report and workaround.
Diffstat (limited to 'tests/admin_inlines')
-rw-r--r--tests/admin_inlines/admin.py14
-rw-r--r--tests/admin_inlines/models.py4
-rw-r--r--tests/admin_inlines/tests.py17
3 files changed, 30 insertions, 5 deletions
diff --git a/tests/admin_inlines/admin.py b/tests/admin_inlines/admin.py
index f9e50d1b91..4a34d65d83 100644
--- a/tests/admin_inlines/admin.py
+++ b/tests/admin_inlines/admin.py
@@ -5,10 +5,10 @@ from .models import (
Author, BinaryTree, CapoFamiglia, Chapter, ChildModel1, ChildModel2,
Consigliere, EditablePKBook, ExtraTerrestrial, Fashionista, Holder,
Holder2, Holder3, Holder4, Inner, Inner2, Inner3, Inner4Stacked,
- Inner4Tabular, NonAutoPKBook, Novel, ParentModelWithCustomPk, Poll,
- Profile, ProfileCollection, Question, ReadOnlyInline, ShoppingWeakness,
- Sighting, SomeChildModel, SomeParentModel, SottoCapo, Title,
- TitleCollection,
+ Inner4Tabular, NonAutoPKBook, NonAutoPKBookChild, Novel,
+ ParentModelWithCustomPk, Poll, Profile, ProfileCollection, Question,
+ ReadOnlyInline, ShoppingWeakness, Sighting, SomeChildModel,
+ SomeParentModel, SottoCapo, Title, TitleCollection,
)
site = admin.AdminSite(name="admin")
@@ -23,6 +23,11 @@ class NonAutoPKBookTabularInline(admin.TabularInline):
classes = ('collapse',)
+class NonAutoPKBookChildTabularInline(admin.TabularInline):
+ model = NonAutoPKBookChild
+ classes = ('collapse',)
+
+
class NonAutoPKBookStackedInline(admin.StackedInline):
model = NonAutoPKBook
classes = ('collapse',)
@@ -40,6 +45,7 @@ class AuthorAdmin(admin.ModelAdmin):
inlines = [
BookInline, NonAutoPKBookTabularInline, NonAutoPKBookStackedInline,
EditablePKBookTabularInline, EditablePKBookStackedInline,
+ NonAutoPKBookChildTabularInline,
]
diff --git a/tests/admin_inlines/models.py b/tests/admin_inlines/models.py
index 2c2601961e..e23ea6d8f6 100644
--- a/tests/admin_inlines/models.py
+++ b/tests/admin_inlines/models.py
@@ -56,6 +56,10 @@ class NonAutoPKBook(models.Model):
super().save(*args, **kwargs)
+class NonAutoPKBookChild(NonAutoPKBook):
+ pass
+
+
class EditablePKBook(models.Model):
manual_pk = models.IntegerField(primary_key=True)
author = models.ForeignKey(Author, models.CASCADE)
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index 20fa9c0241..13b179fc15 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -355,6 +355,21 @@ class TestInline(TestDataMixin, TestCase):
html=True
)
+ def test_inline_nonauto_noneditable_inherited_pk(self):
+ response = self.client.get(reverse('admin:admin_inlines_author_add'))
+ self.assertContains(
+ response,
+ '<input id="id_nonautopkbookchild_set-0-nonautopkbook_ptr" '
+ 'name="nonautopkbookchild_set-0-nonautopkbook_ptr" type="hidden" />',
+ html=True
+ )
+ self.assertContains(
+ response,
+ '<input id="id_nonautopkbookchild_set-2-nonautopkbook_ptr" '
+ 'name="nonautopkbookchild_set-2-nonautopkbook_ptr" type="hidden" />',
+ html=True
+ )
+
def test_inline_editable_pk(self):
response = self.client.get(reverse('admin:admin_inlines_author_add'))
self.assertContains(
@@ -886,7 +901,7 @@ class SeleniumTests(AdminSeleniumTestCase):
# One field is in a stacked inline, other in a tabular one.
test_fields = ['#id_nonautopkbook_set-0-title', '#id_nonautopkbook_set-2-0-title']
show_links = self.selenium.find_elements_by_link_text('SHOW')
- self.assertEqual(len(show_links), 2)
+ self.assertEqual(len(show_links), 3)
for show_index, field_name in enumerate(test_fields, 0):
self.wait_until_invisible(field_name)
show_links[show_index].click()