From fd11a15bf35493dfceec4630e71b4a4c36ac02d7 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 1 Jul 2015 20:57:55 -0400 Subject: [PATCH] Conver folder list and document folder list views to CBV. --- mayan/apps/folders/urls.py | 4 ++-- mayan/apps/folders/views.py | 45 +++++++++++++++++++------------------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/mayan/apps/folders/urls.py b/mayan/apps/folders/urls.py index 6bf6c88cc2..5c49acf90a 100644 --- a/mayan/apps/folders/urls.py +++ b/mayan/apps/folders/urls.py @@ -6,7 +6,7 @@ from .api_views import ( APIDocumentFolderListView, APIFolderDocumentListView, APIFolderDocumentView, APIFolderListView, APIFolderView ) -from .views import FolderDetailView, FolderListView +from .views import DocumentFolderListView, FolderDetailView, FolderListView urlpatterns = patterns( 'folders.views', @@ -19,7 +19,7 @@ urlpatterns = patterns( url(r'^document/(?P\d+)/folder/add/$', 'folder_add_document', name='folder_add_document'), url(r'^document/multiple/folder/add/$', 'folder_add_multiple_documents', name='folder_add_multiple_documents'), - url(r'^document/(?P\d+)/folder/list/$', 'document_folder_list', name='document_folder_list'), + url(r'^document/(?P\d+)/folder/list/$', DocumentFolderListView.as_view(), name='document_folder_list'), ) api_urls = patterns( diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index 5dfe1272a1..ff119de5e8 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -30,9 +30,15 @@ logger = logging.getLogger(__name__) class FolderListView(SingleObjectListView): - model = Folder object_permission = permission_folder_view + def get_queryset(self): + self.queryset = self.get_folder_queryset() + return super(FolderListView, self).get_queryset() + + def get_folder_queryset(self): + return Folder.objects.all() + def get_extra_context(self): return { 'title': _('Folders'), @@ -200,31 +206,26 @@ def folder_add_document(request, document_id=None, document_id_list=None): context_instance=RequestContext(request)) -def document_folder_list(request, document_id): - document = get_object_or_404(Document, pk=document_id) +class DocumentFolderListView(FolderListView): + def dispatch(self, request, *args, **kwargs): + self.document = get_object_or_404(Document, pk=self.kwargs['pk']) - try: - Permission.check_permissions(request.user, [permission_document_view]) - except PermissionDenied: - AccessControlList.objects.check_access(permission_document_view, request.user, document) + try: + Permission.check_permissions(request.user, [permission_folder_view]) + except PermissionDenied: + AccessControlList.objects.check_access(permission_folder_view, request.user, self.document) - context = { - 'hide_link': True, - 'object': document, - 'title': _('Folders containing document: %s') % document, - } + return super(DocumentFolderListView, self).dispatch(request, *args, **kwargs) - queryset = document.folders.all() + def get_folder_queryset(self): + return self.document.folders.all() - try: - Permission.check_permissions(request.user, [permission_folder_view]) - except PermissionDenied: - queryset = AccessControlList.objects.filter_by_access(permission_folder_view, request.user, queryset) - - context['object_list'] = queryset - - return render_to_response('appearance/generic_list.html', context, - context_instance=RequestContext(request)) + def get_extra_context(self): + return { + 'hide_link': True, + 'object': self.document, + 'title': _('Folders containing document: %s') % self.document, + } def folder_document_remove(request, folder_id, document_id=None, document_id_list=None):