- 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>
25 lines
822 B
Python
25 lines
822 B
Python
import json
|
|
from django.http import JsonResponse
|
|
|
|
|
|
def parse_body(request):
|
|
"""
|
|
Parsea el body de la request como JSON.
|
|
Lanza ValueError si el body está vacío o no es JSON válido.
|
|
"""
|
|
raw = request.body
|
|
if not raw:
|
|
raise ValueError('El body de la petición está vacío.')
|
|
return json.loads(raw)
|
|
|
|
|
|
def build_error_response(message, status=400, data=None):
|
|
"""Construye una respuesta de error en el formato estándar del proyecto."""
|
|
body = {'data': data if data is not None else [], 'error': message}
|
|
return JsonResponse({'body': body, 'mensaje': message}, status=status, safe=False)
|
|
|
|
|
|
def build_success_response(data, status=200):
|
|
"""Construye una respuesta de éxito en el formato estándar del proyecto."""
|
|
return JsonResponse(data, status=status, safe=False)
|