Conver smart link create, edit and smart link condition list views to CBV.

This commit is contained in:
Roberto Rosario
2015-08-14 14:53:15 -04:00
parent fb705f7570
commit 0fa11810c6
2 changed files with 50 additions and 82 deletions

View File

@@ -4,7 +4,8 @@ from django.conf.urls import patterns, url
from .views import ( from .views import (
DocumentSmartLinkListView, ResolvedSmartLinkView, DocumentSmartLinkListView, ResolvedSmartLinkView,
SetupSmartLinkDocumentTypesView, SmartLinkListView SetupSmartLinkDocumentTypesView, SmartLinkConditionListView,
SmartLinkCreateView, SmartLinkEditView, SmartLinkListView
) )
urlpatterns = patterns( urlpatterns = patterns(
@@ -21,13 +22,16 @@ urlpatterns = patterns(
url( url(
r'^setup/list/$', SmartLinkListView.as_view(), name='smart_link_list' r'^setup/list/$', SmartLinkListView.as_view(), name='smart_link_list'
), ),
url(r'^setup/create/$', 'smart_link_create', name='smart_link_create'), url(
r'^setup/create/$', SmartLinkCreateView.as_view(),
name='smart_link_create'
),
url( url(
r'^setup/(?P<smart_link_pk>\d+)/delete/$', 'smart_link_delete', r'^setup/(?P<smart_link_pk>\d+)/delete/$', 'smart_link_delete',
name='smart_link_delete' name='smart_link_delete'
), ),
url( url(
r'^setup/(?P<smart_link_pk>\d+)/edit/$', 'smart_link_edit', r'^setup/(?P<pk>\d+)/edit/$', SmartLinkEditView.as_view(),
name='smart_link_edit' name='smart_link_edit'
), ),
url( url(
@@ -37,8 +41,8 @@ urlpatterns = patterns(
), ),
url( url(
r'^setup/(?P<smart_link_pk>\d+)/condition/list/$', r'^setup/(?P<pk>\d+)/condition/list/$',
'smart_link_condition_list', name='smart_link_condition_list' SmartLinkConditionListView.as_view(), name='smart_link_condition_list'
), ),
url( url(
r'^setup/(?P<smart_link_pk>\d+)/condition/create/$', r'^setup/(?P<smart_link_pk>\d+)/condition/create/$',

View File

@@ -5,7 +5,7 @@ import logging
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
@@ -13,7 +13,10 @@ 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.generics import (
AssignRemoveView, SingleObjectCreateView, 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
@@ -201,60 +204,24 @@ class DocumentSmartLinkListView(SmartLinkListView):
} }
def smart_link_create(request): class SmartLinkCreateView(SingleObjectCreateView):
Permission.check_permissions( extra_context = {'title': _('Create new smart link')}
request.user, (permission_smart_link_create,) form_class = SmartLinkForm
) post_action_redirect = reverse_lazy('linking:smart_link_list')
view_permission = permission_smart_link_create
if request.method == 'POST':
form = SmartLinkForm(request.POST)
if form.is_valid():
document_group = form.save()
messages.success(
request, _(
'Smart link: %s created successfully.'
) % document_group
)
return HttpResponseRedirect(reverse('linking:smart_link_list'))
else:
form = SmartLinkForm()
return render_to_response('appearance/generic_form.html', {
'form': form,
'title': _('Create new smart link')
}, context_instance=RequestContext(request))
def smart_link_edit(request, smart_link_pk): class SmartLinkEditView(SingleObjectEditView):
smart_link = get_object_or_404(SmartLink, pk=smart_link_pk) form_class = SmartLinkForm
model = SmartLink
post_action_redirect = reverse_lazy('linking:smart_link_list')
view_permission = permission_smart_link_edit
try: def get_extra_context(self):
Permission.check_permissions( return {
request.user, (permission_smart_link_edit,) 'object': self.get_object(),
) 'title': _('Edit smart link: %s') % self.get_object()
except PermissionDenied: }
AccessControlList.objects.check_access(
permission_smart_link_edit, request.user, smart_link
)
if request.method == 'POST':
form = SmartLinkForm(request.POST, instance=smart_link)
if form.is_valid():
smart_link = form.save()
messages.success(
request, _(
'Smart link: %s edited successfully.'
) % smart_link
)
return HttpResponseRedirect(reverse('linking:smart_link_list'))
else:
form = SmartLinkForm(instance=smart_link)
return render_to_response('appearance/generic_form.html', {
'object': smart_link,
'form': form,
'title': _('Edit smart link: %s') % smart_link
}, context_instance=RequestContext(request))
def smart_link_delete(request, smart_link_pk): def smart_link_delete(request, smart_link_pk):
@@ -305,32 +272,29 @@ def smart_link_delete(request, smart_link_pk):
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))
def smart_link_condition_list(request, smart_link_pk): class SmartLinkConditionListView(SingleObjectListView):
smart_link = get_object_or_404(SmartLink, pk=smart_link_pk) view_permission = permission_smart_link_edit
try: def get_extra_context(self):
Permission.check_permissions( return {
request.user, (permission_smart_link_edit,) 'title': _('Conditions for smart link: %s') % self.get_smart_link(),
) 'extra_columns': (
except PermissionDenied: {
AccessControlList.objects.check_access( 'name': _('Enabled'),
(permission_smart_link_edit,), request.user, smart_link 'attribute': encapsulate(
) lambda condition: two_state_template(condition.enabled)
)
},
),
'hide_link': True,
'object': self.get_smart_link(),
}
return render_to_response('appearance/generic_list.html', { def get_smart_link(self):
'title': _('Conditions for smart link: %s') % smart_link, return get_object_or_404(SmartLink, pk=self.kwargs['pk'])
'object_list': smart_link.conditions.all(),
'extra_columns': [ def get_queryset(self):
{ return self.get_smart_link().conditions.all()
'name': _('Enabled'),
'attribute': encapsulate(
lambda x: two_state_template(x.enabled)
)
},
],
'hide_link': True,
'object': smart_link,
}, context_instance=RequestContext(request))
def smart_link_condition_create(request, smart_link_pk): def smart_link_condition_create(request, smart_link_pk):