Enable default acls setup upon creation for documents, folders, tags and smart_links
This commit is contained in:
+8
-2
@@ -1,18 +1,24 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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):
|
if isinstance(obj, EncapsulatedObject):
|
||||||
obj = obj.source_object
|
obj = obj.source_object
|
||||||
|
|
||||||
if actor:
|
if actor:
|
||||||
actor = AnonymousUserSingleton.objects.passthru_check(actor)
|
actor = AnonymousUserSingleton.objects.passthru_check(actor)
|
||||||
#actor_type = ContentType.objects.get_for_model(actor)
|
|
||||||
|
|
||||||
content_type = ContentType.objects.get_for_model(obj)
|
content_type = ContentType.objects.get_for_model(obj)
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from permissions import Permission
|
|||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
from acls.models import AccessEntry
|
from acls.models import AccessEntry
|
||||||
from acls.views import acl_list_for
|
from acls.views import acl_list_for
|
||||||
|
from acls.utils import apply_default_acls
|
||||||
|
|
||||||
from .models import Folder
|
from .models import Folder
|
||||||
from .forms import FolderForm, FolderListForm
|
from .forms import FolderForm, FolderListForm
|
||||||
@@ -64,6 +65,7 @@ def folder_create(request):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
folder, created = Folder.objects.get_or_create(user=request.user, title=form.cleaned_data['title'])
|
folder, created = Folder.objects.get_or_create(user=request.user, title=form.cleaned_data['title'])
|
||||||
if created:
|
if created:
|
||||||
|
apply_default_acls(folder, request.user)
|
||||||
messages.success(request, _(u'Folder created successfully'))
|
messages.success(request, _(u'Folder created successfully'))
|
||||||
return HttpResponseRedirect(reverse('folder_list'))
|
return HttpResponseRedirect(reverse('folder_list'))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
|||||||
from permissions.models import Permission
|
from permissions.models import Permission
|
||||||
from acls.views import acl_list_for
|
from acls.views import acl_list_for
|
||||||
from acls.models import AccessEntry, PermissionDenied
|
from acls.models import AccessEntry, PermissionDenied
|
||||||
|
from acls.utils import apply_default_acls
|
||||||
|
|
||||||
from .models import SmartLink, SmartLinkCondition
|
from .models import SmartLink, SmartLinkCondition
|
||||||
from .conf.settings import SHOW_EMPTY_SMART_LINKS
|
from .conf.settings import SHOW_EMPTY_SMART_LINKS
|
||||||
@@ -147,6 +148,7 @@ def smart_link_create(request):
|
|||||||
form = SmartLinkForm(request.POST)
|
form = SmartLinkForm(request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
document_group = form.save()
|
document_group = form.save()
|
||||||
|
apply_default_acls(document_group, request.user)
|
||||||
messages.success(request, _(u'Smart link: %s created successfully.') % document_group)
|
messages.success(request, _(u'Smart link: %s created successfully.') % document_group)
|
||||||
return HttpResponseRedirect(reverse('document_group_list'))
|
return HttpResponseRedirect(reverse('document_group_list'))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class BaseModel(models.Model):
|
|||||||
document.document_type = document_type
|
document.document_type = document_type
|
||||||
document.save()
|
document.save()
|
||||||
|
|
||||||
apply_default_acls(document, document, user)
|
apply_default_acls(document, user)
|
||||||
|
|
||||||
if metadata_dict_list:
|
if metadata_dict_list:
|
||||||
save_metadata_list(metadata_dict_list, document, create=True)
|
save_metadata_list(metadata_dict_list, document, create=True)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
|||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
from acls.models import AccessEntry, PermissionDenied
|
from acls.models import AccessEntry, PermissionDenied
|
||||||
from acls.views import acl_list_for, acl_new_holder_for
|
from acls.views import acl_list_for, acl_new_holder_for
|
||||||
|
from acls.utils import apply_default_acls
|
||||||
|
|
||||||
from .forms import TagListForm, TagForm
|
from .forms import TagListForm, TagForm
|
||||||
from .models import TagProperties
|
from .models import TagProperties
|
||||||
@@ -44,6 +45,7 @@ def tag_create(request):
|
|||||||
tag = Tag(name=tag_name)
|
tag = Tag(name=tag_name)
|
||||||
tag.save()
|
tag.save()
|
||||||
TagProperties(tag=tag, color=form.cleaned_data['color']).save()
|
TagProperties(tag=tag, color=form.cleaned_data['color']).save()
|
||||||
|
apply_default_acls(tag, request.user)
|
||||||
|
|
||||||
messages.success(request, _(u'Tag created succesfully.'))
|
messages.success(request, _(u'Tag created succesfully.'))
|
||||||
return HttpResponseRedirect(redirect_url)
|
return HttpResponseRedirect(redirect_url)
|
||||||
|
|||||||
Reference in New Issue
Block a user