advent22/api/advent22_api/core/calendar_config.py

56 lines
1.1 KiB
Python
Raw Permalink Normal View History

import tomllib
2023-09-08 18:17:18 +00:00
from typing import TypeAlias
import tomli_w
from fastapi import Depends
2023-09-08 18:17:18 +00:00
from pydantic import BaseModel
from .config import Config, get_config
2023-10-29 16:08:16 +00:00
from .dav.webdav import WebDAV
2023-09-08 18:17:18 +00:00
class DoorSaved(BaseModel):
# Tag, an dem die Tür aufgeht
day: int
# Koordinaten für zwei Eckpunkte
x1: int
y1: int
x2: int
y2: int
DoorsSaved: TypeAlias = list[DoorSaved]
class CalendarConfig(BaseModel):
# Dateiname Hintergrundbild
background: str = "adventskalender.jpg"
2023-11-02 12:48:52 +00:00
# Dateiname Favicon
favicon: str = "favicon.png"
2023-09-08 18:17:18 +00:00
# Türen für die UI
doors: DoorsSaved = []
async def change(self, cfg: Config) -> None:
"""
Kalender Konfiguration ändern
"""
await WebDAV.write_str(
2023-09-21 11:49:28 +00:00
path=f"files/{cfg.calendar}",
2023-09-21 11:26:33 +00:00
content=tomli_w.dumps(self.model_dump()),
)
async def get_calendar_config(
cfg: Config = Depends(get_config),
) -> CalendarConfig:
"""
Kalender Konfiguration lesen
"""
2023-09-21 11:49:28 +00:00
txt = await WebDAV.read_str(path=f"files/{cfg.calendar}")
return CalendarConfig.model_validate(tomllib.loads(txt))