summaryrefslogtreecommitdiff
path: root/routers/about.py
blob: fe28524188f7ba9f4ed8ac8ce29ebb88302eab78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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,
        },
    )