summaryrefslogtreecommitdiff
path: root/tests/modeladmin/tests.py
diff options
context:
space:
mode:
authorMaximZemskov <m.zemskov1@gmail.com>2019-01-11 13:13:31 +0300
committerTim Graham <timograham@gmail.com>2019-01-11 18:02:43 -0500
commit3c01fe30f3dd4dc1c8bb4fec816bd277d1ae5fa6 (patch)
tree59dca178d22d600ff58c36130a0acb6fde250650 /tests/modeladmin/tests.py
parent8f4eee177785cba27d6181840206ff2f164f2960 (diff)
Fixed #30097 -- Made 'obj' arg of InlineModelAdmin.has_add_permission() optional.
Restored backwards compatibility after refs #27991. Regression in be6ca89396c031619947921c81b8795d816e3285.
Diffstat (limited to 'tests/modeladmin/tests.py')
-rw-r--r--tests/modeladmin/tests.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py
index 6934bf2b3c..0d78dd9c21 100644
--- a/tests/modeladmin/tests.py
+++ b/tests/modeladmin/tests.py
@@ -734,6 +734,10 @@ class ModelAdminPermissionTests(SimpleTestCase):
def has_perm(self, perm):
return perm == 'modeladmin.add_band'
+ class MockAddUserWithInline(MockUser):
+ def has_perm(self, perm):
+ return perm == 'modeladmin.add_concert'
+
class MockChangeUser(MockUser):
def has_perm(self, perm):
return perm == 'modeladmin.change_band'
@@ -793,6 +797,26 @@ class ModelAdminPermissionTests(SimpleTestCase):
self.assertEqual(len(inline_instances), 1)
self.assertIsInstance(inline_instances[0], ConcertInline)
+ def test_inline_has_add_permission_without_obj(self):
+ # This test will be removed in Django 3.1 when `obj` becomes a required
+ # argument of has_add_permission() (#27991).
+ class ConcertInline(TabularInline):
+ model = Concert
+
+ def has_add_permission(self, request):
+ return super().has_add_permission(request)
+
+ class BandAdmin(ModelAdmin):
+ inlines = [ConcertInline]
+
+ ma = BandAdmin(Band, AdminSite())
+ request = MockRequest()
+ request.user = self.MockAddUserWithInline()
+ band = Band(name='The Doors', bio='', sign_date=date(1965, 1, 1))
+ inline_instances = ma.get_inline_instances(request, band)
+ self.assertEqual(len(inline_instances), 1)
+ self.assertIsInstance(inline_instances[0], ConcertInline)
+
def test_has_change_permission(self):
"""
has_change_permission returns True for users who can edit objects and