diff --git a/core/apps/evaluation/views/tech_passport.py b/core/apps/evaluation/views/tech_passport.py index 6d7171f..28ade15 100644 --- a/core/apps/evaluation/views/tech_passport.py +++ b/core/apps/evaluation/views/tech_passport.py @@ -33,18 +33,27 @@ class TechPassportAPIView(GenericAPIView): def post(self, request, *args, **kwargs): serializer = TechPassportSerializer(data=request.data) serializer.is_valid(raise_exception=True) + data = serializer.validated_data - try: - result = TechPassportService.get_auto_info( - autonumber=data["autonumber"], - tech_pass_number=data["tech_pass_number"], - tech_pass_series=data["tech_pass_series"], - ) - return Response(result, status=status.HTTP_200_OK) + result = TechPassportService.get_auto_info( + autonumber=data["autonumber"], + tech_pass_number=data["tech_pass_number"], + tech_pass_series=data["tech_pass_series"], + ) - except Exception as e: + response_data = result["data"] + status_code = result["status_code"] + + # success bo‘lsa faqat data ichidagi data qaytariladi + if status_code == 200: return Response( - {"detail": str(e)}, - status=status.HTTP_400_BAD_REQUEST - ) \ No newline at end of file + response_data.get("data", {}), + status=status.HTTP_200_OK + ) + + # error bo‘lsa original response qaytariladi + return Response( + response_data, + status=status_code + ) \ No newline at end of file diff --git a/core/services/tech_passport.py b/core/services/tech_passport.py index 0d50849..bd9e05b 100644 --- a/core/services/tech_passport.py +++ b/core/services/tech_passport.py @@ -44,21 +44,28 @@ class TechPassportService: verify=False ) - response.raise_for_status() - logger.info( - f"Tech passport info fetched successfully: {response.status_code}" + f"Tech passport response status: {response.status_code}" ) - response_data = response.json() + try: + response_data = response.json() + except ValueError: + response_data = { + "detail": "Invalid response from external service" + } - return response_data.get("data", {}) + return { + "status_code": response.status_code, + "data": response_data + } except requests.exceptions.RequestException as e: - logger.error( - f"Error while fetching tech passport info: {str(e)}" - ) + logger.error(str(e)) + return { - "success": False, - "message": str(e) + "status_code": 500, + "data": { + "detail": str(e) + } } \ No newline at end of file