Convert transformation views to CBV.
This commit is contained in:
@@ -2,10 +2,15 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from django.conf.urls import patterns, url
|
from django.conf.urls import patterns, url
|
||||||
|
|
||||||
|
from .views import (
|
||||||
|
TransformationCreateView, TransformationDeleteView, TransformationEditView,
|
||||||
|
TransformationListView
|
||||||
|
)
|
||||||
|
|
||||||
urlpatterns = patterns(
|
urlpatterns = patterns(
|
||||||
'converter.views',
|
'converter.views',
|
||||||
url(r'^create_for/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/$', 'transformation_create', name='transformation_create'),
|
url(r'^create_for/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/$', TransformationCreateView.as_view(), name='transformation_create'),
|
||||||
url(r'^list_for/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/$', 'transformation_list', name='transformation_list'),
|
url(r'^list_for/(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/$', TransformationListView.as_view(), name='transformation_list'),
|
||||||
url(r'^delete/(?P<object_id>\d+)/$', 'transformation_delete', name='transformation_delete'),
|
url(r'^delete/(?P<pk>\d+)/$', TransformationDeleteView.as_view(), name='transformation_delete'),
|
||||||
url(r'^edit/(?P<object_id>\d+)/$', 'transformation_edit', name='transformation_edit'),
|
url(r'^edit/(?P<pk>\d+)/$', TransformationEditView.as_view(), name='transformation_edit'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,20 +2,20 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.contrib import messages
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.http import Http404, HttpResponseRedirect
|
from django.shortcuts import get_object_or_404
|
||||||
from django.shortcuts import get_object_or_404, render_to_response
|
|
||||||
from django.template import RequestContext
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
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 (
|
||||||
|
SingleObjectCreateView, SingleObjectDeleteView, SingleObjectEditView,
|
||||||
|
SingleObjectListView
|
||||||
|
)
|
||||||
from permissions import Permission
|
from permissions import Permission
|
||||||
|
|
||||||
from .forms import TransformationForm
|
|
||||||
from .models import Transformation
|
from .models import Transformation
|
||||||
from .permissions import (
|
from .permissions import (
|
||||||
permission_transformation_create, permission_transformation_delete,
|
permission_transformation_create, permission_transformation_delete,
|
||||||
@@ -25,117 +25,144 @@ from .permissions import (
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def transformation_list(request, app_label, model, object_id):
|
class TransformationDeleteView(SingleObjectDeleteView):
|
||||||
content_type = get_object_or_404(ContentType, app_label=app_label, model=model)
|
model = Transformation
|
||||||
|
|
||||||
try:
|
def dispatch(self, request, *args, **kwargs):
|
||||||
content_object = content_type.get_object_for_this_type(pk=object_id)
|
self.transformation = get_object_or_404(Transformation, pk=self.kwargs['pk'])
|
||||||
except content_type.model_class().DoesNotExist:
|
|
||||||
raise Http404
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Permission.check_permissions(request.user, [permission_transformation_view])
|
Permission.check_permissions(request.user, [permission_transformation_delete])
|
||||||
except PermissionDenied:
|
except PermissionDenied:
|
||||||
AccessControlList.objects.check_access(permission_transformation_view, request.user, content_object)
|
AccessControlList.objects.check_access(permission_transformation_delete, request.user, self.transformation.content_object)
|
||||||
|
|
||||||
context = {
|
return super(TransformationDeleteView, self).dispatch(request, *args, **kwargs)
|
||||||
'object_list': Transformation.objects.get_for_model(content_object),
|
|
||||||
'content_object': content_object,
|
def get_post_action_redirect(self):
|
||||||
'navigation_object_list': ['content_object'],
|
return reverse('converter:transformation_list', args=[self.transformation.content_type.app_label, self.transformation.content_type.model, self.transformation.object_id])
|
||||||
'title': _('Transformations for: %s') % content_object,
|
|
||||||
'extra_columns': [
|
def get_extra_context(self):
|
||||||
{'name': _('Order'), 'attribute': 'order'},
|
return {
|
||||||
{'name': _('Transformation'), 'attribute': encapsulate(lambda x: unicode(x))},
|
'content_object': self.transformation.content_object,
|
||||||
{'name': _('Arguments'), 'attribute': 'arguments'}
|
'navigation_object_list': ['content_object', 'transformation'],
|
||||||
],
|
'previous': reverse('converter:transformation_list', args=[self.transformation.content_type.app_label, self.transformation.content_type.model, self.transformation.object_id]),
|
||||||
'hide_link': True,
|
'title': _('Delete transformation "%(transformation)s" for: %(content_object)s?') % {
|
||||||
'hide_object': True,
|
'transformation': self.transformation,
|
||||||
}
|
'content_object': self.transformation.content_object},
|
||||||
return render_to_response(
|
'transformation': self.transformation,
|
||||||
'appearance/generic_list.html', context, context_instance=RequestContext(request)
|
}
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def transformation_create(request, app_label, model, object_id):
|
class TransformationCreateView(SingleObjectCreateView):
|
||||||
content_type = get_object_or_404(ContentType, app_label=app_label, model=model)
|
fields = ('name', 'arguments', 'order')
|
||||||
|
|
||||||
try:
|
def dispatch(self, request, *args, **kwargs):
|
||||||
content_object = content_type.get_object_for_this_type(pk=object_id)
|
content_type = get_object_or_404(ContentType, app_label=self.kwargs['app_label'], model=self.kwargs['model'])
|
||||||
except content_type.model_class().DoesNotExist:
|
|
||||||
raise Http404
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Permission.check_permissions(request.user, [permission_transformation_create])
|
self.content_object = content_type.get_object_for_this_type(pk=self.kwargs['object_id'])
|
||||||
except PermissionDenied:
|
except content_type.model_class().DoesNotExist:
|
||||||
AccessControlList.objects.check_access(permission_transformation_create, request.user, content_object)
|
raise Http404
|
||||||
|
|
||||||
if request.method == 'POST':
|
try:
|
||||||
form = TransformationForm(request.POST, initial={'content_object': content_object})
|
Permission.check_permissions(request.user, [permission_transformation_create])
|
||||||
if form.is_valid():
|
except PermissionDenied:
|
||||||
instance = form.save(commit=False)
|
AccessControlList.objects.check_access(permission_transformation_create, request.user, self.content_object)
|
||||||
instance.content_object = content_object
|
|
||||||
|
return super(TransformationCreateView, self).dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
instance = form.save(commit=False)
|
||||||
|
instance.content_object = self.content_object
|
||||||
|
try:
|
||||||
|
instance.full_clean()
|
||||||
instance.save()
|
instance.save()
|
||||||
messages.success(request, _('Transformation created successfully.'))
|
except:
|
||||||
return HttpResponseRedirect(reverse('converter:transformation_list', args=[app_label, model, object_id]))
|
return super(TransformationCreateView, self).form_invalid(form)
|
||||||
else:
|
else:
|
||||||
form = TransformationForm(initial={'content_object': content_object})
|
return super(TransformationCreateView, self).form_valid(form)
|
||||||
|
|
||||||
return render_to_response('appearance/generic_form.html', {
|
def get_post_action_redirect(self):
|
||||||
'form': form,
|
return reverse('converter:transformation_list', args=[self.kwargs['app_label'], self.kwargs['model'], self.kwargs['object_id']])
|
||||||
'content_object': content_object,
|
|
||||||
'navigation_object_list': ['content_object'],
|
def get_queryset(self):
|
||||||
'title': _('Create new transformation for: %s') % content_object,
|
return Transformation.objects.get_for_model(self.content_object)
|
||||||
}, context_instance=RequestContext(request))
|
|
||||||
|
def get_extra_context(self):
|
||||||
|
return {
|
||||||
|
'content_object': self.content_object,
|
||||||
|
'navigation_object_list': ['content_object'],
|
||||||
|
'title': _('Create new transformation for: %s') % self.content_object,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def transformation_delete(request, object_id):
|
class TransformationEditView(SingleObjectEditView):
|
||||||
transformation = get_object_or_404(Transformation, pk=object_id)
|
fields = ('name', 'arguments', 'order')
|
||||||
|
model = Transformation
|
||||||
|
|
||||||
try:
|
def dispatch(self, request, *args, **kwargs):
|
||||||
Permission.check_permissions(request.user, [permission_transformation_delete])
|
self.transformation = get_object_or_404(Transformation, pk=self.kwargs['pk'])
|
||||||
except PermissionDenied:
|
|
||||||
AccessControlList.objects.check_access(permission_transformation_delete, request.user, transformation.content_object)
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
try:
|
||||||
transformation.delete()
|
Permission.check_permissions(request.user, [permission_transformation_edit])
|
||||||
messages.success(request, _('Transformation deleted successfully.'))
|
except PermissionDenied:
|
||||||
return HttpResponseRedirect(reverse('converter:transformation_list', args=[transformation.content_type.app_label, transformation.content_type.model, transformation.object_id]))
|
AccessControlList.objects.check_access(permission_transformation_edit, request.user, self.transformation.content_object)
|
||||||
|
|
||||||
return render_to_response('appearance/generic_confirm.html', {
|
return super(TransformationEditView, self).dispatch(request, *args, **kwargs)
|
||||||
'content_object': transformation.content_object,
|
|
||||||
'delete_view': True,
|
def form_valid(self, form):
|
||||||
'navigation_object_list': ['content_object', 'transformation'],
|
instance = form.save(commit=False)
|
||||||
'previous': reverse('converter:transformation_list', args=[transformation.content_type.app_label, transformation.content_type.model, transformation.object_id]),
|
try:
|
||||||
'title': _('Are you sure you wish to delete transformation "%(transformation)s" for: %(content_object)s') % {
|
instance.full_clean()
|
||||||
'transformation': transformation,
|
instance.save()
|
||||||
'content_object': transformation.content_object},
|
except:
|
||||||
'transformation': transformation,
|
return super(TransformationEditView, self).form_invalid(form)
|
||||||
}, context_instance=RequestContext(request))
|
else:
|
||||||
|
return super(TransformationEditView, self).form_valid(form)
|
||||||
|
|
||||||
|
def get_post_action_redirect(self):
|
||||||
|
return reverse('converter:transformation_list', args=[self.transformation.content_type.app_label, self.transformation.content_type.model, self.transformation.object_id])
|
||||||
|
|
||||||
|
def get_extra_context(self):
|
||||||
|
return {
|
||||||
|
'content_object': self.transformation.content_object,
|
||||||
|
'navigation_object_list': ['content_object', 'transformation'],
|
||||||
|
'title': _('Edit transformation "%(transformation)s" for: %(content_object)s') % {
|
||||||
|
'transformation': self.transformation,
|
||||||
|
'content_object': self.transformation.content_object},
|
||||||
|
'transformation': self.transformation,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def transformation_edit(request, object_id):
|
class TransformationListView(SingleObjectListView):
|
||||||
transformation = get_object_or_404(Transformation, pk=object_id)
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
content_type = get_object_or_404(ContentType, app_label=self.kwargs['app_label'], model=self.kwargs['model'])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Permission.check_permissions(request.user, [permission_transformation_edit])
|
self.content_object = content_type.get_object_for_this_type(pk=self.kwargs['object_id'])
|
||||||
except PermissionDenied:
|
except content_type.model_class().DoesNotExist:
|
||||||
AccessControlList.objects.check_access(permission_transformation_edit, request.user, transformation.content_object)
|
raise Http404
|
||||||
|
|
||||||
if request.method == 'POST':
|
try:
|
||||||
form = TransformationForm(request.POST, instance=transformation)
|
Permission.check_permissions(request.user, [permission_transformation_view])
|
||||||
if form.is_valid():
|
except PermissionDenied:
|
||||||
form.save()
|
AccessControlList.objects.check_access(permission_transformation_view, request.user, self.content_object)
|
||||||
messages.success(request, _('Transformation edited successfully.'))
|
|
||||||
return HttpResponseRedirect(reverse('converter:transformation_list', args=[transformation.content_type.app_label, transformation.content_type.model, transformation.object_id]))
|
|
||||||
else:
|
|
||||||
form = TransformationForm(instance=transformation)
|
|
||||||
|
|
||||||
return render_to_response('appearance/generic_form.html', {
|
return super(TransformationListView, self).dispatch(request, *args, **kwargs)
|
||||||
'content_object': transformation.content_object,
|
|
||||||
'form': form,
|
def get_queryset(self):
|
||||||
'navigation_object_list': ['content_object', 'transformation'],
|
return Transformation.objects.get_for_model(self.content_object)
|
||||||
'title': _('Edit transformation "%(transformation)s" for: %(content_object)s') % {
|
|
||||||
'transformation': transformation,
|
def get_extra_context(self):
|
||||||
'content_object': transformation.content_object},
|
return {
|
||||||
'transformation': transformation,
|
'content_object': self.content_object,
|
||||||
}, context_instance=RequestContext(request))
|
'extra_columns': [
|
||||||
|
{'name': _('Order'), 'attribute': 'order'},
|
||||||
|
{'name': _('Transformation'), 'attribute': encapsulate(lambda transformation: unicode(transformation))},
|
||||||
|
{'name': _('Arguments'), 'attribute': 'arguments'}
|
||||||
|
],
|
||||||
|
'hide_link': True,
|
||||||
|
'hide_object': True,
|
||||||
|
'navigation_object_list': ['content_object'],
|
||||||
|
'title': _('Transformations for: %s') % self.content_object,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user