diff --git a/product/ERP5Workflow/Document/Transition.py b/product/ERP5Workflow/Document/Transition.py index 123d13f822953a6e0b72f24fefd79e4f7945adcb..01964f7e746a06fc090a199354f58fc82c60ead1 100644 --- a/product/ERP5Workflow/Document/Transition.py +++ b/product/ERP5Workflow/Document/Transition.py @@ -165,6 +165,8 @@ class Transition(IdAsReferenceMixin('_transition'), XMLObject): except KeyError: raise WorkflowException('Destination state undefined: ' + new_state) + LOG(" 168 object '%s' will change from state '%s' to '%s'"%(document.getId(), old_state, new_state), WARNING, " in Transition.py") + # Execute the "before" script. before_script_success = 1 script_id = self.getBeforeScriptId() @@ -188,7 +190,7 @@ class Transition(IdAsReferenceMixin('_transition'), XMLObject): # Do not proceed in case of failure of before script if not before_script_success: former_status = old_state # Remain in state - tool.setStatusOf(workflow.getId(), document, status_dict) + tool.setStatusOf('_'.join(workflow.getId().split('_')[:-1]), document, status_dict) sci = StateChangeInfo( document, workflow, former_status, self, old_sdef, new_sdef, kwargs) # put the error message in the workflow history @@ -208,7 +210,7 @@ class Transition(IdAsReferenceMixin('_transition'), XMLObject): status_dict['undo'] = 0 # Modify workflow history - status_dict[state_var] = new_state + status_dict[state_var] = '_'.join(new_state.split('_')[:-1]) # remove suffix object = workflow.getStateChangeInformation(document, state_object, transition=self) # update variables ========================================================= @@ -225,11 +227,12 @@ class Transition(IdAsReferenceMixin('_transition'), XMLObject): for vdef in workflow.objectValues(portal_type='Variable'): id = vdef.getId() + id_no_suffix = '_'.join(id.split('_')[:-1]) if vdef.for_status == 0: continue expr = None - if id in state_values: - value = state_values[id] + if id_no_suffix in state_values: + value = state_values[id_no_suffix] elif id in tdef_exprs: expr = tdef_exprs[id] elif not vdef.update_always and id in former_status: @@ -252,7 +255,7 @@ class Transition(IdAsReferenceMixin('_transition'), XMLObject): econtext = Expression_createExprContext(sci) expr = Expression(expr) value = expr(econtext) - status_dict[id] = value + status_dict[id_no_suffix] = value # Update all transition variables if form_kw is not None: @@ -262,11 +265,10 @@ class Transition(IdAsReferenceMixin('_transition'), XMLObject): status_dict[variable.getCausalityTitle()] = variable.getInitialValue(object=object) # Generate Workflow History List - tool.setStatusOf(workflow.getId(), document, status_dict) + tool.setStatusOf('_'.join(workflow.getId().split('_')[:-1]), document, status_dict) ### zwj: update Role mapping, also in Workflow, initialiseDocument() workflow.updateRoleMappingsFor(document) - # Execute the "after" script. script_id = self.getAfterScriptId() if script_id is not None: