Source code for pochta.api.orders

from __future__ import annotations

from typing import TYPE_CHECKING, List

from pochta.helpers import Order
from pochta.utils import HTTPMethod


if TYPE_CHECKING:
    from pochta import Delivery


[docs]class Orders: """ Методы API Заказов. Используется через объект :class:`Delivery <pochta.delivery.Delivery>` или вручную. """ def __init__(self, client: Delivery) -> None: """ Инициализация API Заказов. :param client: API клиент Доставки """ self._client = client
[docs] def create_order(self, orders: List[Order]) -> dict: """ Создание заказа. Создает новый заказ. Автоматически рассчитывает и проставляет плату за пересылку. https://otpravka.pochta.ru/specification#/orders-creating_order :param orders: Список заказов :return: Результат операции """ url = '/1.0/user/backlog' orders = [order.raw for order in orders] res = self._client.request(HTTPMethod.PUT, url, data=orders) return res.json()
[docs] def edit_order(self, shipment_id: str, order: Order) -> dict: """ Редактирование заказа. https://otpravka.pochta.ru/specification#/orders-editing_order :param shipment_id: Внутренний идентификатор отправления :param order: Измененный заказ :return: Результат операции """ url = f'/1.0/backlog/{shipment_id}' res = self._client.request(HTTPMethod.PUT, url, data=order.raw) return res.json()
[docs] def search_order(self, query: str) -> List[dict]: """ Поиск заказа. Ищет заказы по назначенному магазином идентификатору. https://otpravka.pochta.ru/specification#/orders-search_order :param query: Буквенно-цифровой идентификатор отправления :return: Результат операции """ url = '/1.0/backlog/search' params = {'query': query} res = self._client.request(HTTPMethod.GET, url, params=params) return res.json()
[docs] def search_order_by_id(self, order_id: str) -> dict: """ Поиск заказа по идентификатору. https://otpravka.pochta.ru/specification#/orders-search_order_byid :param order_id: Внутренний идентификатор отправления :return: Результат операции """ url = f'/1.0/backlog/{order_id}' res = self._client.request(HTTPMethod.GET, url) return res.json()
[docs] def delete_order(self, backlog_ids: List[str]) -> dict: """ Удаление заказа. https://otpravka.pochta.ru/specification#/orders-delete_new_order :param backlog_ids: Список уникальных идентификаторов заказов :return: Результат операции """ url = '/1.0/backlog' res = self._client.request(HTTPMethod.DELETE, url, data=backlog_ids) return res.json()
[docs] def shipment_to_backlog(self, shipment_ids: List[str]) -> dict: """ Возврат заказов в "Новые". Метод переводит заказы из партии в раздел Новые. Партия должна быть в статусе CREATED. https://otpravka.pochta.ru/specification#/orders-shipment_to_backlog :param shipment_ids: Список внутренних идентификаторов заказов :return: Результат операции """ url = '/1.0/user/backlog' res = self._client.request(HTTPMethod.POST, url, data=shipment_ids) return res.json()