Files
WeightTracker/app/routes/profile.py
Peter Stockings 56168a182b Refactor codebase
2026-02-24 21:23:14 +11:00

39 lines
1.2 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
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"))