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)