Don't assign an ACL to a non existant holder

This commit is contained in:
Roberto Rosario
2012-02-02 01:02:40 -04:00
parent 4ed7c714e0
commit a3ccc9c005

View File

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