diff --git a/mayan/apps/folders/urls.py b/mayan/apps/folders/urls.py index 1fcd128534..f675fbec5e 100644 --- a/mayan/apps/folders/urls.py +++ b/mayan/apps/folders/urls.py @@ -1,11 +1,13 @@ from django.conf.urls import patterns, url +from .views import FolderDetailView + urlpatterns = patterns('folders.views', url(r'^list/$', 'folder_list', (), 'folder_list'), url(r'^create/$', 'folder_create', (), 'folder_create'), url(r'^(?P\d+)/edit/$', 'folder_edit', (), 'folder_edit'), url(r'^(?P\d+)/delete/$', 'folder_delete', (), 'folder_delete'), - url(r'^(?P\d+)/$', 'folder_view', (), 'folder_view'), + url(r'^(?P\d+)/$', FolderDetailView.as_view(), name='folder_view'), url(r'^(?P\d+)/remove/document/multiple/$', 'folder_document_multiple_remove', (), 'folder_document_multiple_remove'), url(r'^document/(?P\d+)/folder/add/$', 'folder_add_document', (), 'folder_add_document'), diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index 855eaa0e97..04127798bf 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -16,7 +16,7 @@ from acls.views import acl_list_for from common.utils import encapsulate from documents.permissions import PERMISSION_DOCUMENT_VIEW from documents.models import Document -from documents.views import document_list +from documents.views import DocumentListView from permissions.models import Permission from .forms import FolderForm, FolderListForm @@ -145,27 +145,28 @@ def folder_delete(request, folder_id): context_instance=RequestContext(request)) -def folder_view(request, folder_id): - folder = get_object_or_404(Folder, pk=folder_id) +class FolderDetailView(DocumentListView): + def get_folder(self): + folder = get_object_or_404(Folder, pk=self.kwargs['pk']) - try: - Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_VIEW]) - except PermissionDenied: - AccessEntry.objects.check_access(PERMISSION_FOLDER_VIEW, request.user, folder) + try: + Permission.objects.check_permissions(self.request.user, [PERMISSION_FOLDER_VIEW]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_FOLDER_VIEW, self.request.user, folder) - context = { - 'hide_links': True, - 'multi_select_as_buttons': True, - 'object': folder, - 'object_name': _(u'folder'), - } + return folder - return document_list( - request, - object_list=folder.documents, - title=_(u'documents in folder: %s') % folder, - extra_context=context - ) + def get_queryset(self): + return self.get_folder().documents + + def get_extra_context(self): + return { + 'title': _(u'Documents in folder: %s') % self.get_folder(), + 'hide_links': True, + 'multi_select_as_buttons': True, + 'object': self.get_folder(), + 'object_name': _(u'folder'), + } def folder_add_document(request, document_id=None, document_id_list=None): diff --git a/mayan/apps/tags/urls.py b/mayan/apps/tags/urls.py index 51d880aae4..0ed8113339 100644 --- a/mayan/apps/tags/urls.py +++ b/mayan/apps/tags/urls.py @@ -3,13 +3,14 @@ from __future__ import absolute_import from django.conf.urls import patterns, url from .api_views import APITagListView, APITagView +from .views import TagTaggedItemListView urlpatterns = patterns('tags.views', url(r'^list/$', 'tag_list', (), 'tag_list'), url(r'^create/$', 'tag_create', (), 'tag_create'), url(r'^(?P\d+)/delete/$', 'tag_delete', (), 'tag_delete'), url(r'^(?P\d+)/edit/$', 'tag_edit', (), 'tag_edit'), - url(r'^(?P\d+)/tagged_item/list/$', 'tag_tagged_item_list', (), 'tag_tagged_item_list'), + url(r'^(?P\d+)/documents/$', TagTaggedItemListView.as_view(), name='tag_tagged_item_list'), url(r'^multiple/delete/$', 'tag_multiple_delete', (), 'tag_multiple_delete'), url(r'^multiple/remove/document/(?P\d+)/$', 'single_document_multiple_tag_remove', (), 'single_document_multiple_tag_remove'), diff --git a/mayan/apps/tags/views.py b/mayan/apps/tags/views.py index e1beda18bf..2e08436269 100644 --- a/mayan/apps/tags/views.py +++ b/mayan/apps/tags/views.py @@ -16,7 +16,7 @@ from acls.models import AccessEntry from acls.views import acl_list_for from acls.utils import apply_default_acls from documents.models import Document -from documents.views import document_list +from documents.views import DocumentListView from documents.permissions import PERMISSION_DOCUMENT_VIEW from permissions.models import Permission @@ -231,18 +231,21 @@ def tag_edit(request, tag_id): }, context_instance=RequestContext(request)) -def tag_tagged_item_list(request, tag_id): - tag = get_object_or_404(Tag, pk=tag_id) +class TagTaggedItemListView(DocumentListView): + def get_tag(self): + return get_object_or_404(Tag, pk=self.kwargs['pk']) - return document_list( - request, - object_list=Document.objects.filter(tags__in=[tag]), - title=_('documents with the tag "%s"') % tag, - extra_context={ - 'object': tag, + def get_queryset(self): + return Document.objects.filter(tags__in=[self.get_tag()]) + + def get_extra_context(self): + return { + 'title': _(u'Documents with the tag "%s"') % self.get_tag(), + 'hide_links': True, + 'multi_select_as_buttons': True, + 'object': self.get_tag(), 'object_name': _(u'tag'), } - ) def document_tags(request, document_id):