Enable default acls setup upon creation for documents, folders, tags and smart_links

This commit is contained in:
Roberto Rosario
2012-01-21 04:03:58 -04:00
parent 70953882a7
commit 95f56cbd5a
5 changed files with 16 additions and 4 deletions

View File

@@ -1,24 +1,30 @@
from __future__ import absolute_import
import logging
from django.contrib.contenttypes.models import ContentType
from common.models import AnonymousUserSingleton
from .models import AccessEntry, DefaultAccessEntry, CreatorSingleton
from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder
logger = logging.getLogger(__name__)
def apply_default_acls(self, obj, actor=None):
def apply_default_acls(obj, actor=None):
logger.debug('actor, init: %s' % actor)
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,

View File

@@ -17,6 +17,7 @@ from permissions import Permission
from common.utils import encapsulate
from acls.models import AccessEntry
from acls.views import acl_list_for
from acls.utils import apply_default_acls
from .models import Folder
from .forms import FolderForm, FolderListForm
@@ -64,6 +65,7 @@ def folder_create(request):
if form.is_valid():
folder, created = Folder.objects.get_or_create(user=request.user, title=form.cleaned_data['title'])
if created:
apply_default_acls(folder, request.user)
messages.success(request, _(u'Folder created successfully'))
return HttpResponseRedirect(reverse('folder_list'))
else:

View File

@@ -17,6 +17,7 @@ from documents.permissions import PERMISSION_DOCUMENT_VIEW
from permissions.models import Permission
from acls.views import acl_list_for
from acls.models import AccessEntry, PermissionDenied
from acls.utils import apply_default_acls
from .models import SmartLink, SmartLinkCondition
from .conf.settings import SHOW_EMPTY_SMART_LINKS
@@ -147,6 +148,7 @@ def smart_link_create(request):
form = SmartLinkForm(request.POST)
if form.is_valid():
document_group = form.save()
apply_default_acls(document_group, request.user)
messages.success(request, _(u'Smart link: %s created successfully.') % document_group)
return HttpResponseRedirect(reverse('document_group_list'))
else:

View File

@@ -77,7 +77,7 @@ class BaseModel(models.Model):
document.document_type = document_type
document.save()
apply_default_acls(document, document, user)
apply_default_acls(document, user)
if metadata_dict_list:
save_metadata_list(metadata_dict_list, document, create=True)

View File

@@ -17,6 +17,7 @@ from documents.permissions import PERMISSION_DOCUMENT_VIEW
from common.utils import encapsulate
from acls.models import AccessEntry, PermissionDenied
from acls.views import acl_list_for, acl_new_holder_for
from acls.utils import apply_default_acls
from .forms import TagListForm, TagForm
from .models import TagProperties
@@ -44,6 +45,7 @@ def tag_create(request):
tag = Tag(name=tag_name)
tag.save()
TagProperties(tag=tag, color=form.cleaned_data['color']).save()
apply_default_acls(tag, request.user)
messages.success(request, _(u'Tag created succesfully.'))
return HttpResponseRedirect(redirect_url)