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