summaryrefslogtreecommitdiff
path: root/routers/profile.py
diff options
context:
space:
mode:
Diffstat (limited to 'routers/profile.py')
-rw-r--r--routers/profile.py25
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