diff --git a/mayan/apps/acls/classes.py b/mayan/apps/acls/classes.py index 54d8eb9753..9ddaa03428 100644 --- a/mayan/apps/acls/classes.py +++ b/mayan/apps/acls/classes.py @@ -25,7 +25,11 @@ class ModelPermission(object): ) permissions = [] - permissions.extend(cls._registry.get(type(instance))) + + class_permissions = cls._registry.get(type(instance)) + + if class_permissions: + permissions.extend(class_permissions) proxy = cls._proxies.get(type(instance)) diff --git a/mayan/apps/acls/tests/test_views.py b/mayan/apps/acls/tests/test_views.py index 7affe9ac7e..8fe4ab97ce 100644 --- a/mayan/apps/acls/tests/test_views.py +++ b/mayan/apps/acls/tests/test_views.py @@ -16,9 +16,7 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase): def setUp(self): super(AccessControlListViewTestCase, self).setUp() - content_type = ContentType.objects.get_for_model( - self.document - ) + content_type = ContentType.objects.get_for_model(self.document) self.view_arguments = { 'app_label': content_type.app_label, @@ -81,3 +79,34 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase): ) self.assertEqual(AccessControlList.objects.count(), 1) self.assertEqual(AccessControlList.objects.first().pk, acl.pk) + + def test_orphan_acl_create_view_with_permission(self): + """ + Test creating an ACL entry for an object with no model permissions. + Result: Should display a blank permissions list (not optgroup) + """ + + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + self.role.permissions.add( + permission_acl_edit.stored_permission + ) + + recent_entry = self.document.add_as_recent_document_for_user(self.user) + + content_type = ContentType.objects.get_for_model(recent_entry) + + view_arguments = { + 'app_label': content_type.app_label, + 'model': content_type.model, + 'object_id': recent_entry.pk + } + + response = self.post( + viewname='acls:acl_create', kwargs=view_arguments, data={ + 'role': self.role.pk + }, follow=True + ) + + self.assertNotContains(response, text='optgroup', status_code=200) + self.assertEqual(AccessControlList.objects.count(), 1)