From 7bb3bf795030bc543cb3d6f9a97ad3a5b47cf91e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 26 Jul 2016 09:46:46 +0200 Subject: [PATCH] workflows: check backoffice field type check against correct field (#12745) --- tests/test_workflows.py | 25 +++++++++++++++++++++---- wcs/wf/backoffice_fields.py | 4 ++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 48a2c34..0444a02 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -1655,21 +1655,23 @@ def test_set_backoffice_field(pub): formdef = FormDef() formdef.name = 'baz' formdef.fields = [ - StringField(id='1', label='String', type='string', varname='string'), + StringField(id='00', label='String', type='string', varname='string'), ] formdef.workflow_id = wf.id formdef.store() formdata = formdef.data_class()() - formdata.data = {'1': 'HELLO'} + formdata.data = {'00': 'HELLO'} formdata.just_created() formdata.store() pub.substitutions.feed(formdata) item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.perform(formdata) item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.fields = [{'field_id': 'bo1', 'value': '=form_var_string'}] item.perform(formdata) @@ -1690,7 +1692,7 @@ def test_set_backoffice_field_file(pub): formdef = FormDef() formdef.name = 'baz' formdef.fields = [ - StringField(id='1', label='File', type='file', varname='file'), + StringField(id='00', label='File', type='file', varname='file'), ] formdef.workflow_id = wf.id formdef.store() @@ -1699,12 +1701,13 @@ def test_set_backoffice_field_file(pub): upload.receive([open(os.path.join(os.path.dirname(__file__), 'image-with-gps-data.jpeg')).read()]) formdata = formdef.data_class()() - formdata.data = {'1': upload} + formdata.data = {'00': upload} formdata.just_created() formdata.store() pub.substitutions.feed(formdata) item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.fields = [{'field_id': 'bo1', 'value': '=form_var_file_raw'}] item.perform(formdata) @@ -1728,6 +1731,7 @@ def test_set_backoffice_field_file(pub): formdata = formdef.data_class().get(formdata.id) pub.substitutions.feed(formdata) item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.fields = [{'field_id': 'bo1', 'value': '=attachments.xxx'}] item.perform(formdata) @@ -1736,6 +1740,7 @@ def test_set_backoffice_field_file(pub): # check storing a file from an assembled dictionary item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.fields = [{'field_id': 'bo1', 'value': '={"content": "hello world", "filename": "hello.txt"}'}] item.perform(formdata) @@ -1745,6 +1750,7 @@ def test_set_backoffice_field_file(pub): assert formdata.data['bo1'].get_content() == 'hello world' item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.fields = [{'field_id': 'bo1', 'value': '={"b64_content": "SEVMTE8gV09STEQ=", "filename": "hello.txt"}'}] item.perform(formdata) @@ -1759,8 +1765,19 @@ def test_set_backoffice_field_file(pub): assert not 'bo1' in formdata.data item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 item.fields = [{'field_id': 'bo1', 'value': '="HELLO"'}] item.perform(formdata) formdata = formdef.data_class().get(formdata.id) assert not 'bo1' in formdata.data + + # check wrong field + item = SetBackofficeFieldsWorkflowStatusItem() + item.parent = st1 + item.fields = [{'field_id': 'bo3', 'value': '=form_var_file_raw'}] + item.perform(formdata) + + formdata = formdef.data_class().get(formdata.id) + assert not 'bo1' in formdata.data + assert not 'bo3' in formdata.data diff --git a/wcs/wf/backoffice_fields.py b/wcs/wf/backoffice_fields.py index 4c1874b..838262a 100644 --- a/wcs/wf/backoffice_fields.py +++ b/wcs/wf/backoffice_fields.py @@ -112,8 +112,8 @@ class SetBackofficeFieldsWorkflowStatusItem(WorkflowStatusItem): return for field in self.fields: try: - formdef_field = [x for x in formdata.formdef.fields - if 'bo%s' % x.id == field['field_id']][0] + formdef_field = [x for x in self.parent.parent.get_backoffice_fields() + if x.id == field['field_id']][0] except IndexError: continue -- 2.8.1