diff --git a/apps/folders/views.py b/apps/folders/views.py index 6ed9580b60..15a7c9ea95 100644 --- a/apps/folders/views.py +++ b/apps/folders/views.py @@ -6,6 +6,7 @@ from django.contrib import messages from django.views.generic.list_detail import object_detail, object_list from django.core.urlresolvers import reverse from django.views.generic.create_update import create_object, delete_object, update_object +from django.core.exceptions import PermissionDenied from documents import PERMISSION_DOCUMENT_VIEW from documents.models import Document @@ -53,7 +54,10 @@ def folder_create(request): def folder_edit(request, folder_id): folder = get_object_or_404(Folder, pk=folder_id) - + + if not request.user.is_staff and not request.user.is_superuser and not request.user == folder.user: + raise PermissionDenied + if request.method == 'POST': form = FolderForm(request.POST) if form.is_valid(): @@ -78,6 +82,9 @@ def folder_edit(request, folder_id): def folder_delete(request, folder_id): folder = get_object_or_404(Folder, pk=folder_id) + if not request.user.is_staff and not request.user.is_superuser and not request.user == folder.user: + raise PermissionDenied + post_action_redirect = reverse('folder_list') previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) @@ -109,10 +116,24 @@ def folder_delete(request, folder_id): def folder_view(request, folder_id): folder = get_object_or_404(Folder, pk=folder_id) + if not request.user.is_staff and not request.user.is_superuser and not request.user == folder.user: + raise PermissionDenied + return render_to_response('generic_list.html', { - 'object_list': [folder_document.document for folder_document in folder.folderdocument_set.all()], - 'title': _(u'documents in folder: %s') % folder, - 'multi_select_as_buttons': True, + 'object_list': folder.folderdocument_set.all(), + 'extra_columns': [ + {'name': _(u'document'), 'attribute': + lambda x: '%s' % (reverse('document_view_simple', args=[x.document.pk]), x.document) + }, + {'name': _(u'thumbnail'), 'attribute': + lambda x: '' % (reverse('document_preview', args=[x.document.pk]), + reverse('document_thumbnail', args=[x.document.pk])) + }, + ], + 'hide_link': True, + 'hide_object': True, + 'title': _(u'documents in folder: %s') % folder, + 'multi_select_as_buttons': True, }, context_instance=RequestContext(request))