sumaq/backend/app/schemas/contractor.py

44 lines
1.2 KiB
Python

from pydantic import BaseModel, EmailStr, field_validator
from typing import Optional, List
from .specialty import Specialty
class ContractorBase(BaseModel):
name: str
ruc: Optional[str] = None
contact_name: Optional[str] = None
email: Optional[EmailStr] = None
phone: Optional[str] = None
address: Optional[str] = None
specialty_id: Optional[int] = None
parent_id: Optional[int] = None
is_active: bool = True
@field_validator('ruc', 'contact_name', 'email', 'phone', 'address', 'specialty_id', 'parent_id', mode='before')
@classmethod
def empty_string_to_none(cls, v):
if v == "":
return None
return v
class ContractorCreate(ContractorBase):
pass
class ContractorUpdate(BaseModel):
name: Optional[str] = None
ruc: Optional[str] = None
contact_name: Optional[str] = None
email: Optional[EmailStr] = None
phone: Optional[str] = None
address: Optional[str] = None
specialty_id: Optional[int] = None
parent_id: Optional[int] = None
is_active: Optional[bool] = None
class Contractor(ContractorBase):
id: int
specialty: Optional[Specialty] = None
subcontractors: List['Contractor'] = []
class Config:
from_attributes = True