fix: handle response errors and improve data return in TechPassportService

This commit is contained in:
komoliddin
2026-04-22 11:17:09 +05:00
parent cb2d83b00d
commit 33aa06f80b
2 changed files with 37 additions and 21 deletions

View File

@@ -33,18 +33,27 @@ class TechPassportAPIView(GenericAPIView):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
serializer = TechPassportSerializer(data=request.data) serializer = TechPassportSerializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
data = serializer.validated_data data = serializer.validated_data
try: result = TechPassportService.get_auto_info(
result = TechPassportService.get_auto_info( autonumber=data["autonumber"],
autonumber=data["autonumber"], tech_pass_number=data["tech_pass_number"],
tech_pass_number=data["tech_pass_number"], tech_pass_series=data["tech_pass_series"],
tech_pass_series=data["tech_pass_series"], )
)
return Response(result, status=status.HTTP_200_OK)
except Exception as e: response_data = result["data"]
status_code = result["status_code"]
# success bolsa faqat data ichidagi data qaytariladi
if status_code == 200:
return Response( return Response(
{"detail": str(e)}, response_data.get("data", {}),
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_200_OK
) )
# error bolsa original response qaytariladi
return Response(
response_data,
status=status_code
)

View File

@@ -44,21 +44,28 @@ class TechPassportService:
verify=False verify=False
) )
response.raise_for_status()
logger.info( 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: except requests.exceptions.RequestException as e:
logger.error( logger.error(str(e))
f"Error while fetching tech passport info: {str(e)}"
)
return { return {
"success": False, "status_code": 500,
"message": str(e) "data": {
"detail": str(e)
}
} }