Fix movie/series API responses never surfacing company logo_path
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s

movie_service.get_movie_detail() hardcoded companies[].logo_path = None
instead of looking up the company's logo artwork, and tv_service's
networks[]/companies[] never set logo_path at all -- both just built
CompanyBriefOut without the artwork lookup that company_service.py (and
_season_brief for posters) already does correctly. Ingestion and storage
were working the whole time; the API layer just never read the result.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
NixReaper
2026-09-05 08:01:56 -05:00
co-authored by Claude Sonnet 5
parent 2138d4afc3
commit 73488a0d80
4 changed files with 69 additions and 21 deletions
+13 -9
View File
@@ -47,6 +47,18 @@ async def get_movie_detail(session: AsyncSession, movie_aurora_id: str) -> Movie
cast, crew = split_credits(credits_)
company_out: list[CompanyBriefOut] = []
for company, _role in companies:
logos = await polymorphic.get_artwork(session, "company", company.id, ArtworkType.LOGO)
company_out.append(
CompanyBriefOut(
id=aurora_id("company", str(company.id)),
name=company.name,
company_type=company.company_type.value,
logo_path=primary_artwork_path(logos, ArtworkType.LOGO),
)
)
return MovieDetailOut(
id=aurora_id("movie", str(movie.id)),
title=movie.title,
@@ -67,15 +79,7 @@ async def get_movie_detail(session: AsyncSession, movie_aurora_id: str) -> Movie
keywords=[KeywordOut(id=aurora_id("keyword", str(k.id)), name=k.name) for k in keywords],
cast=cast,
crew=crew,
companies=[
CompanyBriefOut(
id=aurora_id("company", str(company.id)),
name=company.name,
company_type=company.company_type.value,
logo_path=None,
)
for company, _role in companies
],
companies=company_out,
collection=(
CollectionBriefOut(
id=aurora_id("collection", str(movie.collection.id)), name=movie.collection.name
+14 -12
View File
@@ -53,6 +53,16 @@ async def _season_brief(session: AsyncSession, season) -> SeasonBriefOut:
)
async def _company_brief(session: AsyncSession, company) -> CompanyBriefOut:
logos = await polymorphic.get_artwork(session, "company", company.id, ArtworkType.LOGO)
return CompanyBriefOut(
id=aurora_id("company", str(company.id)),
name=company.name,
company_type=company.company_type.value,
logo_path=primary_artwork_path(logos, ArtworkType.LOGO),
)
async def get_series_detail(session: AsyncSession, series_aurora_id: str) -> SeriesDetailOut:
series_id = _resolve_id(series_aurora_id, "series", SeriesNotFoundError)
series = await tv_repository.get_series_by_id(session, series_id)
@@ -75,6 +85,8 @@ async def get_series_detail(session: AsyncSession, series_aurora_id: str) -> Ser
_, creators = split_credits([c for c in credits_ if c.department == "Creator"])
season_briefs = [await _season_brief(session, s) for s in seasons]
network_briefs = [await _company_brief(session, c) for c, _role in networks]
company_briefs = [await _company_brief(session, c) for c, _role in companies]
return SeriesDetailOut(
id=aurora_id("series", str(series.id)),
@@ -96,18 +108,8 @@ async def get_series_detail(session: AsyncSession, series_aurora_id: str) -> Ser
creators=creators,
cast=cast,
crew=crew,
networks=[
CompanyBriefOut(
id=aurora_id("company", str(c.id)), name=c.name, company_type=c.company_type.value
)
for c, _role in networks
],
companies=[
CompanyBriefOut(
id=aurora_id("company", str(c.id)), name=c.name, company_type=c.company_type.value
)
for c, _role in companies
],
networks=network_briefs,
companies=company_briefs,
seasons=season_briefs,
images=to_images_out(artwork),
videos=[to_video_out(v) for v in videos],