Исходный код cdek.apps.order.responses
from __future__ import annotations
from datetime import date as Date
from datetime import datetime
from pydantic import Field, field_serializer
from ..models.entity_response import EntityResponse
from ..models.location import BaseOrderLocation
from ..models.order import (
AccompanyingWaybill,
Call,
DeliveryDetail,
DeliveryProblem,
Order,
OrderStatus,
)
[документация]
class OrderLocationResponse(BaseOrderLocation):
"""Модель ответа о локации заказа."""
address: str | None = Field(default=None, description="Строка адреса")
[документация]
class OrderResponse(Order):
"""Модель ответа о заказе."""
uuid: str = Field(..., description="Идентификатор заказа в ИС СДЭК")
type: int = Field(..., description="Тип заказа")
is_return: bool | None = Field(None, description="Признак возврата заказа")
is_reverse: bool | None = Field(None, description="Признак реверсного заказа")
cdek_number: int | None = Field(None, description="Номер заказа в ИС СДЭК")
accompanying_waybill: AccompanyingWaybill | None = Field(
None, description="Информация для сопроводительной накладной"
)
keep_free_until: datetime | None = Field(
None, description="Дата окончания бесплатного хранения"
)
statuses: list[OrderStatus] = Field(..., description="Статусы заказа")
is_client_return: bool | None = Field(
None, description="Признак клиентского возврата"
)
delivery_mode: str | None = Field(None, description="Режим доставки")
planned_delivery_date: Date | None = Field(
None, description="Планируемая дата доставки"
)
delivery_detail: DeliveryDetail | None = Field(
None, description="Детальная информация о доставке"
)
transacted_payment: bool | None = Field(
None, description="Признак проведенного платежа"
)
delivery_problem: DeliveryProblem | None = Field(
None, description="Проблема с доставкой"
)
developer_key: str | None = Field(None, description="Ключ разработчика")
calls: Call | None = Field(None, description="Информация о прозвонах")
from_location: OrderLocationResponse | None = Field(
default=None, description="Адрес отправления"
)
[документация]
@field_serializer("planned_delivery_date")
def serialize_planned_delivery_date(self, planned_delivery_date: Date) -> str:
"""Вернуть плановую дату доставки в формате YYYY-MM-DD"""
return planned_delivery_date.strftime("%Y-%m-%d")
[документация]
@field_serializer("keep_free_until")
def serialize_keep_free_until(self, keep_free_until: datetime) -> str:
"""Представить дату окончания бесплатного хранения в формате ISO 8601"""
return keep_free_until.strftime("%Y-%m-%dT%H:%M:%S")
[документация]
class OrderEntityResponse(EntityResponse):
"""Модель ответа о заказе."""
entity: OrderResponse | None = Field(
default=None, description="Информация о заказе в рамках протокола"
)