created stages dir
This commit is contained in:
36
apps/stages/stages.py
Normal file
36
apps/stages/stages.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from datetime import datetime
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel
|
||||
from pydantic import PrivateAttr
|
||||
from pydantic import field_serializer
|
||||
|
||||
|
||||
class EntityState(BaseModel, extra='allow'):
|
||||
state: bool = True
|
||||
color_temp_kelvin: int | None = None
|
||||
rgb_color: list[int] | None = None
|
||||
brightness: int | None = None
|
||||
|
||||
@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']
|
||||
Reference in New Issue
Block a user