hooks/syncsession.py
changeset 5877 0c7b7b76a84f
parent 5426 0d4853a6e5ee
child 6142 8bc6eac1fac1
equal deleted inserted replaced
5876:e77aa963fb19 5877:0c7b7b76a84f
    20 """
    20 """
    21 __docformat__ = "restructuredtext en"
    21 __docformat__ = "restructuredtext en"
    22 
    22 
    23 from yams.schema import role_name
    23 from yams.schema import role_name
    24 from cubicweb import UnknownProperty, ValidationError, BadConnectionId
    24 from cubicweb import UnknownProperty, ValidationError, BadConnectionId
    25 from cubicweb.selectors import implements
    25 from cubicweb.selectors import is_instance
    26 from cubicweb.server import hook
    26 from cubicweb.server import hook
    27 
    27 
    28 
    28 
    29 def get_user_sessions(repo, ueid):
    29 def get_user_sessions(repo, ueid):
    30     for session in repo._sessions.values():
    30     for session in repo._sessions.values():
   106             pass # already closed
   106             pass # already closed
   107 
   107 
   108 
   108 
   109 class CloseDeletedUserSessionsHook(SyncSessionHook):
   109 class CloseDeletedUserSessionsHook(SyncSessionHook):
   110     __regid__ = 'closession'
   110     __regid__ = 'closession'
   111     __select__ = SyncSessionHook.__select__ & implements('CWUser')
   111     __select__ = SyncSessionHook.__select__ & is_instance('CWUser')
   112     events = ('after_delete_entity',)
   112     events = ('after_delete_entity',)
   113 
   113 
   114     def __call__(self):
   114     def __call__(self):
   115         """modify user permission, need to update users"""
   115         """modify user permission, need to update users"""
   116         for session in get_user_sessions(self._cw.repo, self.entity.eid):
   116         for session in get_user_sessions(self._cw.repo, self.entity.eid):
   150         # if for_user is set, update is handled by a ChangeCWPropertyOp operation
   150         # if for_user is set, update is handled by a ChangeCWPropertyOp operation
   151 
   151 
   152 
   152 
   153 class AddCWPropertyHook(SyncSessionHook):
   153 class AddCWPropertyHook(SyncSessionHook):
   154     __regid__ = 'addcwprop'
   154     __regid__ = 'addcwprop'
   155     __select__ = SyncSessionHook.__select__ & implements('CWProperty')
   155     __select__ = SyncSessionHook.__select__ & is_instance('CWProperty')
   156     events = ('after_add_entity',)
   156     events = ('after_add_entity',)
   157 
   157 
   158     def __call__(self):
   158     def __call__(self):
   159         key, value = self.entity.pkey, self.entity.value
   159         key, value = self.entity.pkey, self.entity.value
   160         session = self._cw
   160         session = self._cw