Example #1
0
def tasks():
    """Get incomplete tasks for the current user and mark tasks as complete."""
    if request.method == 'GET':
        tasks = current_user.get_active_tasks()
        return render_template('tasks.html', tasks=tasks)
    elif request.method == 'POST':

        # check validity of csrf token
        if request.form.get('state') != session['state']:
            # print("\nInvalid state token")
            # print("Token from form:", request.form.get('state'))
            # print("Token from session:", session['state'])
            response = jsonify(failed='403 invalid csrf token')
            response.status_code = 403
            return response

        task_id = request.form.get('complete')
        task = Task.query.get(task_id)
        # if task does not belong to current user
        # raise 403 error
        if task.user != current_user.id:
            response = jsonify(failed='403 not authorized')
            response.status_code = 403
            return response
        task.completed_on = current_user.get_local_date()
        db.session.add(task)
        response = jsonify(success=task_id)
        response.status_code = 200
        return response
Example #2
0
def get_contribution_history():
    today = current_user.get_local_date()
    td = timedelta(days=7)
    start_date = today - td
    projects = current_user.get_project_contributions(start_date)
    labels = []
    data = []
    for id, label, time in projects:
        labels.append(label)
        data.append(format(time / 60.0, '.2f'))
    response = jsonify(labels=labels, data=data)
    response.status_code = 200
    return response
Example #3
0
def contribute_to_project():
    project_id = int(request.form.get('id'))
    project = Project.query.get(project_id)

    if project.user != current_user.id:
        response = jsonify(failed='403 Not authorized')
        response.status_code = 403
        return response

    time = int(request.form.get('time'))
    date = current_user.get_local_date()
    contribution = Contribution(project=project_id, time=time, date=date)
    db.session.add(contribution)
    db.session.commit()

    response = jsonify(status='success', id=project_id, time=time)
    response.status_code = 200
    return response
Example #4
0
def dashboard():
    """Show current user's tasks and projects."""

    # Generate a csrf token and
    # add to user session
    session['state'] = generate_csrf_token()

    # Get user's tasks
    tasks = current_user.get_active_tasks()

    # Projects
    today = date.today()
    goals = []
    project_goals = current_user.get_project_goals()
    for id, name, goal in project_goals:
        p = Project.query.get(id)
        contributed = p.time_contributed(start=current_user.get_local_date())
        goals.append((id, name, goal, contributed))

    projects = [project.to_dict() for project in current_user.projects
                if project.active]

    return render_template(
        'dashboard.html', tasks=tasks, goals=goals, projects=projects)