23 """ |
23 """ |
24 from __future__ import print_function |
24 from __future__ import print_function |
25 |
25 |
26 __docformat__ = "restructuredtext en" |
26 __docformat__ = "restructuredtext en" |
27 |
27 |
|
28 from six import string_types |
28 |
29 |
29 from logilab.common.decorators import cached, clear_cache |
30 from logilab.common.decorators import cached, clear_cache |
30 from logilab.common.deprecation import deprecated |
31 from logilab.common.deprecation import deprecated |
31 |
32 |
32 from cubicweb.entities import AnyEntity, fetch_config |
33 from cubicweb.entities import AnyEntity, fetch_config |
257 for gname in requiredgroups: |
258 for gname in requiredgroups: |
258 rset = self._cw.execute('SET T require_group G ' |
259 rset = self._cw.execute('SET T require_group G ' |
259 'WHERE T eid %(x)s, G name %(gn)s', |
260 'WHERE T eid %(x)s, G name %(gn)s', |
260 {'x': self.eid, 'gn': unicode(gname)}) |
261 {'x': self.eid, 'gn': unicode(gname)}) |
261 assert rset, '%s is not a known group' % gname |
262 assert rset, '%s is not a known group' % gname |
262 if isinstance(conditions, basestring): |
263 if isinstance(conditions, string_types): |
263 conditions = (conditions,) |
264 conditions = (conditions,) |
264 for expr in conditions: |
265 for expr in conditions: |
265 if isinstance(expr, basestring): |
266 if isinstance(expr, string_types): |
266 kwargs = {'expr': unicode(expr)} |
267 kwargs = {'expr': unicode(expr)} |
267 else: |
268 else: |
268 assert isinstance(expr, dict) |
269 assert isinstance(expr, dict) |
269 kwargs = expr |
270 kwargs = expr |
270 kwargs['x'] = self.eid |
271 kwargs['x'] = self.eid |
527 kwargs['to_state'] = self._cw.entity_from_eid(tseid) |
528 kwargs['to_state'] = self._cw.entity_from_eid(tseid) |
528 return self._cw.create_entity('TrInfo', **kwargs) |
529 return self._cw.create_entity('TrInfo', **kwargs) |
529 |
530 |
530 def _get_transition(self, tr): |
531 def _get_transition(self, tr): |
531 assert self.current_workflow |
532 assert self.current_workflow |
532 if isinstance(tr, basestring): |
533 if isinstance(tr, string_types): |
533 _tr = self.current_workflow.transition_by_name(tr) |
534 _tr = self.current_workflow.transition_by_name(tr) |
534 assert _tr is not None, 'not a %s transition: %s' % ( |
535 assert _tr is not None, 'not a %s transition: %s' % ( |
535 self.__regid__, tr) |
536 self.__regid__, tr) |
536 tr = _tr |
537 tr = _tr |
537 return tr |
538 return tr |