workflows: handle empty <condition> tags in exports (#23855)
This commit is contained in:
parent
ce94b90179
commit
7b0b2a35e6
|
@ -599,3 +599,20 @@ def test_set_backoffice_fields_action(pub):
|
|||
wf2 = assert_import_export_works(wf)
|
||||
item2 = wf2.possible_status[0].items[0]
|
||||
assert item2.fields == [{'field_id': 'bo1', 'value': '=form_var_foo'}]
|
||||
|
||||
def test_action_condition(pub):
|
||||
wf = Workflow(name='status')
|
||||
st1 = wf.add_status('Status1', 'st1')
|
||||
|
||||
sendmail = SendmailWorkflowStatusItem()
|
||||
st1.items.append(sendmail)
|
||||
sendmail.parent = st1
|
||||
|
||||
wf2 = assert_import_export_works(wf)
|
||||
|
||||
sendmail.condition = {} # should not be created any longer
|
||||
wf2 = Workflow.import_from_xml_tree(wf.export_to_xml(False), False)
|
||||
assert wf2.possible_status[0].items[0].condition is None
|
||||
|
||||
sendmail.condition = {'type': 'python', 'value': 'True'}
|
||||
wf2 = assert_import_export_works(wf)
|
||||
|
|
|
@ -118,19 +118,6 @@ class JumpWorkflowStatusItem(WorkflowStatusJumpItem):
|
|||
else:
|
||||
self.timeout = int(timeout)
|
||||
|
||||
def condition_init_with_xml(self, node, charset, include_id=False):
|
||||
self.condition = None
|
||||
if node is None:
|
||||
return
|
||||
if node.findall('type'):
|
||||
self.condition = {
|
||||
'type': node.find('type').text.encode(charset),
|
||||
'value': node.find('value').text.encode(charset),
|
||||
}
|
||||
elif node.text:
|
||||
# backward compatibility
|
||||
self.condition = {'type': 'python', 'value': node.text.encode(charset)}
|
||||
|
||||
def migrate(self):
|
||||
changed = super(JumpWorkflowStatusItem, self).migrate()
|
||||
if isinstance(self.condition, basestring):
|
||||
|
|
|
@ -1747,14 +1747,15 @@ class WorkflowStatusItem(XmlSerialisable):
|
|||
self._roles_init_with_xml('to', elem, charset, include_id)
|
||||
|
||||
def condition_init_with_xml(self, node, charset, include_id=False):
|
||||
self.condition = None
|
||||
if node is None:
|
||||
self.condition = None
|
||||
elif node.findall('type'):
|
||||
return
|
||||
if node.findall('type'):
|
||||
self.condition = {
|
||||
'type': node.find('type').text.encode(charset),
|
||||
'value': node.find('value').text.encode(charset),
|
||||
}
|
||||
else:
|
||||
elif node.text:
|
||||
# backward compatibility
|
||||
self.condition = {'type': 'python', 'value': node.text.encode(charset)}
|
||||
|
||||
|
|
Loading…
Reference in New Issue