diff --git a/product/Coramy/skins/coramy_erp5/folder_workflow_status_modify.py b/product/Coramy/skins/coramy_erp5/folder_workflow_status_modify.py index 3cce15d2b3294de27ffb85f2ea38e45cca9f3bf6..187956b27bf88fe39b1674105b1c7498352d8300 100755 --- a/product/Coramy/skins/coramy_erp5/folder_workflow_status_modify.py +++ b/product/Coramy/skins/coramy_erp5/folder_workflow_status_modify.py @@ -4,7 +4,7 @@ ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath -##parameters=form_id,dialog_id,selection_name +##parameters=form_id,dialog_id,selection_name,md5_object_uid_list=None ##title= ## from Products.Formulator.Errors import ValidationError, FormValidationError @@ -24,33 +24,39 @@ try: if v is not None: kw[k] = v selection_list = context.portal_selections.callSelectionFor(selection_name, context=context) - for selection_item in selection_list: - o = selection_item.getObject() - workflow_action = kw['workflow_action'] - action_list = o.portal_workflow.getActionsFor(o) - action_list = filter(lambda x:x.has_key('id'), action_list ) - action_id_list = map(lambda x:x['id'], action_list) - # If the user is not allowed to do this transition, it will not be in action_list - if workflow_action in action_id_list: - o.portal_workflow.doActionFor( - o, - workflow_action, - wf_id=kw['workflow_id'], - **kw) - - # We will check if there's an error_message - history_data = None - try: - history_data = o.portal_workflow.getInfoFor(ob=o, name='history') - except: - pass - redirect_url = None - if history_data is not None: - last_history_data = history_data[len(history_data)-1] - this_error = last_history_data.get('error_message') - if this_error != None and this_error != '': - error_message += this_error + "-" + # Check if the selection did not changed + if md5_object_uid_list is not None: + object_uid_list = map(lambda x:x.getObject().getUid(),selection_list) + error = context.portal_selections.selectionHasChanged(md5_object_uid_list,object_uid_list) + if error: + error_message = 'Sorry+your+selection+has+changed' + if error_message == '': + for selection_item in selection_list: + o = selection_item.getObject() + workflow_action = kw['workflow_action'] + action_list = o.portal_workflow.getActionsFor(o) + action_list = filter(lambda x:x.has_key('id'), action_list ) + action_id_list = map(lambda x:x['id'], action_list) + # If the user is not allowed to do this transition, it will not be in action_list + if workflow_action in action_id_list: + o.portal_workflow.doActionFor( + o, + workflow_action, + wf_id=kw['workflow_id'], + **kw) + # We will check if there's an error_message + history_data = None + try: + history_data = o.portal_workflow.getInfoFor(ob=o, name='history') + except: + pass + redirect_url = None + if history_data is not None: + last_history_data = history_data[len(history_data)-1] + this_error = last_history_data.get('error_message') + if this_error != None and this_error != '': + error_message += this_error + "-" except FormValidationError, validation_errors: # Pack errors into the request field_errors = form.ErrorFields(validation_errors)