Convert index_setup_document_types to CBV assign remove

This commit is contained in:
Roberto Rosario
2015-04-07 03:34:47 -04:00
parent a522292ee4
commit 0476e66903
3 changed files with 37 additions and 22 deletions

View File

@@ -362,7 +362,7 @@ class AssignRemoveView(TemplateView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.unselected_list = ChoiceForm(prefix=self.LEFT_LIST_NAME, choices=self.left_list()) 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()) 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): def post(self, request, *args, **kwargs):
if '%s-submit' % self.LEFT_LIST_NAME in self.request.POST.keys(): if '%s-submit' % self.LEFT_LIST_NAME in self.request.POST.keys():

View File

@@ -7,6 +7,7 @@ from .api_views import (
APIIndexNodeInstanceDocumentListView, APIIndexTemplateListView, APIIndexNodeInstanceDocumentListView, APIIndexTemplateListView,
APIIndexTemplateView, APIIndexView APIIndexTemplateView, APIIndexView
) )
from .views import SetupIndexDocumentTypesView
urlpatterns = patterns('document_indexing.views', urlpatterns = patterns('document_indexing.views',
@@ -15,7 +16,7 @@ urlpatterns = patterns('document_indexing.views',
url(r'^setup/index/(?P<index_pk>\d+)/edit/$', 'index_setup_edit', (), 'index_setup_edit'), url(r'^setup/index/(?P<index_pk>\d+)/edit/$', 'index_setup_edit', (), 'index_setup_edit'),
url(r'^setup/index/(?P<index_pk>\d+)/delete/$', 'index_setup_delete', (), 'index_setup_delete'), url(r'^setup/index/(?P<index_pk>\d+)/delete/$', 'index_setup_delete', (), 'index_setup_delete'),
url(r'^setup/index/(?P<index_pk>\d+)/view/$', 'index_setup_view', (), 'index_setup_view'), url(r'^setup/index/(?P<index_pk>\d+)/view/$', 'index_setup_view', (), 'index_setup_view'),
url(r'^setup/index/(?P<index_pk>\d+)/document_types/$', 'index_setup_document_types', (), 'index_setup_document_types'), url(r'^setup/index/(?P<index_pk>\d+)/document_types/$', SetupIndexDocumentTypesView.as_view(), name='index_setup_document_types'),
url(r'^setup/template/node/(?P<parent_pk>\d+)/create/child/$', 'template_node_create', (), 'template_node_create'), url(r'^setup/template/node/(?P<parent_pk>\d+)/create/child/$', 'template_node_create', (), 'template_node_create'),
url(r'^setup/template/node/(?P<node_pk>\d+)/edit/$', 'template_node_edit', (), 'template_node_edit'), url(r'^setup/template/node/(?P<node_pk>\d+)/edit/$', 'template_node_edit', (), 'template_node_edit'),

View File

@@ -12,7 +12,7 @@ from django.utils.translation import ugettext_lazy as _
from acls.models import AccessEntry from acls.models import AccessEntry
from acls.utils import apply_default_acls from acls.utils import apply_default_acls
from common.utils import encapsulate, generate_choices_w_labels 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 common.widgets import two_state_template
from documents.models import Document from documents.models import Document
from documents.permissions import PERMISSION_DOCUMENT_VIEW from documents.permissions import PERMISSION_DOCUMENT_VIEW
@@ -164,28 +164,42 @@ def index_setup_view(request, index_pk):
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def index_setup_document_types(request, index_pk): class SetupIndexDocumentTypesView(AssignRemoveView):
index = get_object_or_404(Index, pk=index_pk) decode_content_type = True
try: def add(self, item):
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_INDEXING_EDIT]) self.index.document_types.add(item)
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_INDEXING_EDIT, request.user, index)
return assign_remove( def dispatch(self, request, *args, **kwargs):
request, self.index = get_object_or_404(Index, pk=self.kwargs['index_pk'])
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), try:
add_method=lambda x: index.document_types.add(x), Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_INDEXING_EDIT])
remove_method=lambda x: index.document_types.remove(x), except PermissionDenied:
left_list_title=_('Document types not in index: %s') % index, AccessEntry.objects.check_access(PERMISSION_DOCUMENT_INDEXING_EDIT, request.user, self.index)
right_list_title=_('Document types for index: %s') % index,
decode_content_type=True, self.left_list_title = _('Document types not in index: %s') % self.index
extra_context={ self.right_list_title = _('Document types for index: %s') % self.index
'index': 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'], 'navigation_object_list': ['index'],
} })
)
return data
# Node views # Node views