entities/wfobjs.py
branch3.5
changeset 2976 d01417c14f35
parent 2975 fed52d317ba7
child 2978 d8c5ad14ab8e
equal deleted inserted replaced
2975:fed52d317ba7 2976:d01417c14f35
    37         information when this entity is being deleted
    37         information when this entity is being deleted
    38         """
    38         """
    39         if self.workflow_of:
    39         if self.workflow_of:
    40             return self.workflow_of[0].rest_path(), {'vid': 'workflow'}
    40             return self.workflow_of[0].rest_path(), {'vid': 'workflow'}
    41         return super(Workflow, self).after_deletion_path()
    41         return super(Workflow, self).after_deletion_path()
       
    42 
       
    43     def iter_workflows(self, _done=None):
       
    44         """return an iterator on actual workflows, eg this workflow and its
       
    45         subworkflows
       
    46         """
       
    47         # infinite loop safety belt
       
    48         if _done is None:
       
    49             _done = set()
       
    50         yield self
       
    51         _done.add(self.eid)
       
    52         for tr in self.req.execute('Any T WHERE T is WorkflowTransition, '
       
    53                                    'T transition_of WF, WF eid %(wf)s',
       
    54                                    {'wf': self.eid}).entities():
       
    55             if tr.subwf.eid in _done:
       
    56                 continue
       
    57             for subwf in tr.subwf.iter_workflows(_done):
       
    58                 yield subwf
    42 
    59 
    43     # state / transitions accessors ############################################
    60     # state / transitions accessors ############################################
    44 
    61 
    45     def state_by_name(self, statename):
    62     def state_by_name(self, statename):
    46         rset = self.req.execute('Any S, SN WHERE S name SN, S name %(n)s, '
    63         rset = self.req.execute('Any S, SN WHERE S name SN, S name %(n)s, '