Исходный код cdek.apps.models.related_entity
from __future__ import annotations
from datetime import date as Date
from datetime import datetime
from enum import Enum
from uuid import UUID
from pydantic import BaseModel, Field, field_serializer, field_validator
[документация]
class RelatedEntityType(str, Enum):
"""Типы связанных сущностей"""
RETURN_ORDER = "RETURN_ORDER"
DIRECT_ORDER = "DIRECT_ORDER"
CLIENT_RETURN_ORDER = "CLIENT_RETURN_ORDER"
CLIENT_DIRECT_ORDER = "CLIENT_DIRECT_ORDER"
WAYBILL = "WAYBILL"
BARCODE = "BARCODE"
REVERSE_ORDER = "REVERSE_ORDER"
DELIVERY = "DELIVERY"
[документация]
class RelatedEntity(BaseModel):
"""Связанные сущности"""
uuid: UUID | None = Field(None, description="Идентификатор сущности в ИС СДЭК")
type: RelatedEntityType = Field(..., description="Тип связанной сущности")
url: str | None = Field(
None, max_length=255, description="Ссылка на скачивание печатной формы"
)
create_time: datetime | None = Field(
None, description="Время создания связанной сущности"
)
cdek_number: str | None = Field(
None, max_length=255, description="Номер заказа СДЭК"
)
date: Date | None = Field(
None, description="Дата доставки, согласованная с получателем"
)
time_from: str | None = Field(None, description="Время начала ожидания курьера")
time_to: str | None = Field(None, description="Время окончания ожидания курьера")
[документация]
@field_validator("type", mode="before")
@classmethod
def convert_type_to_upper(cls, v: str) -> str:
"""Преобразование типа в верхний регистр перед валидацией"""
return isinstance(v, str) and v.upper() or v
[документация]
@field_serializer("create_time")
def serialize_create_time(self, create_time: datetime) -> str:
"""Конвертировать время создания в строку ISO"""
return create_time.strftime("%Y-%m-%dT%H:%M:%S")
[документация]
@field_serializer("date")
def serialize_date(self, date: Date) -> str:
"""Конвертировать дату доставки в формат YYYY-MM-DD"""
return date.strftime("%Y-%m-%d")