diff --git a/api/advent22_api/core/depends.py b/api/advent22_api/core/depends.py index 29bfbc5..b8482a6 100644 --- a/api/advent22_api/core/depends.py +++ b/api/advent22_api/core/depends.py @@ -1,3 +1,4 @@ +from datetime import date from io import BytesIO from typing import cast @@ -7,7 +8,7 @@ from PIL import Image, ImageFont from .advent_image import _XY, AdventImage from .calendar_config import CalendarConfig, get_calendar_config from .config import Config, get_config -from .helpers import Random, list_images_auto, load_image, set_len +from .helpers import EventDays, Random, list_images_auto, load_image, set_len from .webdav import WebDAV @@ -21,6 +22,22 @@ async def get_all_days( return sorted(set(door.day for door in cal_cfg.doors)) +async def get_all_event_days( + days: list[int] = Depends(get_all_days), +) -> EventDays: + """ + Aktuelles EventDays Objekt + """ + + return EventDays.get( + today=date.today(), + begin_month=12, + begin_day=1, + events_after=[day - 1 for day in days], + closing_after=90, + ) + + async def get_all_parts( cfg: Config = Depends(get_config), days: list[int] = Depends(get_all_days), diff --git a/api/advent22_api/routers/admin.py b/api/advent22_api/routers/admin.py index 5601c91..e3eeb79 100644 --- a/api/advent22_api/routers/admin.py +++ b/api/advent22_api/routers/admin.py @@ -3,9 +3,11 @@ from datetime import date from fastapi import APIRouter, Depends from pydantic import BaseModel +from advent22_api.core.helpers import EventDays + from ..core.calendar_config import CalendarConfig, DoorsSaved, get_calendar_config from ..core.config import Config, get_config -from ..core.depends import get_all_image_names, get_all_parts +from ..core.depends import get_all_event_days, get_all_image_names, get_all_parts from ..core.settings import SETTINGS from ._security import require_admin, user_is_admin @@ -22,9 +24,9 @@ async def is_admin( class ConfigModel(BaseModel): class __Puzzle(BaseModel): solution: str - begin: date + first: date + last: date end: date - closing: date seed: str class __Calendar(BaseModel): @@ -56,6 +58,7 @@ async def get_config_model( _: None = Depends(require_admin), cfg: Config = Depends(get_config), cal_cfg: CalendarConfig = Depends(get_calendar_config), + event_days: EventDays = Depends(get_all_event_days), ) -> ConfigModel: """ Kombiniert aus privaten `settings`, `config` und `calendar_config` @@ -65,9 +68,9 @@ async def get_config_model( { "puzzle": { "solution": cfg.puzzle.solution, - "begin": date.today(), # TODO - "end": date.today(), # TODO - "closing": date.today(), # TODO + "first": event_days.first, + "last": event_days.last, + "end": event_days.end, "seed": cfg.puzzle.random_seed, }, "calendar": { diff --git a/ui/src/components/admin/ConfigView.vue b/ui/src/components/admin/ConfigView.vue index 9b2b5fa..591932e 100644 --- a/ui/src/components/admin/ConfigView.vue +++ b/ui/src/components/admin/ConfigView.vue @@ -21,13 +21,13 @@