Workflows: Don't capture form exceptions

Instead of capturing the form save exceptions in the subclass
let the base class do the work.

Use the base class get_instance_extra_data method to avoid
some code repetition.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2018-12-09 15:02:33 -04:00
parent 6832450221
commit 278fdc3c9a

View File

@@ -2,7 +2,6 @@ from __future__ import absolute_import, unicode_literals
from django.contrib import messages
from django.db import transaction
from django.db.utils import IntegrityError
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.template import RequestContext
@@ -427,6 +426,9 @@ class SetupWorkflowStateCreateView(SingleObjectCreateView):
) % self.get_workflow()
}
def get_instance_extra_data(self):
return {'workflow': self.get_workflow()}
def get_object_list(self):
return self.get_workflow().states.all()
@@ -443,12 +445,6 @@ class SetupWorkflowStateCreateView(SingleObjectCreateView):
)
return workflow
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.workflow = self.get_workflow()
self.object.save()
return super(SetupWorkflowStateCreateView, self).form_valid(form)
class SetupWorkflowStateDeleteView(SingleObjectDeleteView):
model = WorkflowState
@@ -543,21 +539,6 @@ class SetupWorkflowStateListView(SingleObjectListView):
class SetupWorkflowTransitionCreateView(SingleObjectCreateView):
form_class = WorkflowTransitionForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.workflow = self.get_workflow()
try:
self.object.save()
except IntegrityError:
messages.error(
self.request, _('Unable to save transition; integrity error.')
)
return super(
SetupWorkflowTransitionCreateView, self
).form_invalid(form)
else:
return HttpResponseRedirect(self.get_success_url())
def get_extra_context(self):
return {
'object': self.get_workflow(),
@@ -573,6 +554,9 @@ class SetupWorkflowTransitionCreateView(SingleObjectCreateView):
kwargs['workflow'] = self.get_workflow()
return kwargs
def get_instance_extra_data(self):
return {'workflow': self.get_workflow()}
def get_object_list(self):
return self.get_workflow().transitions.all()