73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
import logging
|
|
from django.http import JsonResponse
|
|
from .actions import getData
|
|
|
|
from django.http import JsonResponse
|
|
from .actions import get_status_action
|
|
|
|
|
|
# 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)
|
|
|
|
# En views.py
|
|
def status_view(request):
|
|
# BLOQUE 1: Log de iniciación
|
|
logger.info("Iniciando petición de status...")
|
|
|
|
# BLOQUE 2: Limpieza y validación de datos (En este caso no hay datos de entrada)
|
|
data_cleaned = {}
|
|
|
|
# BLOQUE 3: Llamada a la acción
|
|
response_data = get_status_action()
|
|
|
|
# BLOQUE 4: Log de cierre y retorno
|
|
logger.info("Status enviado correctamente.")
|
|
return JsonResponse(response_data, status=200) |