diff --git a/mayan/apps/folders/urls.py b/mayan/apps/folders/urls.py index 5c49acf90a..92b862401e 100644 --- a/mayan/apps/folders/urls.py +++ b/mayan/apps/folders/urls.py @@ -6,13 +6,15 @@ from .api_views import ( APIDocumentFolderListView, APIFolderDocumentListView, APIFolderDocumentView, APIFolderListView, APIFolderView ) -from .views import DocumentFolderListView, FolderDetailView, FolderListView +from .views import ( + DocumentFolderListView, FolderDetailView, FolderEditView, FolderListView +) urlpatterns = patterns( 'folders.views', url(r'^list/$', FolderListView.as_view(), name='folder_list'), url(r'^create/$', 'folder_create', name='folder_create'), - url(r'^(?P\d+)/edit/$', 'folder_edit', name='folder_edit'), + url(r'^(?P\d+)/edit/$', FolderEditView.as_view(), name='folder_edit'), url(r'^(?P\d+)/delete/$', 'folder_delete', name='folder_delete'), url(r'^(?P\d+)/$', FolderDetailView.as_view(), name='folder_view'), url(r'^(?P\d+)/remove/document/multiple/$', 'folder_document_multiple_remove', name='folder_document_multiple_remove'), diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index 443a24688d..d1f94a544b 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -5,7 +5,7 @@ import logging from django.conf import settings from django.contrib import messages from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import reverse +from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext @@ -13,7 +13,7 @@ from django.utils.translation import ugettext_lazy as _, ungettext from acls.models import AccessControlList from common.utils import encapsulate -from common.views import SingleObjectListView +from common.views import SingleObjectEditView, SingleObjectListView from documents.permissions import permission_document_view from documents.models import Document from documents.views import DocumentListView @@ -30,6 +30,19 @@ from .permissions import ( logger = logging.getLogger(__name__) +class FolderEditView(SingleObjectEditView): + fields = ('label',) + model = Folder + object_permission = permission_folder_edit + post_action_redirect = reverse_lazy('folders:folder_list') + + def get_extra_context(self): + return { + 'object': self.get_object(), + 'title': _('Edit folder: %s') % self.get_object(), + } + + class FolderListView(SingleObjectListView): @staticmethod def get_document_count(instance, user): @@ -82,33 +95,6 @@ def folder_create(request): }, context_instance=RequestContext(request)) -def folder_edit(request, folder_id): - folder = get_object_or_404(Folder, pk=folder_id) - - try: - Permission.check_permissions(request.user, [permission_folder_edit]) - except PermissionDenied: - AccessControlList.objects.check_access(permission_folder_edit, request.user, folder) - - if request.method == 'POST': - form = FolderForm(data=request.POST, instance=folder) - if form.is_valid(): - try: - form.save() - messages.success(request, _('Folder edited successfully')) - return HttpResponseRedirect(reverse('folders:folder_list')) - except Exception as exception: - messages.error(request, _('Error editing folder; %s') % exception) - else: - form = FolderForm(instance=folder) - - return render_to_response('appearance/generic_form.html', { - 'title': _('Edit folder: %s') % folder, - 'form': form, - 'object': folder, - }, context_instance=RequestContext(request)) - - def folder_delete(request, folder_id): folder = get_object_or_404(Folder, pk=folder_id)