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()
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()
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()
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()
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)
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)