diff --git a/HISTORY.rst b/HISTORY.rst index 23b3c01944..64f2b3eb2d 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -3,6 +3,8 @@ - Fix transformation label display in transformation create view. - Remove supervisor environment variable expansion. - Don't exit GitLab makefile target if the branch to delete doesn't exist. +- Automatically create transformations from the selection form that + doesn't have arguments. 3.3.2 (2019-12-05) ================== diff --git a/mayan/apps/converter/views.py b/mayan/apps/converter/views.py index b47e4bc7fd..43ba459390 100644 --- a/mayan/apps/converter/views.py +++ b/mayan/apps/converter/views.py @@ -255,20 +255,45 @@ class TransformationSelectView( template_name = 'appearance/generic_form.html' def form_valid(self, form): - return HttpResponseRedirect( - redirect_to=reverse( - viewname='converter:transformation_create', - kwargs={ - 'app_label': self.kwargs['app_label'], - 'model': self.kwargs['model'], - 'object_id': self.kwargs['object_id'], - 'layer_name': self.kwargs['layer_name'], - 'transformation_name': form.cleaned_data[ - 'transformation' - ] - } - ) + transformation_class = BaseTransformation.get( + name=form.cleaned_data['transformation'] ) + if transformation_class.arguments: + return HttpResponseRedirect( + redirect_to=reverse( + viewname='converter:transformation_create', + kwargs={ + 'app_label': self.kwargs['app_label'], + 'model': self.kwargs['model'], + 'object_id': self.kwargs['object_id'], + 'layer_name': self.kwargs['layer_name'], + 'transformation_name': form.cleaned_data[ + 'transformation' + ] + } + ) + ) + else: + layer = self.layer + content_type = self.get_content_type() + object_layer, created = ObjectLayer.objects.get_or_create( + content_type=content_type, object_id=self.external_object.pk, + stored_layer=layer.stored_layer + ) + object_layer.transformations.create( + name=form.cleaned_data['transformation'] + ) + + return HttpResponseRedirect( + redirect_to=reverse( + viewname='converter:transformation_list', kwargs={ + 'app_label': self.kwargs['app_label'], + 'model': self.kwargs['model'], + 'object_id': self.kwargs['object_id'], + 'layer_name': self.kwargs['layer_name'] + } + ) + ) def get_extra_context(self): return {