# HG changeset patch # User Sylvain Thénault # Date 1270576684 -7200 # Node ID 27d4cab5db03a9e3c47d05ccc08d0c92f4d68559 # Parent 2543cfa5d54a98756a4cb1a95c8fd92195922e8a [hook] proper bad .events detection. Fix unittest_hook diff -r 2543cfa5d54a -r 27d4cab5db03 server/hook.py --- a/server/hook.py Tue Apr 06 19:08:07 2010 +0200 +++ b/server/hook.py Tue Apr 06 19:58:04 2010 +0200 @@ -75,10 +75,7 @@ self.unregister(cls) def register(self, obj, **kwargs): - for event in obj.events: - if event not in ALL_HOOKS: - raise Exception('bad event %s on %s.%s' % ( - event, obj.__module__, obj.__name__)) + obj.check_events() super(HooksRegistry, self).register(obj, **kwargs) def call_hooks(self, event, session=None, **kwargs): @@ -199,10 +196,13 @@ # XXX deprecated enabled = True - @classproperty - def __registries__(cls): + @classmethod + def check_events(cls): try: - return ['%s_hooks' % ev for ev in cls.events] + for event in cls.events: + if event not in ALL_HOOKS: + raise Exception('bad event %s on %s.%s' % ( + event, obj.__module__, obj.__name__)) except AttributeError: raise except TypeError: @@ -210,6 +210,11 @@ cls.events, cls.__module__, cls.__name__)) @classproperty + def __registries__(cls): + cls.check_events() + return ['%s_hooks' % ev for ev in cls.events] + + @classproperty def __regid__(cls): warn('[3.6] %s.%s: please specify an id for your hook' % (cls.__module__, cls.__name__), DeprecationWarning)