Files
fdhview/fhdhview/api/screenings.py
T
2026-10-19 16:01:27 +02:00

48 lines
1.3 KiB
Python

# SPDX-FileCopyrightText: 2026 Filmhuis Den Haag
# SPDX-License-Identifier: AGPL-3.0-or-later
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from fastapi import APIRouter, Depends
from sqlmodel import col, select
from sqlmodel.ext.asyncio.session import AsyncSession
from fhdhview.api.deps import get_session
from fhdhview.core.config import settings
from fhdhview.models.screening import Screening
from fhdhview.schemas.screening import ScreeningRead
router = APIRouter(prefix="/screenings", tags=["Screenings"])
@router.get(
"",
response_model=list[ScreeningRead],
summary="Get upcoming screenings for the infodesk"
)
async def get_infodesk_screenings(
session: AsyncSession = Depends(get_session)
) -> list[ScreeningRead]:
now = datetime.now(tz=ZoneInfo(settings.timezone))
today = now.date()
query = (
select(Screening)
.where(Screening.start > now - timedelta(minutes=10))
.where(Screening.start < today + timedelta(days=1))
.order_by(col(Screening.start))
.limit(8)
)
screenings = await session.exec(query)
return [ScreeningRead.model_validate(s) for s in screenings.all()]
@router.get(
"/prices",
response_model=dict,
summary="Get pricing information"
)
async def get_screening_prices() -> dict:
return settings.prices