equal
deleted
inserted
replaced
9 |
9 |
10 from datetime import datetime |
10 from datetime import datetime |
11 |
11 |
12 from cubicweb import RepositoryError, ValidationError |
12 from cubicweb import RepositoryError, ValidationError |
13 from cubicweb.interfaces import IWorkflowable |
13 from cubicweb.interfaces import IWorkflowable |
14 from cubicweb.selectors import entity_implements |
14 from cubicweb.selectors import implements |
15 from cubicweb.server import hook |
15 from cubicweb.server import hook |
16 from cubicweb.entities.wfobjs import WorkflowTransition |
16 from cubicweb.entities.wfobjs import WorkflowTransition |
17 |
17 |
18 |
18 |
19 def _change_state(session, x, oldstate, newstate): |
19 def _change_state(session, x, oldstate, newstate): |
141 category = 'worfklow' |
141 category = 'worfklow' |
142 |
142 |
143 |
143 |
144 class SetInitialStateHook(WorkflowHook): |
144 class SetInitialStateHook(WorkflowHook): |
145 __regid__ = 'wfsetinitial' |
145 __regid__ = 'wfsetinitial' |
146 __select__ = WorkflowHook.__select__ & entity_implements(IWorkflowable) |
146 __select__ = WorkflowHook.__select__ & implements(IWorkflowable) |
147 events = ('after_add_entity',) |
147 events = ('after_add_entity',) |
148 |
148 |
149 def __call__(self): |
149 def __call__(self): |
150 _SetInitialStateOp(self._cw, entity=self.entity) |
150 _SetInitialStateOp(self._cw, entity=self.entity) |
151 |
151 |
165 """check the transition is allowed, add missing information. Expect that: |
165 """check the transition is allowed, add missing information. Expect that: |
166 * wf_info_for inlined relation is set |
166 * wf_info_for inlined relation is set |
167 * by_transition or to_state (managers only) inlined relation is set |
167 * by_transition or to_state (managers only) inlined relation is set |
168 """ |
168 """ |
169 __regid__ = 'wffiretransition' |
169 __regid__ = 'wffiretransition' |
170 __select__ = WorkflowHook.__select__ & entity_implements('TrInfo') |
170 __select__ = WorkflowHook.__select__ & implements('TrInfo') |
171 events = ('before_add_entity',) |
171 events = ('before_add_entity',) |
172 |
172 |
173 def __call__(self): |
173 def __call__(self): |
174 session = self._cw |
174 session = self._cw |
175 entity = self.entity |
175 entity = self.entity |
252 |
252 |
253 |
253 |
254 class FiredTransitionHook(WorkflowHook): |
254 class FiredTransitionHook(WorkflowHook): |
255 """change related entity state""" |
255 """change related entity state""" |
256 __regid__ = 'wffiretransition' |
256 __regid__ = 'wffiretransition' |
257 __select__ = WorkflowHook.__select__ & entity_implements('TrInfo') |
257 __select__ = WorkflowHook.__select__ & implements('TrInfo') |
258 events = ('after_add_entity',) |
258 events = ('after_add_entity',) |
259 |
259 |
260 def __call__(self): |
260 def __call__(self): |
261 trinfo = self.entity |
261 trinfo = self.entity |
262 _change_state(self._cw, trinfo['wf_info_for'], |
262 _change_state(self._cw, trinfo['wf_info_for'], |