146 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import List, Optional
 | 
						|
 | 
						|
from schemas.base import BaseSchema, OkMessageSchema
 | 
						|
 | 
						|
 | 
						|
# region Entities
 | 
						|
class BarcodeTemplateAttributeSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    key: str
 | 
						|
    name: str
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateSizeSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    name: str
 | 
						|
    key: str
 | 
						|
    width: int
 | 
						|
    height: int
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateAdditionalAttributeSchema(BaseSchema):
 | 
						|
    name: str
 | 
						|
    value: str
 | 
						|
 | 
						|
 | 
						|
class BaseBarcodeTemplateSchema(BaseSchema):
 | 
						|
    name: str
 | 
						|
    is_default: bool
 | 
						|
    size: BarcodeTemplateSizeSchema
 | 
						|
    additional_attributes: list[BarcodeTemplateAdditionalAttributeSchema]
 | 
						|
    additional_field: Optional[str] = None
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateSchema(BaseBarcodeTemplateSchema):
 | 
						|
    id: int
 | 
						|
    attributes: list[BarcodeTemplateAttributeSchema]
 | 
						|
 | 
						|
 | 
						|
class BarcodeAttributeSchema(BaseSchema):
 | 
						|
    name: str
 | 
						|
    value: str
 | 
						|
 | 
						|
 | 
						|
class BarcodeSchema(BaseSchema):
 | 
						|
    barcode: str
 | 
						|
    attributes: List[BarcodeAttributeSchema]
 | 
						|
    additional_field: str | None = None
 | 
						|
 | 
						|
 | 
						|
class PdfBarcodeGenData(BaseSchema):
 | 
						|
    barcode_value: str
 | 
						|
    text: str
 | 
						|
    num_duplicates: int = 1
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Requests
 | 
						|
class GetBarcodeTemplateByIdRequest(BaseSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateCreateResponse(OkMessageSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateUpdateResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class CreateBarcodeTemplateAttributeRequest(BaseSchema):
 | 
						|
    name: str
 | 
						|
    label: str
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateDeleteRequest(BaseSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class GetProductBarcodeRequest(BaseSchema):
 | 
						|
    product_id: int
 | 
						|
    barcode: str
 | 
						|
    barcode_template_id: int | None = None
 | 
						|
 | 
						|
 | 
						|
class GetProductBarcodePdfRequest(GetProductBarcodeRequest):
 | 
						|
    quantity: int
 | 
						|
 | 
						|
 | 
						|
class GetDealProductsBarcodesPdfRequest(BaseSchema):
 | 
						|
    deal_id: int
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Responses
 | 
						|
class GetBarcodeTemplateByIdResponse(BaseSchema):
 | 
						|
    barcode_template: BarcodeTemplateSchema
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateCreateRequest(BaseBarcodeTemplateSchema):
 | 
						|
    attribute_ids: list[int]
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateUpdateRequest(BaseBarcodeTemplateSchema):
 | 
						|
    id: int
 | 
						|
    attribute_ids: list[int]
 | 
						|
 | 
						|
 | 
						|
class CreateBarcodeTemplateAttributeResponse(OkMessageSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class GetAllBarcodeTemplatesResponse(BaseSchema):
 | 
						|
    templates: list[BarcodeTemplateSchema]
 | 
						|
 | 
						|
 | 
						|
class GetAllBarcodeTemplateAttributesResponse(BaseSchema):
 | 
						|
    attributes: list[BarcodeTemplateAttributeSchema]
 | 
						|
 | 
						|
 | 
						|
class BarcodeTemplateDeleteResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetProductBarcodeResponse(BaseSchema):
 | 
						|
    barcode: BarcodeSchema
 | 
						|
 | 
						|
 | 
						|
class GetAllBarcodeTemplateSizesResponse(BaseSchema):
 | 
						|
    sizes: list[BarcodeTemplateSizeSchema]
 | 
						|
 | 
						|
 | 
						|
class GetProductBarcodePdfResponse(BaseSchema):
 | 
						|
    base64_string: str
 | 
						|
    filename: str
 | 
						|
    mime_type: str
 | 
						|
 | 
						|
 | 
						|
class GetDealProductsBarcodesPdfResponse(BaseSchema):
 | 
						|
    base64_string: str
 | 
						|
    filename: str
 | 
						|
    mime_type: str
 | 
						|
 | 
						|
# endregion
 |