Convert index_setup_document_types to CBV assign remove
This commit is contained in:
@@ -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():
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user