Skip to content

Commit dcbd7dd

Browse files
author
f.fallah
committed
wip(core): update create product schema based on updated api
1 parent 384c2c5 commit dcbd7dd

File tree

1 file changed

+25
-38
lines changed

1 file changed

+25
-38
lines changed

src/basalam_sdk/core/models.py

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@
55
"""
66

77
from datetime import datetime
8-
from enum import Enum
8+
from enum import Enum, IntEnum
99
from typing import Dict, List, Optional, Any
1010

1111
from pydantic import BaseModel
1212

1313

1414
# Enums
15-
class ProductStatusInputEnum(str, Enum):
15+
class ProductStatusInputEnum(IntEnum):
1616
"""Product status input enum."""
17-
DRAFT = "draft"
18-
PUBLISHED = "published"
19-
ARCHIVED = "archived"
20-
REJECTED = "rejected"
21-
PENDING = "pending"
17+
PUBLISHED = 2976
18+
UNPUBLISHED = 3790
19+
ILLEGAL = 4184
20+
PENDING_APPROVAL = 3568
2221

2322

2423
class VendorSettingResponse(BaseModel):
@@ -31,7 +30,6 @@ class VendorSettingResponse(BaseModel):
3130
updated_at: Optional[datetime] = None
3231

3332

34-
# Response Models
3533
class ResultResponse(BaseModel):
3634
"""Result response model."""
3735
result: Optional[bool] = None
@@ -78,7 +76,6 @@ class ProductListResponse(BaseModel):
7876
per_page: Optional[int] = None
7977

8078

81-
# Request Models
8279
class VendorLegalDataSchema(BaseModel):
8380
"""Vendor legal data schema."""
8481
is_legal: Optional[bool] = None
@@ -237,7 +234,6 @@ class ShippingMethodListResponse(BaseModel):
237234
per_page: Optional[int] = None
238235

239236

240-
# Image/Media Models
241237
class ImageResponse(BaseModel):
242238
"""Image response model with different sizes."""
243239
id: Optional[int] = None
@@ -267,7 +263,6 @@ class VideoDetailResponse(BaseModel):
267263
duration: Optional[int] = None
268264

269265

270-
# Location Models
271266
class ProvinceResponse(BaseModel):
272267
"""Province response model."""
273268
name: Optional[str] = None
@@ -282,7 +277,6 @@ class CityResponse(BaseModel):
282277
province: Optional[ProvinceResponse] = None
283278

284279

285-
# Status Models
286280
class StatusResponse(BaseModel):
287281
"""Status response model."""
288282
name: Optional[str] = None
@@ -332,7 +326,6 @@ class CategoryTypeResponse(BaseModel):
332326
description: Optional[str] = None
333327

334328

335-
# User Models
336329
class PublicVendorSimpleResponse(BaseModel):
337330
"""Simple vendor response for nested user data."""
338331
id: Optional[int] = None
@@ -404,7 +397,6 @@ class PrivateUserResponse(BaseModel):
404397
referrer_user_id: Optional[int] = None
405398

406399

407-
# Home Tab Settings
408400
class HomeTabSettingsResponse(BaseModel):
409401
"""Home tab settings response model."""
410402
name: Optional[str] = None
@@ -468,7 +460,6 @@ class PrivateVendorResponse(BaseModel):
468460
updated_at: Optional[datetime] = None
469461

470462

471-
# Individual product item for unsuccessful updates
472463
class UnsuccessfulProductItem(BaseModel):
473464
"""Unsuccessful product item model."""
474465
id: Optional[int] = None
@@ -583,9 +574,6 @@ class UpdateProductVariationSchema(BaseModel):
583574
sku: Optional[str] = None
584575

585576

586-
# UnitTypeResponse moved up to avoid forward reference issues
587-
588-
589577
class ShippingDataResponse(BaseModel):
590578
"""Shipping data response model."""
591579
illegal_for_iran: Optional[bool] = None
@@ -708,63 +696,62 @@ class ProductRevisionResponse(BaseModel):
708696

709697
class ProductAttributeRequestItem(BaseModel):
710698
"""Product attribute request item model."""
711-
attribute_id: Optional[int] = None
699+
attribute_id: int
712700
value: Optional[str] = None
713701
selected_values: Optional[List[int]] = None
714702

715703

716704
class VariantPropertyRequestItem(BaseModel):
717705
"""Variant property request item model."""
718-
value: Optional[str] = None
719-
property: Optional[str] = None
706+
value: str
707+
property: str
720708

721709

722710
class VariantRequestItem(BaseModel):
723711
"""Variant request item model."""
724-
primary_price: Optional[int] = None
725-
stock: Optional[int] = None
712+
primary_price: int
713+
stock: int
726714
sku: Optional[str] = None
727-
properties: Optional[List[VariantPropertyRequestItem]] = None
715+
properties: List[VariantPropertyRequestItem]
728716

729717

730718
class ShippingDataRequestItem(BaseModel):
731719
"""Shipping data request item model."""
732-
illegal_for_iran: Optional[bool] = None
733-
illegal_for_same_city: Optional[bool] = None
720+
illegal_for_iran: bool
721+
illegal_for_same_city: bool
734722

735723

736724
class PackagingDimensionsRequestItem(BaseModel):
737725
"""Packaging dimensions request item model."""
738-
height: Optional[int] = None
739-
length: Optional[int] = None
740-
width: Optional[int] = None
741-
726+
height: int
727+
length: int
728+
width: int
742729

743730
class ProductRequestSchema(BaseModel):
744731
"""Product request schema for create and update operations."""
745732
name: str
746-
photo: Optional[int] = None
733+
photo: int
747734
photos: Optional[List[int]] = None
748735
video: Optional[int] = None
749736
brief: Optional[str] = None
750-
description: str
737+
description: Optional[str] = None
751738
order: Optional[int] = None
752739
category_id: int
753-
status: int
740+
status: ProductStatusInputEnum
754741
preparation_days: int = 1
755742
keywords: Optional[List[str]] = None
756-
weight: int
743+
weight: Optional[int] = None
757744
package_weight: int
758-
primary_price: int
759-
stock: int
745+
primary_price: Optional[int] = None
746+
stock: Optional[int] = None
760747
shipping_city_ids: Optional[List[int]] = None
761748
shipping_method_ids: Optional[List[int]] = None
762749
product_attribute: Optional[List[ProductAttributeRequestItem]] = None
763750
virtual: Optional[bool] = None
764751
variants: Optional[List[VariantRequestItem]] = None
765752
shipping_data: Optional[ShippingDataRequestItem] = None
766-
unit_quantity: int
767-
unit_type: int
753+
unit_quantity: Optional[int] = None
754+
unit_type: Optional[int] = None
768755
sku: Optional[str] = None
769756
packaging_dimensions: Optional[PackagingDimensionsRequestItem] = None
770757
is_wholesale: bool = False

0 commit comments

Comments
 (0)