41 lines
1.3 KiB
Python

from fastapi import APIRouter, Request, Depends, Form
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.templating import Jinja2Templates
from app.models.base import async_session
from app.models.user import User
from app.auth import get_current_user
router = APIRouter()
templates = Jinja2Templates(directory="app/templates")
@router.get("/profile", response_class=HTMLResponse)
async def profile_page(request: Request, user: User = Depends(get_current_user)):
return templates.TemplateResponse(request, "profile.html", {
"user": user,
})
@router.post("/profile")
async def update_profile(
request: Request,
user: User = Depends(get_current_user),
display_name: str = Form(default=None),
vital_stats: str = Form(default=""),
medical_notes: str = Form(default=""),
goals: str = Form(default=""),
equipment: str = Form(default=""),
):
async with async_session() as session:
session.add(user)
if display_name is not None:
user.display_name = display_name
user.vital_stats = vital_stats
user.medical_notes = medical_notes
user.goals = goals
user.equipment = equipment
await session.commit()
return RedirectResponse(url="/profile", status_code=303)