feat: image upload on product
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
from typing import List
|
||||
from schemas.barcode import BarcodeTemplateSchema
|
||||
from schemas.base import CustomModelCamel, PaginationInfoSchema, OkMessageSchema
|
||||
from pydantic import field_validator
|
||||
from pydantic import field_validator, model_validator
|
||||
from models import ProductBarcode
|
||||
|
||||
|
||||
# region Entities
|
||||
class ProductImageSchema(CustomModelCamel):
|
||||
id: int
|
||||
product_id: int
|
||||
image_url: str
|
||||
|
||||
|
||||
class BaseProductSchema(CustomModelCamel):
|
||||
name: str
|
||||
article: str | None = ''
|
||||
@@ -19,6 +25,8 @@ class BaseProductSchema(CustomModelCamel):
|
||||
composition: str | None = None
|
||||
size: str | None = None
|
||||
additional_info: str | None = None
|
||||
image_url: str | None = None
|
||||
images: list[ProductImageSchema]
|
||||
|
||||
@field_validator('barcodes', mode="before")
|
||||
def barcodes_to_list(cls, v):
|
||||
@@ -26,6 +34,15 @@ class BaseProductSchema(CustomModelCamel):
|
||||
return [barcode.barcode for barcode in v]
|
||||
return v
|
||||
|
||||
@model_validator(mode="after")
|
||||
def image_url_to_list(cls, values):
|
||||
images = values.images
|
||||
if not images:
|
||||
return values
|
||||
latest_image = images[-1]
|
||||
values.image_url = latest_image.image_url
|
||||
return values
|
||||
|
||||
|
||||
class ProductSchema(BaseProductSchema):
|
||||
id: int
|
||||
|
||||
Reference in New Issue
Block a user