Example #1
0
    def _update_task_list(self, limit=10, st=0, ignore=False):
        session = Session()
        tasks = self.xunlei.get_task_list(limit, st)
        for task in tasks[::-1]:
            if task['status'] == "finished":
                self.last_task_id = task['task_id']
            db_task_status = session.query(
                db.Task.status).filter(db.Task.id == task['task_id']).first()
            if db_task_status and db_task_status[0] == "finished":
                continue

            db_task = db.Task()
            db_task.id = task['task_id']
            db_task.create_uid = self.uid
            db_task.cid = task['cid']
            db_task.url = task['url']
            db_task.lixian_url = task['lixian_url']
            db_task.taskname = task['taskname']
            db_task.task_type = task['task_type']
            db_task.status = task['status']
            if db_task.status == "failed":
                db_task.invalid = True
            db_task.process = task['process']
            db_task.size = task['size']
            db_task.format = task['format']

            db_task = session.merge(db_task)
            if not self._update_file_list(db_task):
                db_task.status = "failed"
                db_task.invalid = True
                session.add(db_task)

        session.commit()
Example #2
0
    def _update_task_list(self, limit=10, st=0, ignore=False):
        now = self.time()
        with self._last_update_task_lock:
            if now <= self._last_update_task and limit <= self._last_update_task_size:
                return
            self._last_update_task = self.time()
            self._last_update_task_size = limit

            session = Session()
            tasks = self.xunlei.get_task_list(limit, st)
            for task in tasks[::-1]:
                db_task_status = session.query(db.Task.status).filter(
                    db.Task.id == task['task_id']).first()
                if db_task_status and db_task_status[0] == "finished":
                    continue

                db_task = self.get_task(int(task['task_id']))
                changed = False
                if not db_task:
                    changed = True
                    db_task = db.Task()
                    db_task.id = task['task_id']
                    db_task.create_uid = self.uid
                    db_task.cid = task['cid']
                    db_task.url = task['url']
                    db_task.lixian_url = task['lixian_url']
                    db_task.taskname = unescape(task['taskname']) or "NULL"
                    db_task.task_type = task['task_type']
                    db_task.status = task['status']
                    db_task.invalid = True
                    db_task.process = task['process']
                    db_task.size = task['size']
                    db_task.format = task['format']
                else:
                    db_task.lixian_url = task['lixian_url']
                    if db_task.status != task['status']:
                        changed = True
                        db_task.status = task['status']
                    if db_task.status == "failed":
                        db_task.invalid = True
                    if db_task.process != task['process']:
                        changed = True
                        db_task.process = task['process']

                session.add(db_task)
                if changed and not self._update_file_list(db_task, session):
                    db_task.status = "failed"
                    db_task.invalid = True
                    session.add(db_task)

            session.commit()
            session.close()
Example #3
0
def add_task():
    '''Adds a new task with a task name, and the corresponding deadline.
    Deadline should be in YYYY-MM-DD format
    '''
    new_task = input('Enter task\n')
    deadline = input('Enter deadline\n')
    deadline = [int(x) for x in deadline.split('-')]
    deadline = db.datetime(deadline[0], deadline[1], deadline[2])

    new_task = db.Task(task=new_task, deadline=deadline)
    
    session.add(new_task)
    session.commit()
Example #4
0
 def createTask(self, msg, chat):
     self.task = db.Task(chat=chat,
                         name=msg,
                         status='TODO',
                         dependencies='',
                         parents='',
                         priority='',
                         duedate=DEFAULTDUEDATEFORMATED)
     db.session.add(self.task)
     db.session.commit()
     CONNECTION.sendMessage(
         "New task *TODO* [[{}]] {}".format(self.task.id, self.task.name),
         chat)
    def _update_task_list(self, limit=10, st=0, ignore=False):
        session = Session()
        tasks = self.xunlei.get_task_list(limit, st)
        for task in tasks[::-1]:
            if len(self.task_id_sample) < TASK_ID_SAMPLE_SIZE and task['lixian_url']:
                try:
                    self.xunlei.session.get(task['lixian_url'], cookies={"gdriveid": self.gdriveid}, prefetch=False)
                    self.task_id_sample.add(task['task_id'])
                except:
                    pass
            if not self.last_task_id and task['lixian_url']:
                try:
                    self.xunlei.session.get(task['lixian_url'], cookies={"gdriveid": self.gdriveid}, prefetch=False)
                    self.last_task_id = task['task_id']
                except:
                    pass
            db_task_status = session.query(db.Task.status).filter(
                    db.Task.id == task['task_id']).first()
            if db_task_status and db_task_status[0] == "finished" and self.last_task_id:
                continue

            db_task = self.get_task(int(task['task_id']))
            if not db_task:
                db_task = db.Task()
                db_task.id = task['task_id']
                db_task.create_uid = self.uid
                db_task.cid = task['cid']
                db_task.url = task['url']
                db_task.lixian_url = task['lixian_url']
                db_task.taskname = task['taskname']
                db_task.task_type = task['task_type']
                db_task.status = task['status']
                db_task.invalid = True
                db_task.process = task['process']
                db_task.size = task['size']
                db_task.format = task['format']
            else:
                db_task.lixian_url = task['lixian_url']
                db_task.status = task['status']
                if db_task.status == "failed":
                    db_task.invalid = True
                db_task.process = task['process']

            session.add(db_task)
            if not self._update_file_list(db_task):
                db_task.status = "failed"
                db_task.invalid = True
                session.add(db_task)
            
        session.commit()
Example #6
0
def tasks(task_id=None):
    if not g.user.in_group("retroherna"): error(403)
    task = None
    if task_id:
        task = db.session.query(db.Task).get(task_id)
        if not task: error(404)

    form = TaskForm(request.form, task)
    form.user_id.choices = [(0, '-')]
    for user in db.session.query(db.User):
        form.user_id.choices.append((user.id, user.name))

    if request.method == 'POST' and form.validate():
        if not form.due_time.data and (form.type.data == "announcement" or
                                       (task and not task.status)):
            flash("Nelze vytvořit oznámení bez konečného času.")
        else:
            if not task_id:
                task = db.Task()
                task.created_time = now()
                task.author = g.user
            task.text = form.text.data
            task.due_time = form.due_time.data
            if form.type.data == "task":
                task.status = "todo"
            task.user_id = form.user_id.data

            if not task_id:
                db.session.add(task)
            db.session.commit()
            if not task_id:
                flash("Úkol přidán.")
            else:
                flash("Úkol upraven.")
            return redirect(url_for('.tasks'))

    tasks = db.session.query(
        db.Task).all()  #.order_by(func.abs(func.now() - db.Task.due_time))
    sort_tasks(tasks)

    return render_template("forum/tasks.html",
                           tasks=tasks,
                           form=form,
                           task_id=task_id)
Example #7
0
    def duplicateTask(self, task_id, chat):
        self.task = self.treatException(task_id, chat)
        if self.task == 1:
            return

        self.dtask = db.Task(chat=self.task.chat,
                             name=self.task.name,
                             status=self.task.status,
                             dependencies=self.task.dependencies,
                             parents=self.task.parents,
                             priority=self.task.priority,
                             duedate=self.task.duedate)
        db.session.add(self.dtask)

        for t in self.task.dependencies.split(',')[:-1]:
            self.qy = db.session.query(db.Task).filter_by(id=int(t), chat=chat)
            t = self.qy.one()
            t.parents += '{},'.format(self.dtask.id)

        db.session.commit()
        CONNECTION.sendMessage(
            "New task *TODO* [[{}]] {}".format(self.dtask.id, self.dtask.name),
            chat)