def run_task(db_file): task = db.start_task(db_file) if task == None: print("No task to run.") return try: parameters = tuple(task['PARAMETERS'].split(',')) command = task['DEFINITION'].format(*parameters) except: result = 'Error:', sys.exc_info()[1] status = 'ERROR' if task['TASKTYPE'] == 'python': output = io.StringIO() with redirect_stdout(output): try: exec(command) result = output.getvalue() status = 'COMPLETED' except: result = 'Error:', sys.exc_info()[1] status = 'ERROR' db.update_task(db_file, task['id'], status, result) elif task['TASKTYPE'] == 'bash': output = io.StringIO() try: result = runcmd(command) status = 'COMPLETED' except: result = 'Error:', sys.exc_info()[1] status = 'ERROR' db.update_task(db_file, task['id'], status, result)
def save_edited_task(task_id): #task_id = request.form.get('task_id', None) task_name = request.form.get('name', None) task_due_date = request.form.get('due_date', None) task_priority = request.form.get('priority', None) #db.update_task("taskId", "taskName", "dueDate", "priority") db.update_task(task_id, task_name, task_due_date, task_priority) return redirect(url_for('tasks'))
def undo(update, context): task_ids = db.get_task_ids_from_context(update.effective_user, context) for task_id in task_ids: task = db.get_task(update.effective_user, task_id) task.undo() db.update_task(update.effective_user, task) for id in task_ids: context.bot.send_message(chat_id=update.effective_chat.id, text='undone task: ' + str(db.get_task(update.effective_user, id)))
def put(): if update_task(name=request.get_json(silent=True)["name"], desc="UPDATED", exec_time=datetime(2018, 2, 1, 17, 18, 3, 199474), priority=2): d = {"status": "OK"} else: d = {"status": "FAIL", "desc": "Not Found"} return jsonify(d)
def updatetask(id): post_json = request.get_data() return update_task(post_json)
def handle_complete_task(description): if description is None: return question(render_template("no_desc"))\ .reprompt(render_template("reprompt")) # Only get undone tasks matching the description matches = search_for_task(description) if len(matches) == 0: return statement(render_template("no_matches")) if len(matches) > 1: return statement( render_template("more_than_one_match", num=len(matches), descriptions=str( [match['description'] for match in matches]))) match = matches[0] if match['completed'] == True: return statement(render_template("todo_already_done")) if reminder_doable_today(match) == False: return statement(render_template("reminder_not_yet_due")) task_divergence = algorithms.calculate_divergence(match) overall_divergence = algorithms.get_overall_divergence( db.get_all_user_tasks(session.user.userId)) db.update_task(session.user.userId, match['task_id'], completions=match['completions'] + 1) if match['is_recurring'] == True: # Calculate # of trials missed last_completed = dateparser.parse(match['last_completed']).date() today = date.today() days_until = timedelta(days=int(match['days_until'])) # Calculates # of trials - get # of days since last completed, # floordiv by day interval, subtract one to get *missed* trials # not counting this one trials_missed = min(0, (today - last_completed) // days_until - 1) db.update_task(session.user.userId, match['task_id'], last_completed=str(date.today()), trials=match['trials'] + trials_missed + 1, completions=match['completions'] + 1) return statement( render_template("completed_reminder", description=match['description'], days_until=days_until.days, task_divergence=task_divergence, overall_divergence=overall_divergence)) else: # Not recurring, simply mark as done db.update_task(session.user.userId, match['task_id'], last_completed=str(date.today()), completed=True, completions=1, trials=1) return statement( render_template("completed_todo", description=match['description'], task_divergence=task_divergence, overall_divergence=overall_divergence))