From d7ec36d6db354cd20ae24910ae46bfd61b43744b Mon Sep 17 00:00:00 2001 From: Goffi Date: Sun, 21 Oct 2012 19:28:38 +0200 Subject: [PATCH] core: Triggers can now frobid other triggers execution if a trigger raise SkipOtherTriggers exception, normal behaviour will occure, skipping other triggers --- src/tools/misc.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/tools/misc.py b/src/tools/misc.py index 8ed1effa..972d1787 100644 --- a/src/tools/misc.py +++ b/src/tools/misc.py @@ -26,6 +26,11 @@ from logging import debug, info, error class TriggerException(Exception): pass +class SkipOtherTriggers(Exception): + """ Exception to raise if normal behaviour must be followed instead of + followind triggers list """ + pass + class TriggerManager: """This class manage triggers: code which interact to change de behaviour of SàT""" @@ -62,7 +67,10 @@ class TriggerManager: return True for priority,trigger in self.__triggers[point_name]: - if not trigger(*args, **kwargs): - return False + try: + if not trigger(*args, **kwargs): + return False + except SkipOtherTriggers: + break return True