equal
deleted
inserted
replaced
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 |