From 0476e66903a08e28b38562a4b0fc13550297921d Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 7 Apr 2015 03:34:47 -0400 Subject: [PATCH] Convert index_setup_document_types to CBV assign remove --- mayan/apps/common/views.py | 2 +- mayan/apps/document_indexing/urls.py | 3 +- mayan/apps/document_indexing/views.py | 54 +++++++++++++++++---------- 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 8652eaf579..280926d4eb 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -362,7 +362,7 @@ class AssignRemoveView(TemplateView): def get(self, request, *args, **kwargs): self.unselected_list = ChoiceForm(prefix=self.LEFT_LIST_NAME, choices=self.left_list()) self.selected_list = ChoiceForm(prefix=self.RIGHT_LIST_NAME, choices=self.right_list()) - return self.render_to_response(self.get_context_data())#form=form)) + return self.render_to_response(self.get_context_data()) def post(self, request, *args, **kwargs): if '%s-submit' % self.LEFT_LIST_NAME in self.request.POST.keys(): diff --git a/mayan/apps/document_indexing/urls.py b/mayan/apps/document_indexing/urls.py index dc0147afa6..9390e318eb 100644 --- a/mayan/apps/document_indexing/urls.py +++ b/mayan/apps/document_indexing/urls.py @@ -7,6 +7,7 @@ from .api_views import ( APIIndexNodeInstanceDocumentListView, APIIndexTemplateListView, APIIndexTemplateView, APIIndexView ) +from .views import SetupIndexDocumentTypesView urlpatterns = patterns('document_indexing.views', @@ -15,7 +16,7 @@ urlpatterns = patterns('document_indexing.views', url(r'^setup/index/(?P\d+)/edit/$', 'index_setup_edit', (), 'index_setup_edit'), url(r'^setup/index/(?P\d+)/delete/$', 'index_setup_delete', (), 'index_setup_delete'), url(r'^setup/index/(?P\d+)/view/$', 'index_setup_view', (), 'index_setup_view'), - url(r'^setup/index/(?P\d+)/document_types/$', 'index_setup_document_types', (), 'index_setup_document_types'), + url(r'^setup/index/(?P\d+)/document_types/$', SetupIndexDocumentTypesView.as_view(), name='index_setup_document_types'), url(r'^setup/template/node/(?P\d+)/create/child/$', 'template_node_create', (), 'template_node_create'), url(r'^setup/template/node/(?P\d+)/edit/$', 'template_node_edit', (), 'template_node_edit'), diff --git a/mayan/apps/document_indexing/views.py b/mayan/apps/document_indexing/views.py index d0e38d1f51..53d0a7d943 100644 --- a/mayan/apps/document_indexing/views.py +++ b/mayan/apps/document_indexing/views.py @@ -12,7 +12,7 @@ from django.utils.translation import ugettext_lazy as _ from acls.models import AccessEntry from acls.utils import apply_default_acls from common.utils import encapsulate, generate_choices_w_labels -from common.views import assign_remove +from common.views import AssignRemoveView from common.widgets import two_state_template from documents.models import Document from documents.permissions import PERMISSION_DOCUMENT_VIEW @@ -164,28 +164,42 @@ def index_setup_view(request, index_pk): context_instance=RequestContext(request)) -def index_setup_document_types(request, index_pk): - index = get_object_or_404(Index, pk=index_pk) +class SetupIndexDocumentTypesView(AssignRemoveView): + decode_content_type = True - try: - Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_INDEXING_EDIT]) - except PermissionDenied: - AccessEntry.objects.check_access(PERMISSION_DOCUMENT_INDEXING_EDIT, request.user, index) + def add(self, item): + self.index.document_types.add(item) - return assign_remove( - request, - left_list=lambda: generate_choices_w_labels(index.get_document_types_not_in_index(), display_object_type=False), - right_list=lambda: generate_choices_w_labels(index.document_types.all(), display_object_type=False), - add_method=lambda x: index.document_types.add(x), - remove_method=lambda x: index.document_types.remove(x), - left_list_title=_('Document types not in index: %s') % index, - right_list_title=_('Document types for index: %s') % index, - decode_content_type=True, - extra_context={ - 'index': index, + def dispatch(self, request, *args, **kwargs): + self.index = get_object_or_404(Index, pk=self.kwargs['index_pk']) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_INDEXING_EDIT]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_DOCUMENT_INDEXING_EDIT, request.user, self.index) + + self.left_list_title = _('Document types not in index: %s') % self.index + self.right_list_title = _('Document types for index: %s') % self.index + + return super(SetupIndexDocumentTypesView, self).dispatch(request, *args, **kwargs) + + def left_list(self): + return generate_choices_w_labels(self.index.get_document_types_not_in_index(), display_object_type=False) + + def right_list(self): + return generate_choices_w_labels(self.index.document_types.all(), display_object_type=False) + + def remove(self, item): + self.index.document_types.remove(item) + + def get_context_data(self, **kwargs): + data = super(SetupIndexDocumentTypesView, self).get_context_data(**kwargs) + data.update({ + 'index': self.index, 'navigation_object_list': ['index'], - } - ) + }) + + return data # Node views