289 kwargs.update({'eidfrom': subject, 'eidto': object}) |
289 kwargs.update({'eidfrom': subject, 'eidto': object}) |
290 yield kwargs |
290 yield kwargs |
291 |
291 |
292 |
292 |
293 class HooksRegistry(CWRegistry): |
293 class HooksRegistry(CWRegistry): |
294 def initialization_completed(self): |
|
295 for appobjects in self.values(): |
|
296 for cls in appobjects: |
|
297 if not cls.enabled: |
|
298 warn('[3.6] %s: enabled is deprecated' % classid(cls)) |
|
299 self.unregister(cls) |
|
300 |
294 |
301 def register(self, obj, **kwargs): |
295 def register(self, obj, **kwargs): |
302 obj.check_events() |
296 obj.check_events() |
303 super(HooksRegistry, self).register(obj, **kwargs) |
297 super(HooksRegistry, self).register(obj, **kwargs) |
304 |
298 |
565 @classproperty |
557 @classproperty |
566 def __registries__(cls): |
558 def __registries__(cls): |
567 cls.check_events() |
559 cls.check_events() |
568 return ['%s_hooks' % ev for ev in cls.events] |
560 return ['%s_hooks' % ev for ev in cls.events] |
569 |
561 |
570 @classproperty |
|
571 def __regid__(cls): |
|
572 warn('[3.6] %s: please specify an id for your hook' % classid(cls), |
|
573 DeprecationWarning) |
|
574 return str(id(cls)) |
|
575 |
|
576 @classmethod |
|
577 def __registered__(cls, reg): |
|
578 super(Hook, cls).__registered__(reg) |
|
579 if getattr(cls, 'accepts', None): |
|
580 warn('[3.6] %s: accepts is deprecated, define proper __select__' |
|
581 % classid(cls), DeprecationWarning) |
|
582 rtypes = [] |
|
583 for ertype in cls.accepts: # pylint: disable=E1101 |
|
584 if ertype.islower(): |
|
585 rtypes.append(ertype) |
|
586 else: |
|
587 cls.__select__ = cls.__select__ & is_instance(ertype) |
|
588 if rtypes: |
|
589 cls.__select__ = cls.__select__ & match_rtype(*rtypes) |
|
590 return cls |
|
591 |
|
592 known_args = set(('entity', 'rtype', 'eidfrom', 'eidto', 'repo', 'timestamp')) |
562 known_args = set(('entity', 'rtype', 'eidfrom', 'eidto', 'repo', 'timestamp')) |
593 def __init__(self, req, event, **kwargs): |
563 def __init__(self, req, event, **kwargs): |
594 for arg in self.known_args: |
564 for arg in self.known_args: |
595 if arg in kwargs: |
565 if arg in kwargs: |
596 setattr(self, arg, kwargs.pop(arg)) |
566 setattr(self, arg, kwargs.pop(arg)) |
597 super(Hook, self).__init__(req, **kwargs) |
567 super(Hook, self).__init__(req, **kwargs) |
598 self.event = event |
568 self.event = event |
599 |
|
600 def __call__(self): |
|
601 if hasattr(self, 'call'): |
|
602 warn('[3.6] %s: call is deprecated, implement __call__' |
|
603 % classid(self.__class__), DeprecationWarning) |
|
604 # pylint: disable=E1101 |
|
605 if self.event.endswith('_relation'): |
|
606 self.call(self._cw, self.eidfrom, self.rtype, self.eidto) |
|
607 elif 'delete' in self.event: |
|
608 self.call(self._cw, self.entity.eid) |
|
609 elif self.event.startswith('server_'): |
|
610 self.call(self.repo) |
|
611 elif self.event.startswith('session_'): |
|
612 self.call(self._cw) |
|
613 else: |
|
614 self.call(self._cw, self.entity) |
|
615 |
569 |
616 set_log_methods(Hook, getLogger('cubicweb.hook')) |
570 set_log_methods(Hook, getLogger('cubicweb.hook')) |
617 |
571 |
618 |
572 |
619 # abtract hooks for relation propagation ####################################### |
573 # abtract hooks for relation propagation ####################################### |
829 """ |
783 """ |
830 |
784 |
831 def postcommit_event(self): |
785 def postcommit_event(self): |
832 """the observed connections set has committed""" |
786 """the observed connections set has committed""" |
833 |
787 |
834 @property |
|
835 @deprecated('[3.6] use self.session.user') |
|
836 def user(self): |
|
837 return self.session.user |
|
838 |
|
839 @property |
|
840 @deprecated('[3.6] use self.session.repo') |
|
841 def repo(self): |
|
842 return self.session.repo |
|
843 |
|
844 @property |
|
845 @deprecated('[3.6] use self.session.vreg.schema') |
|
846 def schema(self): |
|
847 return self.session.repo.schema |
|
848 |
|
849 @property |
|
850 @deprecated('[3.6] use self.session.vreg.config') |
|
851 def config(self): |
|
852 return self.session.repo.config |
|
853 |
|
854 # these are overridden by set_log_methods below |
788 # these are overridden by set_log_methods below |
855 # only defining here to prevent pylint from complaining |
789 # only defining here to prevent pylint from complaining |
856 info = warning = error = critical = exception = debug = lambda msg,*a,**kw: None |
790 info = warning = error = critical = exception = debug = lambda msg,*a,**kw: None |
857 |
791 |
858 set_log_methods(Operation, getLogger('cubicweb.session')) |
792 set_log_methods(Operation, getLogger('cubicweb.session')) |