Пример #1
0
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)
Пример #2
0
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'))
Пример #3
0
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)))
Пример #4
0
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)
Пример #5
0
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))