Initial commit

This commit is contained in:
minguezsanzjuanjose
2026-04-11 03:31:05 +02:00
commit 1e78ad3a40
15 changed files with 244 additions and 0 deletions

54
apps/promociones/views.py Normal file
View File

@@ -0,0 +1,54 @@
import logging
from django.http import JsonResponse
from .actions import getData
# Configuración del logger para rastrear la ejecución
logger = logging.getLogger(__name__)
def get_promocion_view(request):
"""
Vista estandarizada para la obtención de una promoción.
"""
# ---------------------------------------------------------
# BLOQUE 1: Log de iniciación
# ---------------------------------------------------------
logger.info("[START] Iniciando ejecución de get_promocion_view")
try:
# ---------------------------------------------------------
# BLOQUE 2: Limpieza de datos (Data Cleaning)
# ---------------------------------------------------------
# Extraemos los parámetros del request y preparamos el diccionario
raw_data = request.GET.dict()
# Aquí es donde ella aplicaría validaciones adicionales si fuera necesario
clean_params = {
'id': raw_data.get('id'),
'activo': raw_data.get('activo', True) # Valor por defecto
}
# ---------------------------------------------------------
# BLOQUE 3: Llamada a la Action (Execution)
# ---------------------------------------------------------
# La lógica de SQL y parametrización vive dentro de esta llamada
resultado_db = getData(clean_params)
# ---------------------------------------------------------
# BLOQUE 4: Log de cierre y respuesta (Closure)
# ---------------------------------------------------------
logger.info(f"[SUCCESS] get_promocion_view finalizada. Registros encontrados: {len(resultado_db)}")
return JsonResponse({
'status': 'success',
'data': resultado_db
}, status=200)
except Exception as e:
# Log de error detallado en caso de fallo
logger.error(f"[ERROR] Fallo crítico en get_promocion_view: {str(e)}")
return JsonResponse({
'status': 'error',
'message': 'Error interno del servidor'
}, status=500)