diff options
Diffstat (limited to 'routers')
| -rw-r--r-- | routers/about.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/routers/about.py b/routers/about.py new file mode 100644 index 0000000..fe28524 --- /dev/null +++ b/routers/about.py @@ -0,0 +1,43 @@ +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, + }, + ) |
