Files
ad-prod/apps/stages.py
John Lancaster 852dbcfd8f stagedlight
2025-11-21 17:45:56 -06:00

36 lines
832 B
Python

from datetime import datetime
from typing import Any
from pydantic import BaseModel
from pydantic import PrivateAttr
from pydantic import field_serializer
class EntityState(BaseModel):
state: bool = True
color_temp_kelvin: int
brightness: int
@field_serializer('state')
def convert_state(self, val: Any):
if val:
return 'on'
else:
return 'off'
class Stage(BaseModel):
# start: Annotated[time, BeforeValidator(lambda v: parser(v).time())]
start: str
_start: datetime = PrivateAttr()
scene: dict[str, EntityState]
def assign_start(self, dt: datetime):
self._start = dt
def formatted_start(self, fmt: str) -> str:
return self._start.strftime(fmt)
def scene_json(self):
return self.model_dump(mode='json')['scene']