- Crear app/general con estructura estándar del proyecto: · utilidades/acciones.py → LogService.gestionar_log() (única fuente de logs) · utilidades/utils.py → get_client_ip() · utilidades/custom_errors.py → ValidationError, ExternalServiceError, NotFoundError · exception.py, request.py, serializers.py, validaciones/ - Registrar 'general' en INSTALLED_APPS y añadir general/ a urls.py - Refactorizar promociones/views.py para usar LogService en lugar de Log directo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
class ValidationError(Exception):
|
|
"""Error de validación de datos de entrada."""
|
|
def __init__(self, message, field=None):
|
|
self.message = message
|
|
self.field = field
|
|
super().__init__(message)
|
|
|
|
def to_response(self):
|
|
detail = {'error': self.message}
|
|
if self.field:
|
|
detail['field'] = self.field
|
|
return {'body': {'data': [], **detail}, 'mensaje': self.message}
|
|
|
|
|
|
class ExternalServiceError(Exception):
|
|
"""Error en la comunicación con un servicio externo."""
|
|
def __init__(self, message, service=None):
|
|
self.message = message
|
|
self.service = service
|
|
super().__init__(message)
|
|
|
|
def to_response(self):
|
|
return {'body': {'data': [], 'error': self.message}, 'mensaje': self.message}
|
|
|
|
|
|
class NotFoundError(Exception):
|
|
"""Recurso no encontrado."""
|
|
def __init__(self, message='Recurso no encontrado'):
|
|
self.message = message
|
|
super().__init__(message)
|
|
|
|
def to_response(self):
|
|
return {'body': {'data': [], 'error': self.message}, 'mensaje': self.message}
|