From c751db444763fffef4ed445e118572bd74e2b92f Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 8 Jul 2015 22:02:00 -0400 Subject: [PATCH] Convert folder create view to CBV. --- mayan/apps/folders/urls.py | 5 +++-- mayan/apps/folders/views.py | 42 ++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/mayan/apps/folders/urls.py b/mayan/apps/folders/urls.py index 92b862401e..0fe78b4f5e 100644 --- a/mayan/apps/folders/urls.py +++ b/mayan/apps/folders/urls.py @@ -7,13 +7,14 @@ from .api_views import ( APIFolderDocumentView, APIFolderListView, APIFolderView ) from .views import ( - DocumentFolderListView, FolderDetailView, FolderEditView, FolderListView + DocumentFolderListView, FolderCreateView, 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'^create/$', FolderCreateView.as_view(), name='folder_create'), 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'), diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index d1f94a544b..972ee2a271 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -4,7 +4,7 @@ import logging from django.conf import settings from django.contrib import messages -from django.core.exceptions import PermissionDenied +from django.core.exceptions import PermissionDenied, ValidationError from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render_to_response @@ -13,7 +13,9 @@ from django.utils.translation import ugettext_lazy as _, ungettext from acls.models import AccessControlList from common.utils import encapsulate -from common.views import SingleObjectEditView, SingleObjectListView +from common.views import ( + SingleObjectCreateView, SingleObjectEditView, SingleObjectListView +) from documents.permissions import permission_document_view from documents.models import Document from documents.views import DocumentListView @@ -74,25 +76,27 @@ class FolderListView(SingleObjectListView): } -def folder_create(request): - Permission.check_permissions(request.user, [permission_folder_create]) +class FolderCreateView(SingleObjectCreateView): + fields = ('label',) + model = Folder + view_permission = permission_folder_create - if request.method == 'POST': - form = FolderForm(request.POST) - if form.is_valid(): - folder, created = Folder.objects.get_or_create(user=request.user, label=form.cleaned_data['label']) - if created: - messages.success(request, _('Folder created successfully')) - return HttpResponseRedirect(reverse('folders:folder_list')) - else: - messages.error(request, _('A folder named: %s, already exists.') % form.cleaned_data['label']) - else: - form = FolderForm() + def form_valid(self, form): + try: + Folder.objects.get(label=form.cleaned_data['label'], user=self.request.user) + except Folder.DoesNotExist: + instance = form.save(commit=False) + instance.user = self.request.user + instance.save() + return super(FolderCreateView, self).form_valid(form) + else: + messages.error(self.request, _('A folder named: %s, already exists.') % form.cleaned_data['label']) + return super(FolderCreateView, self).form_invalid(form) - return render_to_response('appearance/generic_form.html', { - 'title': _('Create folder'), - 'form': form, - }, context_instance=RequestContext(request)) + def get_extra_context(self): + return { + 'title': _('Create folder'), + } def folder_delete(request, folder_id):