workflows: set _display/_structured in case of empty value (#46800)
This commit is contained in:
parent
c280f6c335
commit
45580283b7
|
@ -5192,10 +5192,13 @@ def test_edit_carddata_with_data_sourced_object(pub):
|
|||
CardDef.wipe()
|
||||
LoggedError.wipe()
|
||||
|
||||
datasource = {'type': 'formula',
|
||||
'value': repr([{'id': 'b', 'text': 'baker'},
|
||||
{'id': 'c', 'text': 'cook'},
|
||||
{'id': 'l', 'text': 'lawyer'}])}
|
||||
datasource = {
|
||||
'type': 'formula',
|
||||
'value': repr(
|
||||
[{'id': 'b', 'text': 'baker', 'extra': 'plop'},
|
||||
{'id': 'c', 'text': 'cook', 'extra': 'plop2'},
|
||||
{'id': 'l', 'text': 'lawyer', 'extra': 'plop3'}])
|
||||
}
|
||||
carddef = CardDef()
|
||||
carddef.name = 'Person'
|
||||
carddef.fields = [
|
||||
|
@ -5211,8 +5214,10 @@ def test_edit_carddata_with_data_sourced_object(pub):
|
|||
carddata.data = {
|
||||
'0': 'Foo',
|
||||
'1': 'Bar',
|
||||
'2': 'l',
|
||||
'2_display': 'lawyer'}
|
||||
'2': 'l'
|
||||
}
|
||||
carddata.data['2_display'] = carddef.fields[2].store_display_value(carddata.data, '2')
|
||||
carddata.data['2_structured'] = carddef.fields[2].store_structured_value(carddata.data, '2')
|
||||
carddata.store()
|
||||
|
||||
wf = Workflow(name='Card update')
|
||||
|
@ -5253,6 +5258,7 @@ def test_edit_carddata_with_data_sourced_object(pub):
|
|||
data = carddef.data_class().select()[0]
|
||||
assert data.data['2'] == 'c'
|
||||
assert data.data['2_display'] == 'cook'
|
||||
assert data.data['2_structured'] == {'id': 'c', 'text': 'cook', 'extra': 'plop2'}
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {
|
||||
|
@ -5266,25 +5272,32 @@ def test_edit_carddata_with_data_sourced_object(pub):
|
|||
data = carddef.data_class().select()[0]
|
||||
assert data.data['2'] == 'b'
|
||||
assert data.data['2_display'] == 'baker'
|
||||
assert data.data['2_structured'] == {'id': 'b', 'text': 'baker', 'extra': 'plop'}
|
||||
|
||||
# reset data
|
||||
edit.mappings = [
|
||||
Mapping(field_id='2', expression='=None'),
|
||||
]
|
||||
wf.store()
|
||||
for expression in ('=None', '', '""'):
|
||||
edit.mappings = [
|
||||
Mapping(field_id='2', expression='=None'),
|
||||
]
|
||||
wf.store()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {
|
||||
'0': '1',
|
||||
'1': 'b'
|
||||
}
|
||||
formdata.store()
|
||||
formdata.just_created()
|
||||
formdata.perform_workflow()
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {
|
||||
'0': '1',
|
||||
'1': 'b'
|
||||
}
|
||||
formdata.store()
|
||||
formdata.just_created()
|
||||
formdata.perform_workflow()
|
||||
|
||||
data = carddef.data_class().select()[0]
|
||||
assert data.data['2'] is None
|
||||
assert data.data['2_display'] is None
|
||||
carddata = carddef.data_class().select()[0]
|
||||
assert carddata.data['2'] is None
|
||||
assert carddata.data.get('2_display') is None
|
||||
assert carddata.data.get('2_structured') is None
|
||||
|
||||
# restore initial data
|
||||
carddata.data = data.data
|
||||
carddata.store()
|
||||
|
||||
|
||||
def test_edit_carddata_with_linked_object(pub):
|
||||
|
|
|
@ -445,6 +445,8 @@ class CreateFormdataWorkflowStatusItem(WorkflowStatusItem):
|
|||
formdata.data, field.id)
|
||||
if display_value:
|
||||
formdata.data['%s_display' % field.id] = display_value
|
||||
elif '%s_display' % field.id in formdata.data:
|
||||
del formdata.data['%s_display' % field.id]
|
||||
if field.store_structured_value:
|
||||
structured_value = field.store_structured_value(
|
||||
formdata.data, field.id)
|
||||
|
@ -453,6 +455,8 @@ class CreateFormdataWorkflowStatusItem(WorkflowStatusItem):
|
|||
# in case of list field, override id
|
||||
formdata.data['%s' % field.id] = str(structured_value.get('id'))
|
||||
formdata.data['%s_structured' % field.id] = structured_value
|
||||
elif '%s_structured' % field.id in formdata.data:
|
||||
del formdata.data['%s_structured' % field.id]
|
||||
|
||||
def mappings_export_to_xml(self, parent, charset, include_id=False):
|
||||
container = ET.SubElement(parent, 'mappings')
|
||||
|
|
Loading…
Reference in New Issue