controlpanel-old/backend/proto.py

45 lines
766 B
Python

from typing import *
from uuid import UUID
from enum import Enum
from pydantic import BaseModel
class FrontendToken(BaseModel):
type: Literal["frontend"]
class ComputerToken(BaseModel):
type: Literal["computer"]
uuid: UUID
ComputerType = Literal["computer", "turtle", "pocket"]
class Computer(BaseModel):
type: ComputerType
is_advanced: bool
uuid: UUID
label: Optional[str]
group: str
# uUiD iS nOt JsOn SeRiAlIzAbLe
def dict(self):
data = super().dict()
data["uuid"] = str(data["uuid"])
return data
class DynamicComputerState(BaseModel):
is_online: bool
class StateItem(BaseModel):
static: Computer
dynamic: DynamicComputerState
class State:
computers: List[StateItem]