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)):
|
class WorkflowAction(six.with_metaclass(WorkflowActionMetaclass, WorkflowActionBase)):
|
||||||
|
@classmethod
|
||||||
|
def clean(cls, request, form_data=None):
|
||||||
|
return form_data
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get(cls, name):
|
def get(cls, name):
|
||||||
return cls._registry[name]
|
return cls._registry[name]
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class WorkflowStateActionDynamicForm(DynamicModelForm):
|
|||||||
widgets = {'action_data': forms.widgets.HiddenInput}
|
widgets = {'action_data': forms.widgets.HiddenInput}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.request = kwargs.pop('request')
|
||||||
result = super(
|
result = super(
|
||||||
WorkflowStateActionDynamicForm, self
|
WorkflowStateActionDynamicForm, self
|
||||||
).__init__(*args, **kwargs)
|
).__init__(*args, **kwargs)
|
||||||
@@ -72,7 +73,12 @@ class WorkflowStateActionDynamicForm(DynamicModelForm):
|
|||||||
# Store only the ID of a model instance
|
# Store only the ID of a model instance
|
||||||
action_data[field['name']] = action_data[field['name']].pk
|
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)
|
data['action_data'] = json.dumps(action_data)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -250,6 +250,11 @@ class SetupWorkflowStateActionCreateView(SingleObjectDynamicFormCreateView):
|
|||||||
'workflow': self.get_object().workflow
|
'workflow': self.get_object().workflow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_form_extra_kwargs(self):
|
||||||
|
return {
|
||||||
|
'request': self.request
|
||||||
|
}
|
||||||
|
|
||||||
def get_form_schema(self):
|
def get_form_schema(self):
|
||||||
return self.get_class()().get_form_schema(request=self.request)
|
return self.get_class()().get_form_schema(request=self.request)
|
||||||
|
|
||||||
@@ -307,6 +312,11 @@ class SetupWorkflowStateActionEditView(SingleObjectDynamicFormEditView):
|
|||||||
'workflow_state': self.get_object().state,
|
'workflow_state': self.get_object().state,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_form_extra_kwargs(self):
|
||||||
|
return {
|
||||||
|
'request': self.request
|
||||||
|
}
|
||||||
|
|
||||||
def get_form_schema(self):
|
def get_form_schema(self):
|
||||||
return self.get_object().get_class_instance().get_form_schema(
|
return self.get_object().get_class_instance().get_form_schema(
|
||||||
request=self.request
|
request=self.request
|
||||||
@@ -350,7 +360,7 @@ class SetupWorkflowStateActionListView(SingleObjectListView):
|
|||||||
|
|
||||||
class SetupWorkflowStateActionSelectionView(FormView):
|
class SetupWorkflowStateActionSelectionView(FormView):
|
||||||
form_class = WorkflowActionSelectionForm
|
form_class = WorkflowActionSelectionForm
|
||||||
#TODO: access check via workflow edit perm
|
view_permission = permission_workflow_edit
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
klass = form.cleaned_data['klass']
|
klass = form.cleaned_data['klass']
|
||||||
|
|||||||
Reference in New Issue
Block a user