class DoneCommand(PreviewCommand): def __init__(self, root): self.bylog = ByLog(root, root.log) self.query1 = searching.parse_single("> * :{can_activate}") self.query2 = searching.parse_single("-> :{can_activate}") self.query3 = searching.parse_single("< :{can_activate}") self.results = [] if (datetime.datetime.now() - self.find_last_jump(root) > datetime.timedelta(minutes=30)): self.results.append( JumpResult(self.bylog.next(), actions=["activate"]) ) results = self.query1(root.active_node).actions(creates=False) for result in results: assert result.exists result.actions[:] = ["activate"] self.results.append(result) if self.results: return results = self.query2(root.active_node).actions(creates=False) for result in results: assert result.exists result.actions[:] = ["finishactivate"] self.results.append(result) if self.results: return results = self.query3(root.active_node).actions(creates=False) for result in results: assert result.exists result.actions[:] = ["finishactivate"] self.results.append(result) def find_last_jump(self, root): for path, event_type, time in reversed(root.log): if event_type == "jump": return time for path, event_type, time in root.log: if event_type == "activation": return time return datetime.datetime.now()
def __init__(self, root): self.bylog = ByLog(root, root.log) self.query1 = searching.parse_single("> * :{can_activate}") self.query2 = searching.parse_single("-> :{can_activate}") self.query3 = searching.parse_single("< :{can_activate}") self.results = [] if (datetime.datetime.now() - self.find_last_jump(root) > datetime.timedelta(minutes=30)): self.results.append( JumpResult(self.bylog.next(), actions=["activate"]) ) results = self.query1(root.active_node).actions(creates=False) for result in results: assert result.exists result.actions[:] = ["activate"] self.results.append(result) if self.results: return results = self.query2(root.active_node).actions(creates=False) for result in results: assert result.exists result.actions[:] = ["finishactivate"] self.results.append(result) if self.results: return results = self.query3(root.active_node).actions(creates=False) for result in results: assert result.exists result.actions[:] = ["finishactivate"] self.results.append(result)