Convert folder_list view to a Mayan generic class based view

This commit is contained in:
Roberto Rosario
2014-09-14 14:33:26 -04:00
parent b8fe8639ec
commit 4793a64a7f
2 changed files with 37 additions and 32 deletions

View File

@@ -1,9 +1,9 @@
from django.conf.urls import patterns, url
from .views import FolderDetailView
from .views import FolderDetailView, FolderListView
urlpatterns = patterns('folders.views',
url(r'^list/$', 'folder_list', (), 'folder_list'),
url(r'^list/$', FolderListView.as_view(), name='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'),

View File

@@ -14,6 +14,7 @@ from acls.models import AccessEntry
from acls.utils import apply_default_acls
from acls.views import acl_list_for
from common.utils import encapsulate
from common.views import SingleObjectListView
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from documents.models import Document
from documents.views import DocumentListView
@@ -29,30 +30,20 @@ from .permissions import (PERMISSION_FOLDER_CREATE,
logger = logging.getLogger(__name__)
def folder_list(request, queryset=None, extra_context=None):
context = {
'title': _(u'folders'),
'multi_select_as_buttons': True,
'extra_columns': [
{'name': _(u'created'), 'attribute': 'datetime_created'},
{'name': _(u'documents'), 'attribute': encapsulate(lambda x: x.folderdocument_set.count())}
],
'hide_link': True,
}
if extra_context:
context.update(extra_context)
class FolderListView(SingleObjectListView):
model = Folder
object_permission = PERMISSION_FOLDER_VIEW
queryset = queryset if not (queryset is None) else Folder.objects.all()
try:
Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_VIEW])
except PermissionDenied:
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_VIEW, request.user, queryset)
context['object_list'] = queryset
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
def get_extra_context(self):
return {
'title': _(u'folders'),
'multi_select_as_buttons': True,
'extra_columns': [
{'name': _(u'Created'), 'attribute': 'datetime_created'},
{'name': _(u'Documents'), 'attribute': encapsulate(lambda x: x.documents.count())}
],
'hide_link': True,
}
def folder_create(request):
@@ -229,14 +220,28 @@ def document_folder_list(request, document_id):
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, request.user, document)
return folder_list(
request,
queryset=Folder.objects.filter(folderdocument__document=document),
extra_context={
'title': _(u'folders containing: %s') % document,
'object': document,
context = {
'title': _(u'Folders containing: %s') % document,
'object': document,
'multi_select_as_buttons': True,
'extra_columns': [
{'name': _(u'Created'), 'attribute': 'datetime_created'},
{'name': _(u'Documents'), 'attribute': encapsulate(lambda x: x.documents.count())}
],
'hide_link': True,
}
)
queryset=Folder.objects.filter(folderdocument__document=document)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_VIEW])
except PermissionDenied:
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_VIEW, request.user, queryset)
context['object_list'] = queryset
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
def folder_document_remove(request, folder_id, document_id=None, document_id_list=None):