Commit 74817a76 authored by Sebastien Robin's avatar Sebastien Robin

check if the selection has changed


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@757 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 5c870637
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
##bind namespace= ##bind namespace=
##bind script=script ##bind script=script
##bind subpath=traverse_subpath ##bind subpath=traverse_subpath
##parameters=form_id,dialog_id,selection_name ##parameters=form_id,dialog_id,selection_name,md5_object_uid_list=None
##title= ##title=
## ##
from Products.Formulator.Errors import ValidationError, FormValidationError from Products.Formulator.Errors import ValidationError, FormValidationError
...@@ -24,33 +24,39 @@ try: ...@@ -24,33 +24,39 @@ try:
if v is not None: if v is not None:
kw[k] = v kw[k] = v
selection_list = context.portal_selections.callSelectionFor(selection_name, context=context) selection_list = context.portal_selections.callSelectionFor(selection_name, context=context)
for selection_item in selection_list: # Check if the selection did not changed
o = selection_item.getObject() if md5_object_uid_list is not None:
workflow_action = kw['workflow_action'] object_uid_list = map(lambda x:x.getObject().getUid(),selection_list)
action_list = o.portal_workflow.getActionsFor(o) error = context.portal_selections.selectionHasChanged(md5_object_uid_list,object_uid_list)
action_list = filter(lambda x:x.has_key('id'), action_list ) if error:
action_id_list = map(lambda x:x['id'], action_list) error_message = 'Sorry+your+selection+has+changed'
# If the user is not allowed to do this transition, it will not be in action_list if error_message == '':
if workflow_action in action_id_list: for selection_item in selection_list:
o.portal_workflow.doActionFor( o = selection_item.getObject()
o, workflow_action = kw['workflow_action']
workflow_action, action_list = o.portal_workflow.getActionsFor(o)
wf_id=kw['workflow_id'], action_list = filter(lambda x:x.has_key('id'), action_list )
**kw) 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
# We will check if there's an error_message if workflow_action in action_id_list:
history_data = None o.portal_workflow.doActionFor(
try: o,
history_data = o.portal_workflow.getInfoFor(ob=o, name='history') workflow_action,
except: wf_id=kw['workflow_id'],
pass **kw)
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 + "-"
# 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: except FormValidationError, validation_errors:
# Pack errors into the request # Pack errors into the request
field_errors = form.ErrorFields(validation_errors) field_errors = form.ErrorFields(validation_errors)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment