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 from app.utils import parse_profile_fields 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() fields = parse_profile_fields(request.form) execute( """UPDATE users SET display_name = %s, height_cm = %s, age = %s, gender = %s, goal_weight_kg = %s, starting_weight_kg = %s, is_private = %s WHERE id = %s""", (fields["display_name"] or user["username"], fields["height_cm"], fields["age"], fields["gender"], fields["goal_weight_kg"], fields["starting_weight_kg"], fields["is_private"], 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"))