diff --git a/product/ERP5Workflow/Document/Transition.py b/product/ERP5Workflow/Document/Transition.py index b0e07354499e1c00fd22faeb311d299da7aa9a10..dd39dc1195a44e962099730b592c28447f482d63 100644 --- a/product/ERP5Workflow/Document/Transition.py +++ b/product/ERP5Workflow/Document/Transition.py @@ -144,10 +144,13 @@ class Transition(IdAsReferenceMixin("transition_", "prefix"), XMLObject): if state_object == None: state_object = workflow.getSourceValue() - old_state = state_object.getId() + old_state = state_object.getReference() old_sdef = state_object - - new_state = self.getDestinationId() + new_sdef = self.getDestinationValue() + if new_sdef == None: + new_state = None + else: + new_state = new_sdef.getReference() if new_state is None: #new_state = workflow.getSourceId() @@ -160,11 +163,6 @@ class Transition(IdAsReferenceMixin("transition_", "prefix"), XMLObject): else: former_status = state_object.getId() - try: - new_sdef = self.getDestinationValue() - 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. @@ -210,7 +208,7 @@ class Transition(IdAsReferenceMixin("transition_", "prefix"), XMLObject): status_dict['undo'] = 0 # Modify workflow history - status_dict[state_var] = '_'.join(new_state.split('_')[1:]) + status_dict[state_var] = new_state object = workflow.getStateChangeInformation(document, state_object, transition=self) # update variables ========================================================= @@ -227,7 +225,7 @@ class Transition(IdAsReferenceMixin("transition_", "prefix"), XMLObject): for vdef in workflow.objectValues(portal_type='Variable'): id = vdef.getId() - id_no_suffix = '_'.join(id.split('_')[1:]) + id_no_suffix = vdef.getReference() if vdef.for_status == 0: continue expr = None