server/hook.py
branchstable
changeset 5287 6346f1fd0a50
parent 5220 42f854b6083d
child 5302 dfd147de06b2
child 5421 8167de96c523
equal deleted inserted replaced
5286:43d7044f8d0b 5287:6346f1fd0a50
    72                 if not cls.enabled:
    72                 if not cls.enabled:
    73                     warn('[3.6] %s: enabled is deprecated' % cls)
    73                     warn('[3.6] %s: enabled is deprecated' % cls)
    74                     self.unregister(cls)
    74                     self.unregister(cls)
    75 
    75 
    76     def register(self, obj, **kwargs):
    76     def register(self, obj, **kwargs):
    77         for event in obj.events:
    77         obj.check_events()
    78             if event not in ALL_HOOKS:
       
    79                 raise Exception('bad event %s on %s.%s' % (
       
    80                     event, obj.__module__, obj.__name__))
       
    81         super(HooksRegistry, self).register(obj, **kwargs)
    78         super(HooksRegistry, self).register(obj, **kwargs)
    82 
    79 
    83     def call_hooks(self, event, session=None, **kwargs):
    80     def call_hooks(self, event, session=None, **kwargs):
    84         kwargs['event'] = event
    81         kwargs['event'] = event
    85         if session is None:
    82         if session is None:
   196     category = None
   193     category = None
   197     order = 0
   194     order = 0
   198     # XXX deprecated
   195     # XXX deprecated
   199     enabled = True
   196     enabled = True
   200 
   197 
   201     @classproperty
   198     @classmethod
   202     def __registries__(cls):
   199     def check_events(cls):
   203         try:
   200         try:
   204             return ['%s_hooks' % ev for ev in cls.events]
   201             for event in cls.events:
       
   202                 if event not in ALL_HOOKS:
       
   203                     raise Exception('bad event %s on %s.%s' % (
       
   204                         event, cls.__module__, cls.__name__))
   205         except AttributeError:
   205         except AttributeError:
   206             raise
   206             raise
   207         except TypeError:
   207         except TypeError:
   208             raise Exception('bad .events attribute %s on %s.%s' % (
   208             raise Exception('bad .events attribute %s on %s.%s' % (
   209                 cls.events, cls.__module__, cls.__name__))
   209                 cls.events, cls.__module__, cls.__name__))
       
   210 
       
   211     @classproperty
       
   212     def __registries__(cls):
       
   213         cls.check_events()
       
   214         return ['%s_hooks' % ev for ev in cls.events]
   210 
   215 
   211     @classproperty
   216     @classproperty
   212     def __regid__(cls):
   217     def __regid__(cls):
   213         warn('[3.6] %s.%s: please specify an id for your hook'
   218         warn('[3.6] %s.%s: please specify an id for your hook'
   214              % (cls.__module__, cls.__name__), DeprecationWarning)
   219              % (cls.__module__, cls.__name__), DeprecationWarning)