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"))