Update folders app to use relative import, move permission to a separate file, import acl usage
This commit is contained in:
@@ -1,23 +1,15 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation.api import register_links, register_top_menu, \
|
||||
register_multi_item_links, register_sidebar_template
|
||||
from navigation.api import (register_links, register_top_menu,
|
||||
register_multi_item_links, register_sidebar_template)
|
||||
from documents.models import Document
|
||||
from documents.literals import PERMISSION_DOCUMENT_VIEW
|
||||
from permissions.models import PermissionNamespace, Permission
|
||||
from acls.models import class_permissions
|
||||
|
||||
from folders.models import Folder
|
||||
|
||||
folder_namespace = PermissionNamespace('folders', _(u'Folders'))
|
||||
|
||||
PERMISSION_FOLDER_LIST = Permission.objects.register(folder_namespace, 'folder_list', _(u'View all folders'))
|
||||
PERMISSION_FOLDER_CREATE = Permission.objects.register(folder_namespace, 'folder_create', _(u'Create new folders'))
|
||||
PERMISSION_FOLDER_EDIT = Permission.objects.register(folder_namespace, 'folder_edit', _(u'Edit new folders'))
|
||||
PERMISSION_FOLDER_DELETE = Permission.objects.register(folder_namespace, 'folder_delete', _(u'Delete new folders'))
|
||||
PERMISSION_FOLDER_REMOVE_DOCUMENT = Permission.objects.register(folder_namespace, 'folder_remove_document', _(u'Remove documents from folders'))
|
||||
PERMISSION_FOLDER_VIEW = Permission.objects.register(folder_namespace, 'folder_view', _(u'View existing folders'))
|
||||
PERMISSION_FOLDER_ADD_DOCUMENT = Permission.objects.register(folder_namespace, 'folder_add_document', _(u'Add documents to existing folders'))
|
||||
from .models import Folder
|
||||
from .permissions import (PERMISSION_FOLDER_LIST, PERMISSION_FOLDER_CREATE,
|
||||
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE,
|
||||
PERMISSION_FOLDER_REMOVE_DOCUMENT, PERMISSION_FOLDER_VIEW,
|
||||
PERMISSION_FOLDER_ADD_DOCUMENT)
|
||||
|
||||
folder_list = {'text': _(u'folder list'), 'view': 'folder_list', 'famfam': 'folder_user', 'permissions': [PERMISSION_FOLDER_LIST]}
|
||||
folder_create = {'text': _('create folder'), 'view': 'folder_create', 'famfam': 'folder_add', 'permissions': [PERMISSION_FOLDER_CREATE]}
|
||||
|
||||
@@ -23,6 +23,10 @@ class Folder(models.Model):
|
||||
@models.permalink
|
||||
def get_absolute_url(self):
|
||||
return ('folder_view', [self.pk])
|
||||
|
||||
@property
|
||||
def documents(self):
|
||||
return [folder_document.document for folder_document in self.folderdocument_set.all()]
|
||||
|
||||
class Meta:
|
||||
unique_together = ('title', 'user')
|
||||
|
||||
14
apps/folders/permissions.py
Normal file
14
apps/folders/permissions.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from permissions.models import PermissionNamespace, Permission
|
||||
from acls.models import class_permissions
|
||||
|
||||
folder_namespace = PermissionNamespace('folders', _(u'Folders'))
|
||||
|
||||
PERMISSION_FOLDER_LIST = Permission.objects.register(folder_namespace, 'folder_list', _(u'View all folders'))
|
||||
PERMISSION_FOLDER_CREATE = Permission.objects.register(folder_namespace, 'folder_create', _(u'Create new folders'))
|
||||
PERMISSION_FOLDER_EDIT = Permission.objects.register(folder_namespace, 'folder_edit', _(u'Edit new folders'))
|
||||
PERMISSION_FOLDER_DELETE = Permission.objects.register(folder_namespace, 'folder_delete', _(u'Delete new folders'))
|
||||
PERMISSION_FOLDER_REMOVE_DOCUMENT = Permission.objects.register(folder_namespace, 'folder_remove_document', _(u'Remove documents from folders'))
|
||||
PERMISSION_FOLDER_VIEW = Permission.objects.register(folder_namespace, 'folder_view', _(u'View existing folders'))
|
||||
PERMISSION_FOLDER_ADD_DOCUMENT = Permission.objects.register(folder_namespace, 'folder_add_document', _(u'Add documents to existing folders'))
|
||||
@@ -9,15 +9,16 @@ from django.core.exceptions import PermissionDenied
|
||||
|
||||
from documents.literals import PERMISSION_DOCUMENT_VIEW
|
||||
from documents.models import Document
|
||||
from documents.views import document_list
|
||||
from permissions.models import Permission
|
||||
from common.utils import encapsulate
|
||||
from acls.models import AccessEntry, PermissionDenied
|
||||
from acls.views import acl_list_for, acl_new_holder_for
|
||||
|
||||
from folders.models import Folder, FolderDocument
|
||||
from folders.forms import FolderForm, AddDocumentForm
|
||||
from folders import (PERMISSION_FOLDER_LIST, PERMISSION_FOLDER_CREATE,
|
||||
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE,
|
||||
from .models import Folder, FolderDocument
|
||||
from .forms import FolderForm, AddDocumentForm
|
||||
from .permissions import (PERMISSION_FOLDER_LIST, PERMISSION_FOLDER_CREATE,
|
||||
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE,
|
||||
PERMISSION_FOLDER_REMOVE_DOCUMENT, PERMISSION_FOLDER_VIEW,
|
||||
PERMISSION_FOLDER_ADD_DOCUMENT)
|
||||
|
||||
@@ -143,19 +144,30 @@ def folder_delete(request, folder_id):
|
||||
def folder_view(request, folder_id):
|
||||
folder = get_object_or_404(Folder, pk=folder_id)
|
||||
|
||||
document_list = folder.documents
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_VIEW])
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_FOLDER_VIEW, request.user, folder)
|
||||
|
||||
return render_to_response('generic_list.html', {
|
||||
'object_list': [fd.document for fd in folder.folderdocument_set.all()],
|
||||
context = {
|
||||
'object_list': document_list,
|
||||
'hide_links': True,
|
||||
'title': _(u'documents in folder: %s') % folder,
|
||||
'multi_select_as_buttons': True,
|
||||
'object': folder,
|
||||
'object_name': _(u'folder'),
|
||||
}, context_instance=RequestContext(request))
|
||||
'object_name': _(u'folder'),
|
||||
|
||||
}
|
||||
|
||||
#document_list
|
||||
|
||||
return render_to_response(
|
||||
'generic_list.html',
|
||||
context,
|
||||
context_instance=RequestContext(request)
|
||||
)
|
||||
|
||||
'''
|
||||
def folder_add_document_sidebar(request, document_id):
|
||||
@@ -243,9 +255,15 @@ def document_folder_list(request, document_id):
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_FODLER_VIEW])
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, request.user, document)
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_REMOVE_DOCUMENT])
|
||||
except PermissionDenied:
|
||||
folder_documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_REMOVE_DOCUMENT, request.user, folder_documents)
|
||||
|
||||
return folder_list(
|
||||
request,
|
||||
queryset=Folder.objects.filter(folderdocument__document=document),
|
||||
@@ -272,11 +290,7 @@ def folder_document_remove(request, folder_id, document_id=None, document_id_lis
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_REMOVE_DOCUMENT])
|
||||
except PermissionDenied:
|
||||
for document in folder_documents:
|
||||
try:
|
||||
AccessEntry.objects.check_access(PERMISSION_FOLDER_REMOVE_DOCUMENT, request.user, document)
|
||||
except PermissionDenied:
|
||||
folder_documents.remove(document)
|
||||
folder_documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_REMOVE_DOCUMENT, request.user, folder_documents)
|
||||
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
|
||||
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
|
||||
|
||||
Reference in New Issue
Block a user