Update folder edit view to CBV.

This commit is contained in:
Roberto Rosario
2015-07-08 19:07:48 -04:00
parent bfab8f1181
commit 0946aef7c0
2 changed files with 19 additions and 31 deletions

View File

@@ -6,13 +6,15 @@ from .api_views import (
APIDocumentFolderListView, APIFolderDocumentListView, APIDocumentFolderListView, APIFolderDocumentListView,
APIFolderDocumentView, APIFolderListView, APIFolderView APIFolderDocumentView, APIFolderListView, APIFolderView
) )
from .views import DocumentFolderListView, FolderDetailView, FolderListView from .views import (
DocumentFolderListView, FolderDetailView, FolderEditView, FolderListView
)
urlpatterns = patterns( urlpatterns = patterns(
'folders.views', 'folders.views',
url(r'^list/$', FolderListView.as_view(), name='folder_list'), url(r'^list/$', FolderListView.as_view(), name='folder_list'),
url(r'^create/$', 'folder_create', name='folder_create'), url(r'^create/$', 'folder_create', name='folder_create'),
url(r'^(?P<folder_id>\d+)/edit/$', 'folder_edit', name='folder_edit'), url(r'^(?P<pk>\d+)/edit/$', FolderEditView.as_view(), name='folder_edit'),
url(r'^(?P<folder_id>\d+)/delete/$', 'folder_delete', name='folder_delete'), url(r'^(?P<folder_id>\d+)/delete/$', 'folder_delete', name='folder_delete'),
url(r'^(?P<pk>\d+)/$', FolderDetailView.as_view(), name='folder_view'), url(r'^(?P<pk>\d+)/$', FolderDetailView.as_view(), name='folder_view'),
url(r'^(?P<folder_id>\d+)/remove/document/multiple/$', 'folder_document_multiple_remove', name='folder_document_multiple_remove'), url(r'^(?P<folder_id>\d+)/remove/document/multiple/$', 'folder_document_multiple_remove', name='folder_document_multiple_remove'),

View File

@@ -5,7 +5,7 @@ import logging
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import PermissionDenied 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.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext from django.template import RequestContext
@@ -13,7 +13,7 @@ from django.utils.translation import ugettext_lazy as _, ungettext
from acls.models import AccessControlList from acls.models import AccessControlList
from common.utils import encapsulate 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.permissions import permission_document_view
from documents.models import Document from documents.models import Document
from documents.views import DocumentListView from documents.views import DocumentListView
@@ -30,6 +30,19 @@ from .permissions import (
logger = logging.getLogger(__name__) 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): class FolderListView(SingleObjectListView):
@staticmethod @staticmethod
def get_document_count(instance, user): def get_document_count(instance, user):
@@ -82,33 +95,6 @@ def folder_create(request):
}, context_instance=RequestContext(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): def folder_delete(request, folder_id):
folder = get_object_or_404(Folder, pk=folder_id) folder = get_object_or_404(Folder, pk=folder_id)