38 lines
834 B
Python
38 lines
834 B
Python
from pydantic import BaseModel, ConfigDict, HttpUrl, field_validator
|
|
|
|
|
|
def _blank_to_none(value: str | None) -> str | None:
|
|
if isinstance(value, str) and not value.strip():
|
|
return None
|
|
return value
|
|
|
|
|
|
class ManufacturerBase(BaseModel):
|
|
name: str
|
|
url: HttpUrl | None = None
|
|
logo_url: HttpUrl | None = None
|
|
|
|
_normalize_url = field_validator("url", "logo_url", mode="before")(
|
|
_blank_to_none
|
|
)
|
|
|
|
|
|
class ManufacturerCreate(ManufacturerBase):
|
|
pass
|
|
|
|
|
|
class ManufacturerUpdate(BaseModel):
|
|
name: str | None = None
|
|
url: HttpUrl | None = None
|
|
logo_url: HttpUrl | None = None
|
|
|
|
_normalize_url = field_validator("url", "logo_url", mode="before")(
|
|
_blank_to_none
|
|
)
|
|
|
|
|
|
class ManufacturerRead(ManufacturerBase):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|