feat: product barcode images
This commit is contained in:
@ -16,6 +16,11 @@ class ProductImageSchema(BaseSchema):
|
||||
image_url: str
|
||||
|
||||
|
||||
class ProductBarcodeImageSchema(BaseSchema):
|
||||
product_id: int
|
||||
image_url: str
|
||||
|
||||
|
||||
class CreateProductSchema(BaseSchema):
|
||||
name: str
|
||||
article: str
|
||||
@ -27,21 +32,27 @@ class CreateProductSchema(BaseSchema):
|
||||
composition: Optional[str]
|
||||
size: Optional[str]
|
||||
additional_info: Optional[str]
|
||||
barcodes: list[str]
|
||||
image_url: str | None = None
|
||||
images: list[ProductImageSchema] | None = []
|
||||
barcodes: list[str] = []
|
||||
|
||||
|
||||
class BaseProductSchema(CreateProductSchema):
|
||||
image_url: Optional[str] = None
|
||||
images: Optional[list[ProductImageSchema]] = []
|
||||
barcode_image_url: Optional[str] = None
|
||||
barcode_image: Optional[ProductBarcodeImageSchema] = None
|
||||
|
||||
@model_validator(mode="after")
|
||||
def images_list_to_image_url(cls, values):
|
||||
images = values.images
|
||||
if not images:
|
||||
return values
|
||||
latest_image = images[-1]
|
||||
values.image_url = latest_image.image_url
|
||||
if values.images:
|
||||
latest_image = values.images[-1]
|
||||
values.image_url = latest_image.image_url
|
||||
|
||||
if values.barcode_image:
|
||||
values.barcode_image_url = values.barcode_image.image_url
|
||||
return values
|
||||
|
||||
|
||||
class ProductSchema(CreateProductSchema):
|
||||
class ProductSchema(BaseProductSchema):
|
||||
id: int
|
||||
barcode_template: BarcodeTemplateSchema
|
||||
|
||||
@ -116,4 +127,12 @@ class GetProductBarcodePdfResponse(BasePdfResponse):
|
||||
pass
|
||||
|
||||
|
||||
class BarcodeUploadImageResponse(BaseResponse):
|
||||
image_url: Optional[str] = None
|
||||
|
||||
|
||||
class DeleteBarcodeImageResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
Reference in New Issue
Block a user