Files
hms-licht-ton/backend/app/schemas/rental_request.py
T

53 lines
1.4 KiB
Python

"""Pydantic schemas for rental requests."""
from pydantic import BaseModel, EmailStr, field_validator
from datetime import date
class RentalRequestItemCreate(BaseModel):
equipment_id: int
quantity: int = 1
@field_validator("quantity")
@classmethod
def quantity_positive(cls, v: int) -> int:
if v < 1:
raise ValueError("quantity must be >= 1")
return v
class RentalRequestCreate(BaseModel):
event_name: str
date_start: date
date_end: date
location: str | None = None
person_count: int | None = None
contact_name: str
contact_company: str | None = None
contact_email: EmailStr
contact_phone: str | None = None
contact_street: str | None = None
contact_postalcode: str | None = None
contact_city: str | None = None
message: str | None = None
items: list[RentalRequestItemCreate]
@field_validator("date_end")
@classmethod
def date_end_after_start(cls, v: date, values) -> date:
start = values.data.get("date_start")
if start and v < start:
raise ValueError("date_end must be >= date_start")
return v
@field_validator("items")
@classmethod
def items_not_empty(cls, v: list) -> list:
if len(v) == 0:
raise ValueError("items must not be empty")
return v
class RentalRequestResponse(BaseModel):
reference_number: str
status: str