Finish the apply_default_acls function and enable it for document creation

This commit is contained in:
Roberto Rosario
2012-01-20 22:53:48 -04:00
parent 796dcc908a
commit 39f47702c0
2 changed files with 30 additions and 0 deletions

27
apps/acls/utils.py Normal file
View File

@@ -0,0 +1,27 @@
from __future__ import absolute_import
from django.contrib.contenttypes.models import ContentType
from .models import AccessEntry, DefaultAccessEntry, CreatorSingleton
from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder
def apply_default_acls(self, obj, actor=None):
if isinstance(obj, EncapsulatedObject):
obj = obj.source_object
if actor:
actor = AnonymousUserSingleton.objects.passthru_check(actor)
#actor_type = ContentType.objects.get_for_model(actor)
content_type = ContentType.objects.get_for_model(obj)
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()

View File

@@ -17,6 +17,7 @@ from history.api import create_history
from metadata.models import MetadataType
from metadata.api import save_metadata_list
from scheduler.api import register_interval_job, remove_job
from acls.utils import apply_default_acls
from .managers import SourceTransformationManager
from .literals import (SOURCE_CHOICES, SOURCE_CHOICES_PLURAL,
@@ -76,6 +77,8 @@ class BaseModel(models.Model):
document.document_type = document_type
document.save()
apply_default_acls(document, document, user)
if metadata_dict_list:
save_metadata_list(metadata_dict_list, document, create=True)
warnings = update_indexes(document)