Пример #1
0
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()
Пример #2
0
    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)