Implement a .clean method for the WorkflowAction class.
Pass the view request to the form so that it can be passed to the WorkflowAction clean method. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -44,6 +44,10 @@ class WorkflowActionBase(object):
|
||||
|
||||
|
||||
class WorkflowAction(six.with_metaclass(WorkflowActionMetaclass, WorkflowActionBase)):
|
||||
@classmethod
|
||||
def clean(cls, request, form_data=None):
|
||||
return form_data
|
||||
|
||||
@classmethod
|
||||
def get(cls, name):
|
||||
return cls._registry[name]
|
||||
|
||||
@@ -43,6 +43,7 @@ class WorkflowStateActionDynamicForm(DynamicModelForm):
|
||||
widgets = {'action_data': forms.widgets.HiddenInput}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.request = kwargs.pop('request')
|
||||
result = super(
|
||||
WorkflowStateActionDynamicForm, self
|
||||
).__init__(*args, **kwargs)
|
||||
@@ -72,7 +73,12 @@ class WorkflowStateActionDynamicForm(DynamicModelForm):
|
||||
# Store only the ID of a model instance
|
||||
action_data[field['name']] = action_data[field['name']].pk
|
||||
|
||||
data['action_data'] = action_data
|
||||
data = self.instance.get_class().clean(
|
||||
form_data=data, request=self.request
|
||||
)
|
||||
data['action_data'] = json.dumps(action_data)
|
||||
|
||||
return data
|
||||
|
||||
|
||||
|
||||
@@ -250,6 +250,11 @@ class SetupWorkflowStateActionCreateView(SingleObjectDynamicFormCreateView):
|
||||
'workflow': self.get_object().workflow
|
||||
}
|
||||
|
||||
def get_form_extra_kwargs(self):
|
||||
return {
|
||||
'request': self.request
|
||||
}
|
||||
|
||||
def get_form_schema(self):
|
||||
return self.get_class()().get_form_schema(request=self.request)
|
||||
|
||||
@@ -307,6 +312,11 @@ class SetupWorkflowStateActionEditView(SingleObjectDynamicFormEditView):
|
||||
'workflow_state': self.get_object().state,
|
||||
}
|
||||
|
||||
def get_form_extra_kwargs(self):
|
||||
return {
|
||||
'request': self.request
|
||||
}
|
||||
|
||||
def get_form_schema(self):
|
||||
return self.get_object().get_class_instance().get_form_schema(
|
||||
request=self.request
|
||||
@@ -350,7 +360,7 @@ class SetupWorkflowStateActionListView(SingleObjectListView):
|
||||
|
||||
class SetupWorkflowStateActionSelectionView(FormView):
|
||||
form_class = WorkflowActionSelectionForm
|
||||
#TODO: access check via workflow edit perm
|
||||
view_permission = permission_workflow_edit
|
||||
|
||||
def form_valid(self, form):
|
||||
klass = form.cleaned_data['klass']
|
||||
|
||||
Reference in New Issue
Block a user