diff options
| author | MaximZemskov <m.zemskov1@gmail.com> | 2019-01-11 13:13:31 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2019-01-11 18:02:43 -0500 |
| commit | 3c01fe30f3dd4dc1c8bb4fec816bd277d1ae5fa6 (patch) | |
| tree | 59dca178d22d600ff58c36130a0acb6fde250650 /tests/modeladmin/tests.py | |
| parent | 8f4eee177785cba27d6181840206ff2f164f2960 (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.py | 24 |
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 |
