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 common.models import AnonymousUserSingleton
from .models import AccessEntry, DefaultAccessEntry, CreatorSingleton 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__) logger = logging.getLogger(__name__)
def apply_default_acls(obj, actor=None): def apply_default_acls(obj, actor=None):
logger.debug('actor, init: %s' % actor) logger.debug('actor, init: %s' % actor)
if isinstance(obj, EncapsulatedObject): obj = get_source_object(obj)
obj = obj.source_object
if actor: if actor:
actor = AnonymousUserSingleton.objects.passthru_check(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): for default_acl in DefaultAccessEntry.objects.filter(content_type=content_type):
holder = CreatorSingleton.objects.passthru_check(default_acl.holder_object, actor) holder = CreatorSingleton.objects.passthru_check(default_acl.holder_object, actor)
access_entry = AccessEntry( if holder:
permission=default_acl.permission, # When the creator is admin
holder_object=holder, access_entry = AccessEntry(
content_object=obj, permission=default_acl.permission,
) holder_object=holder,
access_entry.save() content_object=obj,
)
access_entry.save()