Don't error out when inspecting ACL permissions for an object with no registered permissions.

This commit is contained in:
Roberto Rosario
2016-03-19 02:20:36 -04:00
parent 45f90cce50
commit 2328355754
2 changed files with 37 additions and 4 deletions

View File

@@ -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))

View File

@@ -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)