equal
deleted
inserted
replaced
22 from datetime import datetime |
22 from datetime import datetime |
23 |
23 |
24 from yams.schema import role_name |
24 from yams.schema import role_name |
25 |
25 |
26 from cubicweb import RepositoryError, ValidationError |
26 from cubicweb import RepositoryError, ValidationError |
27 from cubicweb.selectors import implements, adaptable |
27 from cubicweb.selectors import is_instance, adaptable |
28 from cubicweb.server import hook |
28 from cubicweb.server import hook |
29 |
29 |
30 |
30 |
31 def _change_state(session, x, oldstate, newstate): |
31 def _change_state(session, x, oldstate, newstate): |
32 nocheck = session.transaction_data.setdefault('skip-security', set()) |
32 nocheck = session.transaction_data.setdefault('skip-security', set()) |
175 """check the transition is allowed, add missing information. Expect that: |
175 """check the transition is allowed, add missing information. Expect that: |
176 * wf_info_for inlined relation is set |
176 * wf_info_for inlined relation is set |
177 * by_transition or to_state (managers only) inlined relation is set |
177 * by_transition or to_state (managers only) inlined relation is set |
178 """ |
178 """ |
179 __regid__ = 'wffiretransition' |
179 __regid__ = 'wffiretransition' |
180 __select__ = WorkflowHook.__select__ & implements('TrInfo') |
180 __select__ = WorkflowHook.__select__ & is_instance('TrInfo') |
181 events = ('before_add_entity',) |
181 events = ('before_add_entity',) |
182 |
182 |
183 def __call__(self): |
183 def __call__(self): |
184 session = self._cw |
184 session = self._cw |
185 entity = self.entity |
185 entity = self.entity |
271 |
271 |
272 |
272 |
273 class FiredTransitionHook(WorkflowHook): |
273 class FiredTransitionHook(WorkflowHook): |
274 """change related entity state""" |
274 """change related entity state""" |
275 __regid__ = 'wffiretransition' |
275 __regid__ = 'wffiretransition' |
276 __select__ = WorkflowHook.__select__ & implements('TrInfo') |
276 __select__ = WorkflowHook.__select__ & is_instance('TrInfo') |
277 events = ('after_add_entity',) |
277 events = ('after_add_entity',) |
278 |
278 |
279 def __call__(self): |
279 def __call__(self): |
280 trinfo = self.entity |
280 trinfo = self.entity |
281 _change_state(self._cw, trinfo['wf_info_for'], |
281 _change_state(self._cw, trinfo['wf_info_for'], |