From b674011891dd148be2820e27e1b0b5d131ef45ec Mon Sep 17 00:00:00 2001 From: souliane Date: Fri, 13 Dec 2013 05:35:24 +0100 Subject: [PATCH] core (tools): set min and max priorities for triggers and warn if several triggers have the same not null priority --- src/tools/misc.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tools/misc.py b/src/tools/misc.py index 96c39157..2fe381b2 100644 --- a/src/tools/misc.py +++ b/src/tools/misc.py @@ -19,6 +19,8 @@ """Misc usefull classes""" +import sys +from logging import debug, warning class TriggerException(Exception): pass @@ -34,6 +36,9 @@ class TriggerManager(object): """This class manage triggers: code which interact to change de behaviour of SàT""" + MIN_PRIORITY = float('-inf') + MAX_PRIORITY = float('+inf') + def __init__(self): self.__triggers = {} @@ -46,6 +51,11 @@ class TriggerManager(object): """ if point_name not in self.__triggers: self.__triggers[point_name] = [] + if priority != 0 and priority in [trigger_tuple[0] for trigger_tuple in self.__triggers[point_name]]: + if priority in (MIN_PRIORITY, MAX_PRIORITY): + warning(_("There is already a bound priority [%s]") % point_name) + else: + debug(_("There is already a trigger with the same priority [%s]") % point_name) self.__triggers[point_name].append((priority, callback)) self.__triggers[point_name].sort(key=lambda trigger_tuple: trigger_tuple[0], reverse=True)