hooks/syncsession.py
changeset 5174 78438ad513ca
parent 5030 5238d9a8dfee
child 5423 e15abfdcce38
equal deleted inserted replaced
5173:73760bbb66bd 5174:78438ad513ca
    34 
    34 
    35         we may temporarily loose right access during a commit event, so
    35         we may temporarily loose right access during a commit event, so
    36         no query should be emitted while comitting
    36         no query should be emitted while comitting
    37         """
    37         """
    38         rql = 'Any N WHERE G eid %(x)s, G name N'
    38         rql = 'Any N WHERE G eid %(x)s, G name N'
    39         result = session.execute(rql, {'x': kwargs['geid']}, 'x', build_descr=False)
    39         result = session.execute(rql, {'x': kwargs['geid']}, build_descr=False)
    40         hook.Operation.__init__(self, session, *args, **kwargs)
    40         hook.Operation.__init__(self, session, *args, **kwargs)
    41         self.group = result[0][0]
    41         self.group = result[0][0]
    42 
    42 
    43 
    43 
    44 class _DeleteGroupOp(_GroupOperation):
    44 class _DeleteGroupOp(_GroupOperation):
   214         session = self._cw
   214         session = self._cw
   215         eidfrom = self.eidfrom
   215         eidfrom = self.eidfrom
   216         if not session.describe(eidfrom)[0] == 'CWProperty':
   216         if not session.describe(eidfrom)[0] == 'CWProperty':
   217             return
   217             return
   218         key, value = session.execute('Any K,V WHERE P eid %(x)s,P pkey K,P value V',
   218         key, value = session.execute('Any K,V WHERE P eid %(x)s,P pkey K,P value V',
   219                                      {'x': eidfrom}, 'x')[0]
   219                                      {'x': eidfrom})[0]
   220         if session.vreg.property_info(key)['sitewide']:
   220         if session.vreg.property_info(key)['sitewide']:
   221             qname = role_name('for_user', 'subject')
   221             qname = role_name('for_user', 'subject')
   222             msg = session._("site-wide property can't be set for user")
   222             msg = session._("site-wide property can't be set for user")
   223             raise ValidationError(eidfrom,
   223             raise ValidationError(eidfrom,
   224                                   {qname: msg})
   224                                   {qname: msg})
   232     events = ('after_delete_relation',)
   232     events = ('after_delete_relation',)
   233 
   233 
   234     def __call__(self):
   234     def __call__(self):
   235         session = self._cw
   235         session = self._cw
   236         key = session.execute('Any K WHERE P eid %(x)s, P pkey K',
   236         key = session.execute('Any K WHERE P eid %(x)s, P pkey K',
   237                               {'x': self.eidfrom}, 'x')[0][0]
   237                               {'x': self.eidfrom})[0][0]
   238         session.transaction_data.setdefault('pendingrelations', []).append(
   238         session.transaction_data.setdefault('pendingrelations', []).append(
   239             (self.eidfrom, self.rtype, self.eidto))
   239             (self.eidfrom, self.rtype, self.eidto))
   240         for session_ in get_user_sessions(session.repo, self.eidto):
   240         for session_ in get_user_sessions(session.repo, self.eidto):
   241             _DelCWPropertyOp(session, cwpropdict=session_.user.properties, key=key)
   241             _DelCWPropertyOp(session, cwpropdict=session_.user.properties, key=key)