From c3c4fcb2b27591f317275def668580df90c604ec Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 2 Jul 2015 01:49:52 -0400 Subject: [PATCH] Convert index list view to CBV. --- mayan/apps/document_indexing/urls.py | 4 +-- mayan/apps/document_indexing/views.py | 42 +++++++++++++-------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/mayan/apps/document_indexing/urls.py b/mayan/apps/document_indexing/urls.py index a7a00814bb..cb3bdbae75 100644 --- a/mayan/apps/document_indexing/urls.py +++ b/mayan/apps/document_indexing/urls.py @@ -7,7 +7,7 @@ from .api_views import ( APIIndexNodeInstanceDocumentListView, APIIndexTemplateListView, APIIndexTemplateView, APIIndexView ) -from .views import SetupIndexDocumentTypesView, SetupIndexListView +from .views import IndexListView, SetupIndexDocumentTypesView, SetupIndexListView urlpatterns = patterns( @@ -23,7 +23,7 @@ urlpatterns = patterns( url(r'^setup/template/node/(?P\d+)/edit/$', 'template_node_edit', name='template_node_edit'), url(r'^setup/template/node/(?P\d+)/delete/$', 'template_node_delete', name='template_node_delete'), - url(r'^index/list/$', 'index_list', name='index_list'), + url(r'^index/list/$', IndexListView.as_view(), name='index_list'), url(r'^instance/node/(?P\d+)/$', 'index_instance_node_view', name='index_instance_node_view'), url(r'^rebuild/all/$', 'rebuild_index_instances', name='rebuild_index_instances'), diff --git a/mayan/apps/document_indexing/views.py b/mayan/apps/document_indexing/views.py index cf9041cad5..b5a4da32b9 100644 --- a/mayan/apps/document_indexing/views.py +++ b/mayan/apps/document_indexing/views.py @@ -275,31 +275,29 @@ def template_node_delete(request, node_pk): context_instance=RequestContext(request)) -# User views -def index_list(request): - """ - Show a list of enabled indexes - """ - context = { - 'title': _('Indexes'), - 'hide_links': True, - 'extra_columns': [ - {'name': _('Items'), 'attribute': encapsulate(lambda x: x.instance_root.documents.count() if x.template_root.link_documents else x.instance_root.get_children().count())}, - {'name': _('Document types'), 'attribute': 'get_document_types_names'}, - ], - } +class IndexListView(SingleObjectListView): + @staticmethod + def get_items_count(instance): + try: + if instance.template_root.link_documents: + return instance.instance_root.documents.count() + else: + return instance.instance_root.get_children().count() + except IndexInstanceNode.DoesNotExist: + return 0 queryset = Index.objects.filter(enabled=True) + object_permission = permission_document_indexing_view - try: - Permission.check_permissions(request.user, [permission_document_indexing_view]) - except PermissionDenied: - queryset = AccessControlList.objects.filter_by_access(permission_document_indexing_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 { + 'title': _('Indexes'), + 'hide_links': True, + 'extra_columns': [ + {'name': _('Items'), 'attribute': encapsulate(lambda instance: IndexListView.get_items_count(instance))}, + {'name': _('Document types'), 'attribute': 'get_document_types_names'}, + ], + } def index_instance_node_view(request, index_instance_node_pk):