From 873672ea608be4033b3d26bb8513e5a60069e599 Mon Sep 17 00:00:00 2001 From: phzhik Date: Wed, 3 Jan 2024 16:10:23 +0400 Subject: [PATCH] + CDEK API calculator/tarifflist endpoint --- external_api/cdek.py | 4 ++++ store/views.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/external_api/cdek.py b/external_api/cdek.py index f969017..f7ed7c0 100644 --- a/external_api/cdek.py +++ b/external_api/cdek.py @@ -83,6 +83,7 @@ class CDEKClient: AUTH_ENDPOINT = 'oauth/token' ORDER_INFO_ENDPOINT = 'orders' CALCULATOR_TARIFF_ENDPOINT = 'calculator/tariff' + CALCULATOR_TARIFF_LIST_ENDPOINT = 'calculator/tarifflist' BARCODE_ENDPOINT = 'print/barcodes' MAX_RETRIES = 2 @@ -141,6 +142,9 @@ class CDEKClient: def calculate_tariff(self, data): return self.request('POST', self.CALCULATOR_TARIFF_ENDPOINT, json=data) + def calculate_tarifflist(self, data): + return self.request('POST', self.CALCULATOR_TARIFF_LIST_ENDPOINT, json=data) + def generate_barcode(self, cdek_number, format="A6") -> Optional[str]: request_data = { "orders": [{"cdek_number": cdek_number}], diff --git a/store/views.py b/store/views.py index 0dcddf4..7f75d30 100644 --- a/store/views.py +++ b/store/views.py @@ -371,6 +371,14 @@ class CDEKAPI(viewsets.GenericViewSet): r = self.client.calculate_tariff(data) return Response(r.json()) + @action(url_path='calculator/tarifflist', detail=False, methods=['post']) + def calculate_tarifflist(self, request, *args, **kwargs): + data = request.data + if not data: + raise CRMException('json data is required') + r = self.client.calculate_tarifflist(data) + return Response(r.json()) + class PoizonAPI(viewsets.GenericViewSet): client = PoizonClient(settings.POIZON_TOKEN)