summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2013-06-01 18:16:57 -0400
committerTim Graham <timograham@gmail.com>2013-06-01 18:20:54 -0400
commit61524b09cfa3b51643d0e79cbf0e1e08ede357ae (patch)
tree20dcdebd8369c70d0d5a94d1b62dd06101176e08 /tests
parent07a73a2714a504ae487112c1679977fccc19b159 (diff)
Fixed #18388 - Added InlineModelAdmin.get_max_num hook.
Thanks d.willy.c.c@ for the suggestion and Melevir and Areski Belaid for work on the patch.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_inlines/admin.py9
-rw-r--r--tests/admin_inlines/tests.py6
2 files changed, 13 insertions, 2 deletions
diff --git a/tests/admin_inlines/admin.py b/tests/admin_inlines/admin.py
index 2bc9dc5234..2f88248ca4 100644
--- a/tests/admin_inlines/admin.py
+++ b/tests/admin_inlines/admin.py
@@ -129,7 +129,7 @@ class ChildModel1Inline(admin.TabularInline):
class ChildModel2Inline(admin.StackedInline):
model = ChildModel2
-# admin for #19425
+# admin for #19425 and #18388
class BinaryTreeAdmin(admin.TabularInline):
model = BinaryTree
@@ -137,9 +137,14 @@ class BinaryTreeAdmin(admin.TabularInline):
extra = 2
if obj:
return extra - obj.binarytree_set.count()
-
return extra
+ def get_max_num(self, request, obj=None, **kwargs):
+ max_num = 3
+ if obj:
+ return max_num - obj.binarytree_set.count()
+ return max_num
+
# admin for #19524
class SightingInline(admin.TabularInline):
model = Sighting
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index 23c7f95bfe..78ccf074d5 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -197,12 +197,18 @@ class TestInline(TestCase):
bt_head = BinaryTree.objects.create(name="Tree Head")
bt_child = BinaryTree.objects.create(name="First Child", parent=bt_head)
+ # The maximum number of forms should respect 'get_max_num' on the
+ # ModelAdmin
+ max_forms_input = '<input id="id_binarytree_set-MAX_NUM_FORMS" name="binarytree_set-MAX_NUM_FORMS" type="hidden" value="%d" />'
# The total number of forms will remain the same in either case
total_forms_hidden = '<input id="id_binarytree_set-TOTAL_FORMS" name="binarytree_set-TOTAL_FORMS" type="hidden" value="2" />'
+
response = self.client.get('/admin/admin_inlines/binarytree/add/')
+ self.assertContains(response, max_forms_input % 3)
self.assertContains(response, total_forms_hidden)
response = self.client.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id)
+ self.assertContains(response, max_forms_input % 2)
self.assertContains(response, total_forms_hidden)