ba-thesis/backend/schemas/devices.py

48 lines
1.2 KiB
Python

"""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