def traverse_up_down(self, proc): # TODO: infinite recursion prevention parent_process_id = get_parent_process_id(proc) process_id = get_process_id(proc) total = [] # get parents if parent_process_id: total.extend(self.traverse_up(parent_process_id)) total.extend(self.traverse_down(process_id)) for proc in total: yield proc
def traverse_up(self, guid): # TODO: this prompts a larger issue of - how do we handle process segments? total = [] for proc in self.input.get_process_docs('unique_id:%s' % (guid,)): process_id = get_process_id(proc) if process_id not in self.input_proc_guids: self.input_proc_guids.add(process_id) total.append(proc) parent_process_id = get_parent_process_id(proc) if parent_process_id and parent_process_id not in self.input_proc_guids: total.extend(self.traverse_up(parent_process_id)) return total