Mercurial > libervia-backend
diff src/tools/misc.py @ 525:5431136501ab
core: Triggers can now frobid other triggers execution
if a trigger raise SkipOtherTriggers exception, normal behaviour will occure, skipping other triggers
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 21 Oct 2012 19:28:38 +0200 |
parents | 7ee15fbe8c08 |
children | ca13633d3b6b |
line wrap: on
line diff
--- a/src/tools/misc.py Sun Oct 21 16:40:19 2012 +0200 +++ b/src/tools/misc.py Sun Oct 21 19:28:38 2012 +0200 @@ -26,6 +26,11 @@ 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 @@ 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