Change the index creation, edit and deletion views to CBV. Remove unused IndexForm.

This commit is contained in:
Roberto Rosario
2015-07-09 02:25:23 -04:00
parent a5b7747619
commit 036a55065c
3 changed files with 38 additions and 89 deletions

View File

@@ -8,15 +8,6 @@ from documents.models import Document
from .models import Index, IndexTemplateNode from .models import Index, IndexTemplateNode
class IndexForm(forms.ModelForm):
"""
A standard model form to allow users to create a new index
"""
class Meta:
model = Index
exclude = ('document_types',)
class IndexTemplateNodeForm(forms.ModelForm): class IndexTemplateNodeForm(forms.ModelForm):
""" """
A standard model form to allow users to create a new index template node A standard model form to allow users to create a new index template node

View File

@@ -9,15 +9,16 @@ from .api_views import (
) )
from .views import ( from .views import (
IndexInstanceNodeView, IndexListView, SetupIndexDocumentTypesView, IndexInstanceNodeView, IndexListView, SetupIndexDocumentTypesView,
SetupIndexListView, SetupIndexCreateView, SetupIndexDeleteView, SetupIndexEditView,
SetupIndexListView
) )
urlpatterns = patterns( urlpatterns = patterns(
'document_indexing.views', 'document_indexing.views',
url(r'^setup/index/list/$', SetupIndexListView.as_view(), name='index_setup_list'), url(r'^setup/index/list/$', SetupIndexListView.as_view(), name='index_setup_list'),
url(r'^setup/index/create/$', 'index_setup_create', name='index_setup_create'), url(r'^setup/index/create/$', SetupIndexCreateView.as_view(), name='index_setup_create'),
url(r'^setup/index/(?P<index_pk>\d+)/edit/$', 'index_setup_edit', name='index_setup_edit'), url(r'^setup/index/(?P<pk>\d+)/edit/$', SetupIndexEditView.as_view(), name='index_setup_edit'),
url(r'^setup/index/(?P<index_pk>\d+)/delete/$', 'index_setup_delete', name='index_setup_delete'), url(r'^setup/index/(?P<pk>\d+)/delete/$', SetupIndexDeleteView.as_view(), name='index_setup_delete'),
url(r'^setup/index/(?P<index_pk>\d+)/view/$', 'index_setup_view', name='index_setup_view'), url(r'^setup/index/(?P<index_pk>\d+)/view/$', 'index_setup_view', name='index_setup_view'),
url(r'^setup/index/(?P<pk>\d+)/document_types/$', SetupIndexDocumentTypesView.as_view(), name='index_setup_document_types'), url(r'^setup/index/(?P<pk>\d+)/document_types/$', SetupIndexDocumentTypesView.as_view(), name='index_setup_document_types'),

View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext from django.template import RequestContext
@@ -12,14 +12,17 @@ from django.utils.translation import ugettext_lazy as _
from acls.models import AccessControlList from acls.models import AccessControlList
from common.utils import encapsulate from common.utils import encapsulate
from common.views import AssignRemoveView, SingleObjectListView from common.views import (
AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView,
SingleObjectEditView, SingleObjectListView
)
from common.widgets import two_state_template from common.widgets import two_state_template
from documents.models import Document, DocumentType from documents.models import Document, DocumentType
from documents.permissions import permission_document_view from documents.permissions import permission_document_view
from documents.views import DocumentListView from documents.views import DocumentListView
from permissions import Permission from permissions import Permission
from .forms import IndexForm, IndexTemplateNodeForm from .forms import IndexTemplateNodeForm
from .models import Index, IndexInstanceNode, IndexTemplateNode from .models import Index, IndexInstanceNode, IndexTemplateNode
from .permissions import ( from .permissions import (
permission_document_indexing_create, permission_document_indexing_delete, permission_document_indexing_create, permission_document_indexing_delete,
@@ -32,6 +35,14 @@ from .widgets import index_instance_item_link, get_breadcrumbs, node_level
# Setup views # Setup views
class SetupIndexCreateView(SingleObjectCreateView):
extra_context = {'title': _('Create index')}
fields = ('label', 'enabled')
model = Index
post_action_redirect = reverse_lazy('indexing:index_setup_list')
view_permission = permission_document_indexing_create
class SetupIndexListView(SingleObjectListView): class SetupIndexListView(SingleObjectListView):
model = Index model = Index
view_permission = permission_document_indexing_setup view_permission = permission_document_indexing_setup
@@ -47,83 +58,29 @@ class SetupIndexListView(SingleObjectListView):
} }
def index_setup_create(request): class SetupIndexEditView(SingleObjectEditView):
Permission.check_permissions(request.user, [permission_document_indexing_create]) fields = ('label', 'enabled')
model = Index
post_action_redirect = reverse_lazy('indexing:index_setup_list')
view_permission = permission_document_indexing_edit
if request.method == 'POST': def get_extra_context(self):
form = IndexForm(request.POST) return {
if form.is_valid(): 'title': _('Edit index: %s') % self.get_object(),
form.save() 'object': self.get_object(),
messages.success(request, _('Index created successfully.')) }
return HttpResponseRedirect(reverse('indexing:index_setup_list'))
else:
form = IndexForm()
return render_to_response('appearance/generic_form.html', {
'title': _('Create index'),
'form': form,
}, context_instance=RequestContext(request))
def index_setup_edit(request, index_pk): class SetupIndexDeleteView(SingleObjectDeleteView):
index = get_object_or_404(Index, pk=index_pk) model = Index
post_action_redirect = reverse_lazy('indexing:index_setup_list')
view_permission = permission_document_indexing_delete
try: def get_extra_context(self):
Permission.check_permissions(request.user, [permission_document_indexing_edit]) return {
except PermissionDenied: 'title': _('Delete the index: %s?') % self.get_object(),
AccessControlList.objects.check_access(permission_document_indexing_create, request.user, index) 'object': self.get_object(),
}
if request.method == 'POST':
form = IndexForm(request.POST, instance=index)
if form.is_valid():
form.save()
messages.success(request, _('Index edited successfully'))
return HttpResponseRedirect(reverse('indexing:index_setup_list'))
else:
form = IndexForm(instance=index)
return render_to_response('appearance/generic_form.html', {
'title': _('Edit index: %s') % index,
'form': form,
'index': index,
'navigation_object_list': ['index'],
}, context_instance=RequestContext(request))
def index_setup_delete(request, index_pk):
index = get_object_or_404(Index, pk=index_pk)
try:
Permission.check_permissions(request.user, [permission_document_indexing_delete])
except PermissionDenied:
AccessControlList.objects.check_access(permission_document_indexing_delete, request.user, index)
post_action_redirect = reverse('indexing:index_setup_list')
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
if request.method == 'POST':
try:
index.delete()
messages.success(request, _('Index: %s deleted successfully.') % index)
except Exception as exception:
messages.error(request, _('Index: %(index)s delete error: %(error)s') % {
'index': index, 'error': exception})
return HttpResponseRedirect(next)
context = {
'index': index,
'navigation_object_list': ['index'],
'delete_view': True,
'previous': previous,
'next': next,
'title': _('Are you sure you with to delete the index: %s?') % index,
}
return render_to_response('appearance/generic_confirm.html', context,
context_instance=RequestContext(request))
def index_setup_view(request, index_pk): def index_setup_view(request, index_pk):