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)