56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
from typing import Optional
|
|
from pydantic import BaseModel
|
|
|
|
from app.models.documents import (
|
|
ManufacturerInfo, ProductDetails, ComplianceBadge, QRStyle,
|
|
)
|
|
from app.models.enums import QRType, ProductStatus
|
|
|
|
|
|
class OrgCreate(BaseModel):
|
|
name: str
|
|
gstin: Optional[str] = None
|
|
pan: Optional[str] = None
|
|
contact_email: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
website: Optional[str] = None
|
|
address: Optional[str] = None
|
|
|
|
|
|
class BrandCreate(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
logo_url: Optional[str] = None
|
|
|
|
|
|
class ProductCreate(BaseModel):
|
|
brand_id: str
|
|
name: str
|
|
sku: Optional[str] = None
|
|
category: Optional[str] = None
|
|
description: Optional[str] = None
|
|
image_url: Optional[str] = None
|
|
manufacturer: Optional[ManufacturerInfo] = None
|
|
details: Optional[ProductDetails] = None
|
|
compliance_badges: list[ComplianceBadge] = []
|
|
recycling_info: Optional[str] = None
|
|
internal_notes: Optional[str] = None
|
|
qr_type: str = "dynamic"
|
|
display_brand_logo: bool = True
|
|
status: ProductStatus = ProductStatus.draft
|
|
|
|
|
|
class BatchCreate(BaseModel):
|
|
product_id: str
|
|
batch_number: Optional[str] = None
|
|
mfg_date: Optional[str] = None
|
|
expiry_date: Optional[str] = None
|
|
quantity: int = 1
|
|
qr_type: QRType = QRType.batch
|
|
notes: Optional[str] = None
|
|
|
|
|
|
class QRGenerateIn(BaseModel):
|
|
batch_id: str
|
|
style: Optional[QRStyle] = None
|