tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable

This commit is contained in:
Goffi 2018-08-11 18:24:52 +02:00
commit c5c46f3558

View file

@ -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