diff --git a/HISTORY.rst b/HISTORY.rst index d42863a004..7bbb67c7ec 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -288,6 +288,8 @@ * Disable hiding page navigation on idle. * Display namespace in the transition trigger view. * Sort events list in the transition trigger view. +* Add support for form media to DynamicFormMixin. +* Fix tag attach and remove action form media. 3.1.11 (2019-04-XX) =================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index 8bd8157e82..c19c9bc8ac 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -717,6 +717,8 @@ Other changes - Disable hiding page navigation on idle. - Display namespace in the transition trigger view. - Sort events list in the transition trigger view. +- Add support for form media to DynamicFormMixin. +- Fix tag attach and remove action form media. Removals diff --git a/mayan/apps/common/forms.py b/mayan/apps/common/forms.py index 791f2f8f9d..ad711c0421 100644 --- a/mayan/apps/common/forms.py +++ b/mayan/apps/common/forms.py @@ -173,6 +173,11 @@ class DynamicFormMixin(object): self.fields[field_name] = field_class(**kwargs) + @property + def media(self): + return forms.Media(**self.schema.get('media', {})) + + class DynamicForm(DynamicFormMixin, forms.Form): pass diff --git a/mayan/apps/document_states/classes.py b/mayan/apps/document_states/classes.py index b06de1c2cf..e95fccdbf9 100644 --- a/mayan/apps/document_states/classes.py +++ b/mayan/apps/document_states/classes.py @@ -78,7 +78,8 @@ class WorkflowAction(six.with_metaclass(WorkflowActionMetaclass, WorkflowActionB def get_form_schema(self, request=None): result = { 'fields': self.fields or (), - 'widgets': getattr(self, 'widgets', {}) + 'media': getattr(self, 'media', {}), + 'widgets': getattr(self, 'widgets', {}), } if hasattr(self, 'field_order'): diff --git a/mayan/apps/tags/workflow_actions.py b/mayan/apps/tags/workflow_actions.py index 31d50c757b..f30e93d2ab 100644 --- a/mayan/apps/tags/workflow_actions.py +++ b/mayan/apps/tags/workflow_actions.py @@ -24,6 +24,9 @@ class AttachTagAction(WorkflowAction): }, } label = _('Attach tag') + media = { + 'js': ('tags/js/tags_form.js',) + } widgets = { 'tags': { 'class': 'mayan.apps.tags.widgets.TagFormWidget', 'kwargs': { @@ -33,6 +36,10 @@ class AttachTagAction(WorkflowAction): } permission = permission_tag_attach + def execute(self, context): + for tag in self.get_tags(): + tag.attach_to(document=context['document']) + def get_form_schema(self, request): user = request.user logger.debug('user: %s', user) @@ -46,16 +53,13 @@ class AttachTagAction(WorkflowAction): return { 'fields': self.fields, + 'media': self.media, '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.get_tags(): - tag.attach_to(document=context['document']) - class RemoveTagAction(AttachTagAction): fields = {