diff --git a/tests/test_workflows.py b/tests/test_workflows.py index f46029093..d35b5e7fa 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -3590,7 +3590,18 @@ def test_export_to_model_django_template(pub): @pytest.mark.parametrize('filename', ['template-form-details.odt', 'template-form-details-no-styles.odt']) def test_export_to_model_form_details_section(pub, filename): + BlockDef.wipe() FormDef.wipe() + + block = BlockDef() + block.name = 'foobar' + block.digest_template = 'X{{foobar_var_foo}}Y' + block.fields = [ + StringField(id='123', required=True, label='Test', type='string', varname='foo'), + StringField(id='234', required=True, label='Test2', type='string', varname='bar'), + ] + block.store() + formdef = FormDef() formdef.name = 'foo-export-details' formdef.fields = [ @@ -3609,6 +3620,7 @@ def test_export_to_model_form_details_section(pub, filename): PageField(id='13', label='Empty Page', type='page'), TitleField(id='14', label='Empty Title', type='title'), StringField(id='15', label='Empty String', type='string', varname='invisiblestr'), + BlockField(id='16', label='Block Field', type='block:foobar'), ] formdef.store() formdef.data_class().wipe() @@ -3624,6 +3636,12 @@ def test_export_to_model_form_details_section(pub, filename): '10': time.strptime('2015-05-12', '%Y-%m-%d'), '11': 'foo', '12': [['1', '2'], ['3', '4']], + # value from test_block_digest in tests/form_pages/test_block.py + '16': { + 'data': [{'123': 'foo', '234': 'bar'}, {'123': 'foo2', '234': 'bar2'}], + 'schema': {'123': 'string', '234': 'string'}, + }, + '16_display': 'XfooY, Xfoo2Y', } formdata.just_created() formdata.store() @@ -3663,6 +3681,7 @@ def test_export_to_model_form_details_section(pub, filename): assert '>2015-05-12<' in new_content assert 'Invisible' not in new_content assert new_content.count('/table:table-cell') == 8 + assert 'XfooY, Xfoo2Y' in new_content if filename == 'template-form-details-no-styles.odt': new_styles = force_text( diff --git a/wcs/fields.py b/wcs/fields.py index bd3bf320e..ade00ca76 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -3363,6 +3363,11 @@ class BlockField(WidgetField): ) return result + def get_opendocument_node_value(self, value, formdata=None, **kwargs): + node = ET.Element('{%s}span' % OD_NS['text']) + node.text = od_clean_text(force_text(value)) + return node + def get_field_class_by_type(type): for k in field_classes: