Initial commit
This commit is contained in:
54
apps/promociones/views.py
Normal file
54
apps/promociones/views.py
Normal 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)
|
||||
Reference in New Issue
Block a user