"""This module declareds the pydantic schema representation for devices.""" from datetime import datetime from pydantic import BaseModel, validator class DeviceModel(BaseModel): id: int name: str picture_code: str @validator('name') def assert_name_is_valid(cls, name): if not len(name): raise ValueError("Name must not be empty.") return name @validator('picture_code') def assert_picture_is_valid(cls, picture): if not len(picture): raise ValueError("Picture must not be empty.") return picture class Config: orm_mode = True class Device(BaseModel): id: int added: datetime last_seen: datetime model: DeviceModel @validator('added') def assert_added_is_valid(cls, added): if added >= datetime.now(added.tzinfo): raise ValueError("Date added cannot be in the future.") return added @validator('last_seen') def assert_last_seen_is_valid(cls, last_seen): if last_seen >= datetime.now(last_seen.tzinfo): raise ValueError("Date last seen cannot be in the future.") return last_seen class Config: orm_mode = True