Исходный код cdek.apps.form.responses
from __future__ import annotations
from datetime import datetime
from typing import Literal
from uuid import UUID
from pydantic import BaseModel, Field, field_serializer
from ..models.entity_response import EntityResponse
from ..models.print import PrintForm, PrintType
from .requests import PrintBarcodeRequest
[документация]
class PrintStatus(BaseModel):
code: str = Field(..., description="Код статуса")
name: str = Field(..., description="Название статуса")
date_time: datetime = Field(..., description="Дата и время статуса")
[документация]
@field_serializer("date_time")
def serialize_date_time(self, date_time: datetime) -> str:
"""Вернуть дату статуса печатной формы в формате ISO 8601"""
return date_time.strftime("%Y-%m-%dT%H:%M:%S")
[документация]
class PrintBarcodeEntity(PrintBarcodeRequest):
uuid: UUID = Field(..., description="Идентификатор ШК места к заказу")
url: str | None = Field(None, description="Ссылка на скачивание файла")
lang: Literal["RUS", "ENG", "DEU", "ITA", "TUR", "CES", "KOR", "LIT", "LAV"] = (
Field(default="RUS", description="Язык печати") # type: ignore
)
statuses: list[PrintStatus] = Field(..., description="Статус файла")
[документация]
class PrintBarcodeResponse(EntityResponse):
entity: PrintBarcodeEntity | None = Field(
default=None, description="ШК места к заказу"
)
[документация]
class WaybillResponse(PrintForm):
uuid: UUID = Field(..., description="Идентификатор ШК места к заказу")
type: PrintType | None = Field(None, description="Форма квитанции")
url: str | None = Field(None, description="Ссылка на скачивание файла")
statuses: list[PrintStatus] = Field(..., description="Статус файла")
[документация]
class WaybillEntityResponse(EntityResponse):
entity: WaybillResponse | None = Field(
default=None, description="Квитанция к заказу"
)