text2sql / core /middleware.py
ns-devel
Added exception
db79bb2
import logging
import traceback
from django.http import JsonResponse
logger = logging.getLogger(__name__)
class ExceptionMiddleware:
"""
Middleware to catch exceptions and handle them with appropriate logging and JSON response.
"""
def __init__(self, get_response):
"""
Initializes the ExceptionMiddleware with the provided get_response function.
"""
self.get_response = get_response
def __call__(self, request):
"""
Process the request and call the next middleware or view function in the chain.
"""
response = self.get_response(request)
return response
def process_exception(self, request, exception):
"""
Called when a view function raises an exception.
"""
error_type = exception.__class__.__name__
error_message = exception.args
logger.info(f"Error Type: {error_type} | Error Message: {error_message}")
logger.debug("Request Details: %s", request.__dict__)
logger.exception(traceback.format_exc())
if isinstance(exception, KeyError):
status_code = 400
message = f"Please Add Valid Data For {error_message[0]}"
error = "BAD_REQUEST"
elif isinstance(exception, AttributeError):
status_code = 500
message = "Something Went Wrong. Please try again."
error = "SOMETHING_WENT_WRONG"
elif isinstance(exception, TypeError):
status_code = 500
message = "Something Went Wrong. Please try again."
error = "SOMETHING_WENT_WRONG"
else:
status_code = 500
message = "Something Went Wrong. Please try again."
error = "SOMETHING_WENT_WRONG"
return JsonResponse({"message": message, "error": repr(exception)}, status=status_code)