diff --git a/mayan/apps/document_states/classes.py b/mayan/apps/document_states/classes.py index f86a8100c2..9a9a74ffb8 100644 --- a/mayan/apps/document_states/classes.py +++ b/mayan/apps/document_states/classes.py @@ -68,6 +68,9 @@ class WorkflowAction(six.with_metaclass(WorkflowActionMetaclass, WorkflowActionB app.name, exception ) + def __init__(self, form_data=None): + self.form_data = form_data + def get_form_schema(self, request=None): return { 'fields': self.fields or (), diff --git a/mayan/apps/document_states/models.py b/mayan/apps/document_states/models.py index d37af04b2c..9edb46202e 100644 --- a/mayan/apps/document_states/models.py +++ b/mayan/apps/document_states/models.py @@ -253,7 +253,7 @@ class WorkflowStateAction(models.Model): return self.get_class().label def get_class_instance(self): - return self.get_class()(**self.loads()) + return self.get_class()(form_data=self.loads()) def loads(self): return json.loads(self.action_data) diff --git a/mayan/apps/document_states/workflow_actions.py b/mayan/apps/document_states/workflow_actions.py index 0b69b78fcd..53b85b8317 100644 --- a/mayan/apps/document_states/workflow_actions.py +++ b/mayan/apps/document_states/workflow_actions.py @@ -54,17 +54,10 @@ class HTTPPostAction(WorkflowAction): } } - def __init__(self, url=None, payload=None): - self.url = url - self.payload = payload - - def get_form_schema(self, request): - return { - 'fields': self.fields, - 'widgets': self.widgets - } - def execute(self, context): + self.url = self.form_data.get('url') + self.payload = self.form_data.get('payload') + try: url = Template(self.url).render( context=Context(context) diff --git a/mayan/apps/tags/workflow_actions.py b/mayan/apps/tags/workflow_actions.py index ddf786d9c7..bf3cc8a8be 100644 --- a/mayan/apps/tags/workflow_actions.py +++ b/mayan/apps/tags/workflow_actions.py @@ -33,12 +33,6 @@ class AttachTagAction(WorkflowAction): } } - def __init__(self, tags=None): - if tags: - self.tags = Tag.objects.filter(pk__in=tags) - else: - self.tags = Tag.objects.none() - def get_form_schema(self, request): user = request.user logger.debug('user: %s', user) @@ -55,14 +49,17 @@ class AttachTagAction(WorkflowAction): 'widgets': self.widgets } + def get_tags(self): + return Tag.objects.filter(pk__in=self.form_data.get('tags', ())) + def execute(self, context): - for tag in self.tags: + for tag in self.get_tags(): tag.attach_to( document=context['entry_log'].workflow_instance.document ) -class RemoveTagAction(WorkflowAction): +class RemoveTagAction(AttachTagAction): fields = ( { 'name': 'tags', 'label': _('Tags'), @@ -73,39 +70,9 @@ class RemoveTagAction(WorkflowAction): }, ) label = _('Remove tag') - widgets = { - 'tags': { - 'class': 'tags.widgets.TagFormWidget', 'kwargs': { - 'attrs': {'class': 'select2-tags'}, - 'queryset': Tag.objects.none() - } - } - } - - def __init__(self, tags=None): - if tags: - self.tags = Tag.objects.filter(pk__in=tags) - else: - self.tags = Tag.objects.none() - - def get_form_schema(self, request): - user = request.user - logger.debug('user: %s', user) - - queryset = AccessControlList.objects.filter_by_access( - permission_tag_remove, user, queryset=Tag.objects.all() - ) - - self.fields[0]['kwargs']['queryset'] = queryset - self.widgets['tags']['kwargs']['queryset'] = queryset - - return { - 'fields': self.fields, - 'widgets': self.widgets - } def execute(self, context): - for tag in self.tags: + for tag in self.get_tags(): tag.remove_from( document=context['entry_log'].workflow_instance.document )