hooks/syncsession.py
changeset 4075 e710f4052bd6
parent 3411 c867a096e11c
child 4307 7fba9c34c88f
equal deleted inserted replaced
4074:9cce43f52c61 4075:e710f4052bd6
     6 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     6 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     7 """
     7 """
     8 __docformat__ = "restructuredtext en"
     8 __docformat__ = "restructuredtext en"
     9 
     9 
    10 from cubicweb import UnknownProperty, ValidationError, BadConnectionId
    10 from cubicweb import UnknownProperty, ValidationError, BadConnectionId
    11 from cubicweb.selectors import entity_implements
    11 from cubicweb.selectors import implements
    12 from cubicweb.server import hook
    12 from cubicweb.server import hook
    13 
    13 
    14 
    14 
    15 def get_user_sessions(repo, ueid):
    15 def get_user_sessions(repo, ueid):
    16     for session in repo._sessions.values():
    16     for session in repo._sessions.values():
    92             pass # already closed
    92             pass # already closed
    93 
    93 
    94 
    94 
    95 class CloseDeletedUserSessionsHook(SyncSessionHook):
    95 class CloseDeletedUserSessionsHook(SyncSessionHook):
    96     __regid__ = 'closession'
    96     __regid__ = 'closession'
    97     __select__ = SyncSessionHook.__select__ & entity_implements('CWUser')
    97     __select__ = SyncSessionHook.__select__ & implements('CWUser')
    98     events = ('after_delete_entity',)
    98     events = ('after_delete_entity',)
    99 
    99 
   100     def __call__(self):
   100     def __call__(self):
   101         """modify user permission, need to update users"""
   101         """modify user permission, need to update users"""
   102         for session in get_user_sessions(self._cw.repo, self.entity.eid):
   102         for session in get_user_sessions(self._cw.repo, self.entity.eid):
   136         # if for_user is set, update is handled by a ChangeCWPropertyOp operation
   136         # if for_user is set, update is handled by a ChangeCWPropertyOp operation
   137 
   137 
   138 
   138 
   139 class AddCWPropertyHook(SyncSessionHook):
   139 class AddCWPropertyHook(SyncSessionHook):
   140     __regid__ = 'addcwprop'
   140     __regid__ = 'addcwprop'
   141     __select__ = SyncSessionHook.__select__ & entity_implements('CWProperty')
   141     __select__ = SyncSessionHook.__select__ & implements('CWProperty')
   142     events = ('after_add_entity',)
   142     events = ('after_add_entity',)
   143 
   143 
   144     def __call__(self):
   144     def __call__(self):
   145         key, value = self.entity.pkey, self.entity.value
   145         key, value = self.entity.pkey, self.entity.value
   146         session = self._cw
   146         session = self._cw