AkomptaBackend / api /exceptions.py
rinogeek's picture
first commit
ef287e1
from rest_framework.views import exception_handler
from rest_framework.exceptions import ValidationError
from rest_framework.response import Response
def custom_exception_handler(exc, context):
"""
Handler personnalisé pour formater les erreurs selon la spec du frontend
Format attendu:
{
"type": "validation_error",
"errors": {
"field_name": ["Error message"]
}
}
"""
# Appeler le handler par défaut de DRF
response = exception_handler(exc, context)
if response is not None:
# Formater les erreurs de validation
if isinstance(exc, ValidationError):
custom_response = {
'type': 'validation_error',
'errors': response.data
}
response.data = custom_response
# Pour les autres erreurs, ajouter un type
else:
error_type = 'error'
if response.status_code == 401:
error_type = 'authentication_error'
elif response.status_code == 403:
error_type = 'permission_error'
elif response.status_code == 404:
error_type = 'not_found_error'
elif response.status_code >= 500:
error_type = 'server_error'
custom_response = {
'type': error_type,
'message': response.data.get('detail', str(exc))
}
response.data = custom_response
return response