summaryrefslogtreecommitdiff
path: root/app/routes/basic.py
blob: bd5beb34e876653ea488c014b46d74ccb5d21503 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from app import app, db
from flask import render_template
from flask_login import current_user, login_required
from tables import Workout, Exercise, WorkoutRecord, SetRecord


@app.route("/", methods=["GET"])
def index():
    return render_template("index.html")


@app.route("/home", methods=["GET"])
@login_required
def home():
    # Workout records
    records = (
        db.session.query(WorkoutRecord)
        .filter_by(user_id=current_user.id)
        .order_by(WorkoutRecord.finished.desc())
        .all()
    )

    # Set records length
    sets_completed = (
        db.session.query(SetRecord, WorkoutRecord)
        .filter(
            WorkoutRecord.id == SetRecord.workout_record_id,
            WorkoutRecord.user_id == current_user.id,
        )
        .count()
    )

    # Top 3 exercises (by frequency)
    top3 = (
        db.session.query(Exercise)
        .join(SetRecord)
        .filter(SetRecord.exercise_id == Exercise.id)
        .group_by(Exercise.id)
        .order_by(db.func.count(SetRecord.id).desc())
        .limit(3)
        .all()
    )

    return render_template(
        "home.html", records=records, sets_completed=sets_completed, top3=top3
    )