feat: añadir app general con LogService centralizado
- 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>
This commit is contained in:
33
app/general/utilidades/custom_errors.py
Normal file
33
app/general/utilidades/custom_errors.py
Normal file
@@ -0,0 +1,33 @@
|
||||
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}
|
||||
Reference in New Issue
Block a user