Convert the folder documents view and the tag folders view to class based views

This commit is contained in:
Roberto Rosario
2014-09-13 02:24:39 -04:00
parent ce9e8b609e
commit 9f6cc1ef33
4 changed files with 38 additions and 31 deletions

View File

@@ -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<folder_id>\d+)/edit/$', 'folder_edit', (), 'folder_edit'),
url(r'^(?P<folder_id>\d+)/delete/$', 'folder_delete', (), 'folder_delete'),
url(r'^(?P<folder_id>\d+)/$', 'folder_view', (), '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', (), 'folder_document_multiple_remove'),
url(r'^document/(?P<document_id>\d+)/folder/add/$', 'folder_add_document', (), 'folder_add_document'),

View File

@@ -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):

View File

@@ -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<tag_id>\d+)/delete/$', 'tag_delete', (), 'tag_delete'),
url(r'^(?P<tag_id>\d+)/edit/$', 'tag_edit', (), 'tag_edit'),
url(r'^(?P<tag_id>\d+)/tagged_item/list/$', 'tag_tagged_item_list', (), 'tag_tagged_item_list'),
url(r'^(?P<pk>\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<document_id>\d+)/$', 'single_document_multiple_tag_remove', (), 'single_document_multiple_tag_remove'),

View File

@@ -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):