Skip to content
Snippets Groups Projects
Commit b0a4dd01 authored by Nicolas Lempereur's avatar Nicolas Lempereur
Browse files

[FIX] workflow: don't process workitem several times

In some complex use case of a workflow instance with several workitems,
a given workitem processing could itself somewhat recursively process
one of the following workitems.

This situation was currently not taken into account, so in that given
case, the already processed workitems would be processed again.

opw-647580
parent 8ea17a8c
Branches
Tags
No related merge requests found
......@@ -38,8 +38,13 @@ def delete(cr, ident):
def validate(cr, inst_id, ident, signal, force_running=False):
cr.execute("select * from wkf_workitem where inst_id=%s", (inst_id,))
stack = []
for witem in cr.dictfetchall():
for i, witem in enumerate(cr.dictfetchall()):
stack = []
if i > 0:
# test if previous workitem has already processed this one
cr.execute("select id from wkf_workitem where id=%s", (witem['id'],))
if not cr.fetchone():
continue
workitem.process(cr, witem, ident, signal, force_running, stack=stack)
# An action is returned
_update_end(cr, inst_id, ident)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment