Don't assign an ACL to a non existant holder
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user