149 assert self.req.execute('SET T subworkflow WF WHERE WF eid %(wf)s,T eid %(t)s', |
149 assert self.req.execute('SET T subworkflow WF WHERE WF eid %(wf)s,T eid %(t)s', |
150 {'t': tr.eid, 'wf': subworkflow}, ('wf', 't')) |
150 {'t': tr.eid, 'wf': subworkflow}, ('wf', 't')) |
151 for fromstate, tostate in exitpoints: |
151 for fromstate, tostate in exitpoints: |
152 tr.add_exit_point(fromstate, tostate) |
152 tr.add_exit_point(fromstate, tostate) |
153 return tr |
153 return tr |
|
154 |
|
155 def replace_state(self, todelstate, replacement): |
|
156 """migration convenience method""" |
|
157 if not hasattr(todelstate, 'eid'): |
|
158 todelstate = self.state_by_name(todelstate) |
|
159 if not hasattr(replacement, 'eid'): |
|
160 replacement = self.state_by_name(replacement) |
|
161 execute = self._cw.unsafe_execute |
|
162 execute('SET X in_state S WHERE S eid %(s)s', {'s': todelstate.eid}, 's') |
|
163 execute('SET X from_state NS WHERE X to_state OS, OS eid %(os)s, NS eid %(ns)s', |
|
164 {'os': todelstate.eid, 'ns': newstate.eid}, 's') |
|
165 execute('SET X to_state NS WHERE X to_state OS, OS eid %(os)s, NS eid %(ns)s', |
|
166 {'os': todelstate.eid, 'ns': newstate.eid}, 's') |
154 |
167 |
155 |
168 |
156 class BaseTransition(AnyEntity): |
169 class BaseTransition(AnyEntity): |
157 """customized class for abstract transition |
170 """customized class for abstract transition |
158 |
171 |