Add optional photo providers, layout studio and scoped integrations

This commit is contained in:
Pigway
2026-10-08 23:18:11 +08:00
parent 3643fae86a
commit 69a0841868
38 changed files with 2843 additions and 41 deletions
+12 -3
View File
@@ -98,6 +98,8 @@ def create_app(settings=None, start_worker=True):
weather = ConfigurableWeatherProvider(db)
renderer = TemplateRenderer(db, settings, weather, assets)
service = DisplayService(db, settings, registry, assets, renderer)
from pigway_frame_flow.extensions.api import install_extensions
scheduler = Scheduler(service)
seed_client(db, settings.api_token)
seed_accounts(db, settings.config_dir)
@@ -123,6 +125,7 @@ def create_app(settings=None, start_worker=True):
lifespan=lifespan,
responses=error_responses,
)
install_extensions(app, service)
install_accounts(app, db)
app.state.service = service
app.state.scheduler = scheduler
@@ -483,7 +486,9 @@ def create_app(settings=None, start_worker=True):
request: Request,
idempotency_key: str | None = Header(default=None),
):
renderer.info(payload.template)
service.validate(
DisplayRequest(device_id=settings.device_id, content=payload), writing=False
)
return submit(
request,
"render",
@@ -701,8 +706,12 @@ def create_app(settings=None, start_worker=True):
tags=["Photo sources"],
dependencies=[Depends(require("admin"))],
)
def photos_people():
return service.photo_sources.synology.people()
def photos_people(space: Literal["shared", "personal"] = "shared"):
return (
service.photo_sources.synology.people()
if space == "shared"
else service.photo_sources.synology.people(space)
)
@app.get(
"/api/v1/photo-sources",