44 lines
1.2 KiB
Python
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
|