hooks/email.py
branchstable
changeset 4643 921737d2e3a8
parent 4252 6c4f109c2b03
child 4835 13b0b96d7982
equal deleted inserted replaced
4641:9d8903b04031 4643:921737d2e3a8
     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.server import hook
    10 from cubicweb.server import hook
    11 from cubicweb.server.repository import ensure_card_respected
       
    12 
    11 
    13 from logilab.common.compat import any
    12 from logilab.common.compat import any
    14 
    13 
    15 
    14 
    16 class SetUseEmailRelationOp(hook.Operation):
    15 class SetUseEmailRelationOp(hook.Operation):
    25         return not any(e for e in self.entity.use_email
    24         return not any(e for e in self.entity.use_email
    26                        if self.email.eid == e.eid)
    25                        if self.email.eid == e.eid)
    27 
    26 
    28     def precommit_event(self):
    27     def precommit_event(self):
    29         if self.condition():
    28         if self.condition():
    30             # we've to handle cardinaly by ourselves since we're using unsafe_execute
       
    31             # but use session.execute and not session.unsafe_execute to check we
       
    32             # can change the relation
       
    33             ensure_card_respected(self.session.execute, self.session,
       
    34                                   self.entity.eid, self.rtype, self.email.eid)
       
    35             self.session.unsafe_execute(
    29             self.session.unsafe_execute(
    36                 'SET X %s Y WHERE X eid %%(x)s, Y eid %%(y)s' % self.rtype,
    30                 'SET X %s Y WHERE X eid %%(x)s, Y eid %%(y)s' % self.rtype,
    37                 {'x': self.entity.eid, 'y': self.email.eid}, 'x')
    31                 {'x': self.entity.eid, 'y': self.email.eid}, 'x')
    38 
    32 
    39 
    33