""" Python representation of the "config.txt" file inside the WebDAV directory. """ from typing import Any from pydantic import BaseModel class TickerUIConfig(BaseModel): """ Configuration for how the UI displays the ticker content. """ color: str = "primary" class TickerConfig(TickerUIConfig): """ Section "[ticker]" in "config.txt". Combined configuration for the ticker. """ file_name: str = "ticker" separator: str = " +++ " comment_marker: str = "#" class ImageUIConfig(BaseModel): """ Configuration for how the UI displays the image carousel. """ height: int = 300 contain: bool = False speed: int = 10000 class ImageConfig(ImageUIConfig): """ Sections "[image*]" in "config.txt". """ mode: str = "RGB" save_params: dict[str, Any] = { "format": "JPEG", "quality": 85, } class CalendarUIConfig(BaseModel): """ Configuration for how the UI displays the calendar carousel. """ speed: int = 10000 class CalendarConfig(CalendarUIConfig): """ Sections "[calendar*]" in "config.txt". """ future_days: int = 365 aggregates: dict[str, list[str]] = {} class ServerUIConfig(BaseModel): """ Section "[server]" in "config.txt". """ name: str = "OEKZident" host: str = "https://oekzident.de" class LogoUIConfig(BaseModel): """ Section "[logo]" in "config.txt". """ above: str = "Technisches Hilfswerk" below: str = "OV Musterstadt" class Config(BaseModel): """ Main representation of "config.txt". """ def __hash__(self) -> int: """ Fake hash (the config is always the config) """ return hash("config") image_dir: str = "image" text_dir: str = "text" file_dir: str = "file" logo: LogoUIConfig = LogoUIConfig() image: ImageConfig = ImageConfig() server: ServerUIConfig = ServerUIConfig() ticker: TickerConfig = TickerConfig() calendar: CalendarConfig = CalendarConfig()