hooks/workflow.py
changeset 5877 0c7b7b76a84f
parent 5685 17883ced01f8
child 6142 8bc6eac1fac1
equal deleted inserted replaced
5876:e77aa963fb19 5877:0c7b7b76a84f
    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'],