41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from flask import Blueprint, render_template, request, redirect, url_for, flash
|
|
from app.auth import login_required, get_current_user
|
|
from app.db import execute
|
|
|
|
bp = Blueprint("profile", __name__)
|
|
|
|
|
|
@bp.route("/profile", methods=["GET"])
|
|
@login_required
|
|
def index():
|
|
user = get_current_user()
|
|
return render_template("profile.html", user=user)
|
|
|
|
|
|
@bp.route("/profile", methods=["POST"])
|
|
@login_required
|
|
def update():
|
|
user = get_current_user()
|
|
display_name = request.form.get("display_name", "").strip()
|
|
height_cm = request.form.get("height_cm") or None
|
|
age = request.form.get("age") or None
|
|
gender = request.form.get("gender") or None
|
|
goal_weight_kg = request.form.get("goal_weight_kg") or None
|
|
starting_weight_kg = request.form.get("starting_weight_kg") or None
|
|
|
|
execute(
|
|
"""UPDATE users
|
|
SET display_name = %s, height_cm = %s, age = %s, gender = %s,
|
|
goal_weight_kg = %s, starting_weight_kg = %s
|
|
WHERE id = %s""",
|
|
(display_name or user["username"], height_cm, age, gender,
|
|
goal_weight_kg, starting_weight_kg, user["id"]),
|
|
)
|
|
|
|
if request.headers.get("HX-Request"):
|
|
flash("Profile updated!", "success")
|
|
return render_template("profile.html", user=get_current_user())
|
|
|
|
flash("Profile updated!", "success")
|
|
return redirect(url_for("profile.index"))
|