Example #1
0
class TaskProgress(Timer):

    lines = None
    order = None

    title = u''

    def __init__(self, task_id):
        if task_id is None:
            self.task_state = None
        else:
            self.task_state = TaskWriteState(task_id)
        Timer.__init__(self)

    def reset(self):
        self.lines = {}
        self.order = {}
        Timer.reset(self)

    def get(self, line_id, **kw):
        return self.lines.get(line_id, **kw)

    def __getitem__(self, line_id):
        return self.lines[line_id]

    def add(self, line_id, **kw):
        if line_id not in self.lines:
            self.lines[line_id] = ProgressLine(**kw)
            self.order[line_id] = max(
                self.order.values()) + 1 if self.order else 1
        return self.get(line_id)

    def remove(self, line_id):
        del self.lines[line_id]
        del self.order[line_id]

    def finish(self, line_id, force=True):
        self.lines[line_id].finish()
        if force:
            self.force()

    def error(self, line_id, error):
        self.lines[line_id].errors.append(error)

    def tick(self, *args, **kw):
        if args or kw:
            self.add(*args, **kw)
            assert len(args) == 1
            line_id = args[0]
            self.lines[line_id].update(kw)

    def tock(self, *args, **kw):
        lines = dict([(n, self.lines[lid]) for lid, n in self.order.items()])
        progress = {'lines': lines, 'title': self.title}
        if self.task_state is not None:
            self.task_state.set_progress(progress)
        Timer.tock(self)
Example #2
0
class TaskProgress(Timer):

    lines = None
    order = None

    title = u""

    def __init__(self, task_id):
        if task_id is None:
            self.task_state = None
        else:
            self.task_state = TaskWriteState(task_id)
        Timer.__init__(self)

    def reset(self):
        self.lines = {}
        self.order = {}
        Timer.reset(self)

    def get(self, line_id, **kw):
        return self.lines.get(line_id, **kw)

    def __getitem__(self, line_id):
        return self.lines[line_id]

    def add(self, line_id, **kw):
        if line_id not in self.lines:
            self.lines[line_id] = ProgressLine(**kw)
            self.order[line_id] = max(self.order.values()) + 1 if self.order else 1
        return self.get(line_id)

    def remove(self, line_id):
        del self.lines[line_id]
        del self.order[line_id]

    def finish(self, line_id, force=True):
        self.lines[line_id].finish()
        if force:
            self.force()

    def error(self, line_id, error):
        self.lines[line_id].errors.append(error)

    def tick(self, *args, **kw):
        if args or kw:
            self.add(*args, **kw)
            assert len(args) == 1
            line_id = args[0]
            self.lines[line_id].update(kw)

    def tock(self, *args, **kw):
        lines = dict([(n, self.lines[lid]) for lid, n in self.order.items()])
        progress = {"lines": lines, "title": self.title}
        if self.task_state is not None:
            self.task_state.set_progress(progress)
        Timer.tock(self)