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 .acciones import getData from django.utils import timezone # Esta es la forma correcta class PromocionObtener(APIView): authentication_classes = [JWTAuthentication] permission_classes = [IsAuthenticated] 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') try: # --- BLOQUE 2: DATA CLEANING --- data = request.data log_entry.request = data log_entry.save() params = {'id': data.get('id'), 'activo': data.get('activo')} # --- BLOQUE 3: ACTION CALL --- # AquĆ­ ya recibimos las fechas como strings gracias al paso 1 resultado = getData(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() return JsonResponse(resultado, safe=False, 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)