This commit is contained in:
@@ -1,73 +1,46 @@
|
||||
import logging
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework_simplejwt.authentication import JWTAuthentication
|
||||
from django.http import JsonResponse
|
||||
from apps.backend_admin.models import Log
|
||||
from .actions import getData
|
||||
from django.utils import timezone # Esta es la forma correcta
|
||||
class PromocionObtener(APIView):
|
||||
authentication_classes = [JWTAuthentication]
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
from django.http import JsonResponse
|
||||
from .actions import get_status_action
|
||||
def post(self, request):
|
||||
# --- BLOQUE 1: LOG INITIATION ---
|
||||
log_entry = Log.objects.create(
|
||||
user=request.user.username,
|
||||
path='promociones/obtener/',
|
||||
method='POST',
|
||||
status_code='0'
|
||||
)
|
||||
|
||||
print('llega a despues de log entry')
|
||||
|
||||
# Configuración del logger para rastrear la ejecución
|
||||
logger = logging.getLogger(__name__)
|
||||
try:
|
||||
# --- BLOQUE 2: DATA CLEANING ---
|
||||
data = request.data
|
||||
log_entry.request = data
|
||||
log_entry.save()
|
||||
|
||||
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")
|
||||
params = {'id': data.get('id'), 'activo': data.get('activo')}
|
||||
|
||||
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: ACTION CALL ---
|
||||
# Aquí ya recibimos las fechas como strings gracias al paso 1
|
||||
resultado = getData(params)
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# 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 CLOSURE & RESPONSE ---
|
||||
log_entry.response = {"count": len(resultado)} # No guardes todo el JSON si es muy grande
|
||||
log_entry.status_code = '200'
|
||||
log_entry.save()
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# 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)
|
||||
return JsonResponse(resultado, safe=False, 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)
|
||||
except Exception as e:
|
||||
log_entry.status_code = '500'
|
||||
log_entry.response = {'error': str(e)}
|
||||
log_entry.save()
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
Reference in New Issue
Block a user