fix compute _url variable of workflow data uploads (#17233)

This commit is contained in:
Thomas NOËL 2017-06-28 16:23:31 +02:00
parent 0b4d9fd9e5
commit 21e0603aa7
2 changed files with 19 additions and 0 deletions

View File

@ -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']

View File

@ -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()