From 21e0603aa791b7a72a1fab6cf2aa71e1eaee7be4 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Wed, 28 Jun 2017 16:23:31 +0200 Subject: [PATCH] fix compute _url variable of workflow data uploads (#17233) --- tests/test_formdata.py | 17 +++++++++++++++++ wcs/formdata.py | 2 ++ 2 files changed, 19 insertions(+) diff --git a/tests/test_formdata.py b/tests/test_formdata.py index 25b333a5b..9d4c46cab 100644 --- a/tests/test_formdata.py +++ b/tests/test_formdata.py @@ -1,3 +1,4 @@ +import collections import pytest import sys import shutil @@ -481,3 +482,19 @@ def test_private_history(pub, local_user): local_user.roles = [role.id] assert formdef.is_user_allowed_read_status_and_history(local_user, formdata=formdata) is True + +def test_workflow_data_file_url(pub): + upload = Upload('test.txt', 'text/plain', 'ascii') + upload.receive(['first line', 'second line']) + + formdata = formdef.data_class()() + formdata.store() + # create workflow_data as ordered dict to be sure _url comes last, to + # trigger #17233. + formdata.workflow_data = collections.OrderedDict( + foo_var_file='test.txt', + foo_var_file_raw=upload, + foo_var_file_url=None, + ) + substvars = formdata.get_substitution_variables() + assert substvars['foo_var_file_url'] diff --git a/wcs/formdata.py b/wcs/formdata.py index c94a59f21..4ad981645 100644 --- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -649,6 +649,8 @@ class FormData(StorableObject): if k[0] == '_': continue d[k] = v + # recompute _url variable of attached files + for k, v in self.workflow_data.items(): if isinstance(v, Upload): try: formvar, fieldvar = re.match('(.*)_var_(.*)_raw$', k).groups()