tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
This commit is contained in:
parent
027909103e
commit
c5c46f3558
1 changed files with 18 additions and 3 deletions
|
|
@ -31,15 +31,22 @@ class TriggerManager(sync_trigger.TriggerManager):
|
|||
|
||||
All the triggers for that point will be run
|
||||
@param point_name: name of the trigger point
|
||||
@param *args: args to transmit to trigger
|
||||
@param *kwargs: kwargs to transmit to trigger
|
||||
if "triggers_no_cancel" is present, it will be popped out
|
||||
when set to True, this argument don't let triggers stop
|
||||
the workflow
|
||||
@return D(bool): True if the action must be continued, False else
|
||||
"""
|
||||
if point_name not in self.__triggers:
|
||||
defer.returnValue(True)
|
||||
|
||||
can_cancel = not kwargs.pop('triggers_no_cancel', False)
|
||||
|
||||
for priority, trigger in self.__triggers[point_name]:
|
||||
try:
|
||||
cont = yield trigger(*args, **kwargs)
|
||||
if not cont:
|
||||
if can_cancel and not cont:
|
||||
defer.returnValue(False)
|
||||
except sync_trigger.SkipOtherTriggers:
|
||||
break
|
||||
|
|
|
|||
Loading…
Reference in a new issue