From c4508f486bf7cf37b170485b90e0212f25aca1a6 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 20 Dec 2011 02:32:43 -0400 Subject: [PATCH] Update folder_view view to use document_list view, fix all absolute related import problems --- apps/folders/__init__.py | 15 ++++---- apps/folders/permissions.py | 4 +-- apps/folders/views.py | 69 +++++++------------------------------ 3 files changed, 23 insertions(+), 65 deletions(-) diff --git a/apps/folders/__init__.py b/apps/folders/__init__.py index e1876c5d51..881ce8a3ce 100644 --- a/apps/folders/__init__.py +++ b/apps/folders/__init__.py @@ -4,14 +4,16 @@ 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 acls.models import class_permissions +from acls import ACLS_EDIT_ACL, ACLS_VIEW_ACL -from folders.models import Folder -from folders.permissions import (PERMISSION_FOLDER_LIST, PERMISSION_FOLDER_CREATE, +from .models import Folder +from .permissions import (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_list = {'text': _(u'folder list'), 'view': 'folder_list', 'famfam': 'folder_user', 'permissions': [PERMISSION_FOLDER_VIEW]} folder_create = {'text': _('create folder'), 'view': 'folder_create', 'famfam': 'folder_add', 'permissions': [PERMISSION_FOLDER_CREATE]} folder_edit = {'text': _('edit'), 'view': 'folder_edit', 'args': 'object.pk', 'famfam': 'folder_edit', 'permissions': [PERMISSION_FOLDER_EDIT]} folder_delete = {'text': _('delete'), 'view': 'folder_delete', 'args': 'object.pk', 'famfam': 'folder_delete', 'permissions': [PERMISSION_FOLDER_DELETE]} @@ -20,8 +22,8 @@ folder_view = {'text': _(u'folder documents'), 'view': 'folder_view', 'args': 'o folder_add_document = {'text': _('add to a folder'), 'view': 'folder_add_document', 'args': 'object.pk', 'famfam': 'add', 'permissions': [PERMISSION_FOLDER_ADD_DOCUMENT]} document_folder_list = {'text': _(u'folders'), 'view': 'document_folder_list', 'args': 'object.pk', 'famfam': 'folder_user', 'permissions': [PERMISSION_DOCUMENT_VIEW], 'children_view_regex': [r'folder']} -folder_acl_list = {'text': _(u'ACLs'), 'view': 'folder_acl_list', 'args': 'object.pk', 'famfam': 'lock'}#, 'permissions': [ACLS_VIEW_ACL]} -folder_new_holder = {'text': _(u'New holder'), 'view': 'folder_new_holder', 'args': 'object.pk', 'famfam': 'user'}#, 'permissions': [ACLS_VIEW_ACL]} +folder_acl_list = {'text': _(u'ACLs'), 'view': 'folder_acl_list', 'args': 'object.pk', 'famfam': 'lock', 'permissions': [ACLS_VIEW_ACL]} +folder_new_holder = {'text': _(u'New holder'), 'view': 'folder_new_holder', 'args': 'object.pk', 'famfam': 'user', 'permissions': [ACLS_VIEW_ACL]} register_multi_item_links(['folder_view'], [folder_document_multiple_remove]) @@ -40,10 +42,11 @@ register_sidebar_template(['folder_list'], 'folders_help.html') register_links(['document_folder_list', 'folder_add_document'], [folder_add_document], menu_name="sidebar") class_permissions(Folder, [ - PERMISSION_FOLDER_LIST, PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE, PERMISSION_FOLDER_VIEW, + ACLS_EDIT_ACL, + ACLS_VIEW_ACL ]) class_permissions(Document, [ diff --git a/apps/folders/permissions.py b/apps/folders/permissions.py index 665439c1b5..6077438f42 100644 --- a/apps/folders/permissions.py +++ b/apps/folders/permissions.py @@ -1,11 +1,11 @@ +from __future__ import absolute_import + 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')) diff --git a/apps/folders/views.py b/apps/folders/views.py index 7821391b2f..2d0b1ee6aa 100644 --- a/apps/folders/views.py +++ b/apps/folders/views.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import + from django.utils.translation import ugettext_lazy as _ from django.http import HttpResponseRedirect from django.shortcuts import render_to_response, get_object_or_404 @@ -10,14 +12,14 @@ 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 permissions 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.permissions import (PERMISSION_FOLDER_LIST, PERMISSION_FOLDER_CREATE, +from .models import Folder, FolderDocument +from .forms import FolderForm, AddDocumentForm +from .permissions import (PERMISSION_FOLDER_CREATE, PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE, PERMISSION_FOLDER_REMOVE_DOCUMENT, PERMISSION_FOLDER_VIEW, PERMISSION_FOLDER_ADD_DOCUMENT) @@ -40,9 +42,7 @@ def folder_list(request, queryset=None, extra_context=None): try: Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_VIEW]) except PermissionDenied: - pass - #class_objects = AccessEntry.objects.get_allowed_class_objects(PERMISSION_FOLDER_VIEW, request.user, Folder) - #queryset = list(set(queryset) & set(class_objects)) + queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_VIEW, request.user, queryset) context['object_list'] = queryset @@ -144,64 +144,25 @@ 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) 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'), - } - #document_list - - return render_to_response( - 'generic_list.html', - context, - context_instance=RequestContext(request) + return document_list( + request, + object_list=folder.documents, + title=_(u'documents in folder: %s') % folder, + extra_context=context ) -''' -def folder_add_document_sidebar(request, document_id): - Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW]) - document = get_object_or_404(Document, pk=document_id) - - previous = request.META.get('HTTP_REFERER', '/') - - if request.method == 'POST': - form = AddDocumentForm(request.POST, user=request.user) - if form.is_valid(): - if form.cleaned_data['existing_folder']: - folder = form.cleaned_data['existing_folder'] - elif form.cleaned_data['title']: - folder, created = Folder.objects.get_or_create(user=request.user, title=form.cleaned_data['title']) - if created: - messages.success(request, _(u'Folder created successfully')) - else: - messages.error(request, _(u'A folder named: %s, already exists.') % form.cleaned_data['title']) - return HttpResponseRedirect(previous) - else: - messages.error(request, _(u'Must specify a new folder or an existing one.')) - return HttpResponseRedirect(previous) - - folder_document, created = FolderDocument.objects.get_or_create(folder=folder, document=document) - if created: - messages.success(request, _(u'Document: %(document)s added to folder: %(folder)s successfully.') % { - 'document': document, 'folder': folder}) - else: - messages.warning(request, _(u'Document: %(document)s is already in folder: %(folder)s.') % { - 'document': document, 'folder': folder}) - - return HttpResponseRedirect(previous) -''' def folder_add_document(request, document_id): document = get_object_or_404(Document, pk=document_id) @@ -255,15 +216,9 @@ 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),