diff options
Diffstat (limited to 'routers')
| -rw-r--r-- | routers/profile.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/routers/profile.py b/routers/profile.py index 1986257..8e4a081 100644 --- a/routers/profile.py +++ b/routers/profile.py @@ -1,12 +1,15 @@ from fastapi import APIRouter, Depends, Request +from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from sqlalchemy.orm import Session from database import get_db from models import Film +from services.film_people import split_credit_names router = APIRouter(tags=["profile"]) templates = Jinja2Templates(directory="templates") +templates.env.globals.update(split_credit_names=split_credit_names) def _diary_films(db: Session) -> list[Film]: @@ -72,6 +75,8 @@ def _build_profile_payload(films: list[Film]) -> dict: "id": film.id, "title": film.title, "poster_url": film.poster_url, + "year": film.year, + "director": split_credit_names(film.director)[0] if film.director else None, "date_watched": film.date_watched.isoformat() if film.date_watched else None, "stars": film.stars, } @@ -89,3 +94,23 @@ async def public_profile(request: Request, db: Session = Depends(get_db)): name="profile.html", context={"request": request, **payload}, ) + + +@router.get("/tyler/films/partial") +async def public_profile_films_partial( + request: Request, + offset: int = 0, + limit: int = 20, + db: Session = Depends(get_db), +): + films = _diary_films(db) + page = films[offset : offset + limit] + has_more = (offset + limit) < len(films) + + html = templates.get_template("_public_feed_partial.html").render( + request=request, + films=page, + ) + response = HTMLResponse(html) + response.headers["X-Has-More"] = "true" if has_more else "false" + return response |
