feat: T03+T04 backend - FastAPI, DB models, Rentman integration, admin auth, APScheduler
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user