import random from fastapi import APIRouter, Depends, Request from fastapi.templating import Jinja2Templates from sqlalchemy.orm import Session from database import get_db from models import Film router = APIRouter(tags=["about"]) templates = Jinja2Templates(directory="templates") @router.get("/about", name="about") def about(request: Request, db: Session = Depends(get_db)): films_by_rating = {} for stars in (1, 2, 3): all_films = ( db.query(Film) .filter(Film.shelf == "diary", Film.stars == stars) .all() ) # Deduplicate by title, keeping most recent watch per title seen_titles = {} for film in sorted(all_films, key=lambda f: f.date_watched or "", reverse=True): if film.title not in seen_titles: seen_titles[film.title] = film # Randomize and take up to 3 unique_films = list(seen_titles.values()) random.shuffle(unique_films) films_by_rating[str(stars)] = unique_films[:3] return templates.TemplateResponse( request=request, name="about.html", context={ "request": request, "active_page": "about", "films_by_rating": films_by_rating, }, )