Example #1
0
 def runTransaction(self, attr, set_committing, *args, **kw):
     self.beginTransaction()
     max_db_retries = self.max_db_retries
     result = None
     conflict_exception = None
     for n_try in range(min(1, max_db_retries+1)):
         try:
             old_site = getSite()
             setSite(self.schooltool_app)
             callable = getattr(self.remote_task, attr)
             result = callable(*args, **kw)
             setSite(old_site)
             if set_committing:
                 try:
                     status = TaskWriteState(self.request.id)
                     status.set_committing()
                 except Exception:
                     pass # don't care really
         except ConflictError, conflict:
             # Transaction conflict, let's repeat
             conflict_exception = conflict
         except Exception:
             failure = FormattedTraceback()
             try:
                 self.abortTransaction()
             except Exception:
                 failure.append(FormattedTraceback())
             raise failure
Example #2
0
 def runTransaction(self, attr, set_committing, *args, **kw):
     self.beginTransaction()
     max_db_retries = self.max_db_retries
     result = None
     conflict_exception = None
     for n_try in range(min(1, max_db_retries + 1)):
         try:
             old_site = getSite()
             setSite(self.schooltool_app)
             callable = getattr(self.remote_task, attr)
             result = callable(*args, **kw)
             setSite(old_site)
             if set_committing:
                 try:
                     status = TaskWriteState(self.request.id)
                     status.set_committing()
                 except Exception:
                     pass  # don't care really
         except ConflictError, conflict:
             # Transaction conflict, let's repeat
             conflict_exception = conflict
         except Exception:
             failure = FormattedTraceback()
             try:
                 self.abortTransaction()
             except Exception:
                 failure.append(FormattedTraceback())
             raise failure
Example #3
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 #4
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 #5
0
 def __init__(self, task_id):
     if task_id is None:
         self.task_state = None
     else:
         self.task_state = TaskWriteState(task_id)
     Timer.__init__(self)
Example #6
0
 def __init__(self, task_id):
     if task_id is None:
         self.task_state = None
     else:
         self.task_state = TaskWriteState(task_id)
     Timer.__init__(self)