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

39 lines
1.2 KiB
Python

# SPDX-FileCopyrightText: 2026 Filmhuis Den Haag
# SPDX-License-Identifier: AGPL-3.0-or-later
from datetime import datetime
import sqlalchemy as sa
from pydantic import field_serializer, field_validator
from sqlmodel import Field, SQLModel
from fhdhview.models.enums import KijkWijzer, Screen
class Screening(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
session: int
screen: Screen = Field(default=Screen.ONE, sa_column=sa.Column(sa.Enum(Screen)))
complex_ident: str
start: datetime
end: datetime
duration: int
title: str
rating: int
seats_total: int
seats_sold: int
en_subs: bool = False
intro: bool = False
outro: bool = False
kijkwijzer: list[KijkWijzer] = Field(default_factory=list, sa_type=sa.JSON)
tags: list[str] = Field(default_factory=list, sa_type=sa.JSON)
@field_validator("kijkwijzer", mode="before")
@classmethod
def _coerce(cls, v):
return [r.value if isinstance(r, KijkWijzer) else r for r in v]
@field_serializer("kijkwijzer")
def _serialize(self, v: list[KijkWijzer]) -> list[str]:
return [r.value if isinstance(r, KijkWijzer) else r for r in v]