Don't error out when inspecting ACL permissions for an object with no registered permissions.
This commit is contained in:
@@ -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))
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user