diff --git a/apps/acls/utils.py b/apps/acls/utils.py index 2d9c9a92e7..01673490e2 100644 --- a/apps/acls/utils.py +++ b/apps/acls/utils.py @@ -7,15 +7,15 @@ from django.contrib.contenttypes.models import ContentType from common.models import AnonymousUserSingleton from .models import AccessEntry, DefaultAccessEntry, CreatorSingleton -from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder +from .classes import (EncapsulatedObject, AccessHolder, ClassAccessHolder, + get_source_object) logger = logging.getLogger(__name__) def apply_default_acls(obj, actor=None): logger.debug('actor, init: %s' % actor) - if isinstance(obj, EncapsulatedObject): - obj = obj.source_object + obj = get_source_object(obj) if actor: actor = AnonymousUserSingleton.objects.passthru_check(actor) @@ -24,10 +24,12 @@ def apply_default_acls(obj, actor=None): for default_acl in DefaultAccessEntry.objects.filter(content_type=content_type): holder = CreatorSingleton.objects.passthru_check(default_acl.holder_object, actor) - - access_entry = AccessEntry( - permission=default_acl.permission, - holder_object=holder, - content_object=obj, - ) - access_entry.save() + + if holder: + # When the creator is admin + access_entry = AccessEntry( + permission=default_acl.permission, + holder_object=holder, + content_object=obj, + ) + access_entry.save()