79 lines
2 KiB
Python
79 lines
2 KiB
Python
from decimal import Decimal
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, Field, RootModel
|
|
|
|
|
|
class Price(BaseModel):
|
|
amount: Decimal
|
|
currency: str
|
|
|
|
|
|
class PriceCompositionOrder(BaseModel):
|
|
total: Price
|
|
goods: Price
|
|
delivery: Price
|
|
credits_used: Price = Field(alias='creditsUsed')
|
|
courier_tip: Price = Field(alias='courierTip')
|
|
fines: Price
|
|
reusable_bags_deposit: Price = Field(alias='reusableBagsDeposit')
|
|
|
|
|
|
class PriceCompositionOrderProduct(BaseModel):
|
|
total: Price
|
|
unit: Price
|
|
|
|
class PriceCompositionOrderList(BaseModel):
|
|
total: Price
|
|
|
|
|
|
class OrderProduct(BaseModel):
|
|
name: str
|
|
unit: str
|
|
textual_amount: str = Field(..., alias='textualAmount')
|
|
amount: int
|
|
images: List[str]
|
|
price_composition: PriceCompositionOrderProduct = Field(..., alias='priceComposition')
|
|
compensated: bool
|
|
id: int
|
|
|
|
|
|
class DeliverySlot(BaseModel):
|
|
id: int
|
|
type: str
|
|
since: datetime
|
|
till: datetime
|
|
|
|
|
|
class OrderList(BaseModel):
|
|
id: int
|
|
items_count: int = Field(alias='itemsCount')
|
|
order_time: datetime = Field(alias='orderTime')
|
|
price_composition: PriceCompositionOrderList = Field(..., alias='priceComposition')
|
|
delivery_slot: Optional[DeliverySlot] = Field(..., alias='deliverySlot')
|
|
|
|
|
|
class Document(BaseModel):
|
|
type: str
|
|
title: str
|
|
link: str
|
|
|
|
|
|
class Order(BaseModel):
|
|
id: int
|
|
items_count: int = Field(..., alias='itemsCount')
|
|
price_composition: PriceCompositionOrder = Field(..., alias='priceComposition')
|
|
order_time: datetime = Field(..., alias='orderTime')
|
|
delivery_type: str = Field(..., alias='deliveryType')
|
|
delivery_slot: DeliverySlot = Field(..., alias='deliverySlot')
|
|
state: str
|
|
payment: int
|
|
address: str
|
|
delivery_note: str = Field(..., alias='deliveryNote')
|
|
documents: List[Document]
|
|
available_actions: List[str] = Field(..., alias='availableActions')
|
|
items: List[OrderProduct]
|
|
|
|
|
|
class Orders(RootModel):
|
|
root: List[OrderList]
|