formdata: get correct status for intermediary evolutions (#20146)
This commit is contained in:
parent
25878fad06
commit
bed253cb75
|
@ -498,3 +498,47 @@ def test_workflow_data_file_url(pub):
|
|||
)
|
||||
substvars = formdata.get_substitution_variables()
|
||||
assert substvars['foo_var_file_url']
|
||||
|
||||
def test_evolution_get_status(pub):
|
||||
Workflow.wipe()
|
||||
workflow = Workflow(name='test')
|
||||
st_new = workflow.add_status('New')
|
||||
st_finished = workflow.add_status('Finished')
|
||||
workflow.store()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.name = 'foo'
|
||||
formdef.fields = []
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
d = formdef.data_class()()
|
||||
d.evolution = []
|
||||
|
||||
evo = Evolution()
|
||||
evo.time = time.localtime()
|
||||
evo.status = 'wf-%s' % st_new.id
|
||||
d.evolution.append(evo)
|
||||
|
||||
evo = Evolution()
|
||||
evo.time = time.localtime()
|
||||
d.evolution.append(evo)
|
||||
|
||||
evo = Evolution()
|
||||
evo.time = time.localtime()
|
||||
d.evolution.append(evo)
|
||||
|
||||
evo = Evolution()
|
||||
evo.time = time.localtime()
|
||||
evo.status = 'wf-%s' % st_finished.id
|
||||
d.evolution.append(evo)
|
||||
|
||||
evo = Evolution()
|
||||
evo.time = time.localtime()
|
||||
d.evolution.append(evo)
|
||||
|
||||
d.store()
|
||||
d = formdef.data_class().get(d.id)
|
||||
|
||||
assert [x.get_status().id for x in d.evolution] == ['1', '1', '1', '2', '2']
|
||||
|
|
|
@ -223,10 +223,18 @@ class Evolution(object):
|
|||
return False
|
||||
|
||||
def get_status(self):
|
||||
return self.formdata.get_status(status=self.status)
|
||||
status = self.status
|
||||
if not self.status:
|
||||
# look for the previous evolution with a status
|
||||
for evolution in reversed(self.formdata.evolution[:self.formdata.evolution.index(self)]):
|
||||
status = evolution.status
|
||||
if status:
|
||||
break
|
||||
return self.formdata.get_status(status=status)
|
||||
|
||||
def get_status_label(self):
|
||||
return self.formdata.get_status_label(status=self.status)
|
||||
status = self.get_status()
|
||||
return status.name if status else _('Unknown')
|
||||
|
||||
|
||||
class FormData(StorableObject):
|
||||
|
|
Loading…
Reference in New Issue