From e82bb12eebddef3e8d94dc4eb1d8c9b59fe42d48 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Tue, 12 Nov 2024 07:12:41 +0000 Subject: [PATCH] Muevo el api a gestion_reservas --- JugarAlPadel/gestion_reservas/eventos/urls.py | 4 -- .../gestion_reservas/eventos/views.py | 54 ------------------ .../serializers.py | 2 +- .../gestion_reservas/gestion_reservas/urls.py | 3 + .../gestion_reservas/views.py | 56 ++++++++++++++++++- 5 files changed, 59 insertions(+), 60 deletions(-) rename JugarAlPadel/gestion_reservas/{eventos => gestion_reservas}/serializers.py (87%) diff --git a/JugarAlPadel/gestion_reservas/eventos/urls.py b/JugarAlPadel/gestion_reservas/eventos/urls.py index 1a774fd..47686eb 100644 --- a/JugarAlPadel/gestion_reservas/eventos/urls.py +++ b/JugarAlPadel/gestion_reservas/eventos/urls.py @@ -17,8 +17,4 @@ urlpatterns = [ path('reservar//', views.reservar_evento, name='reservar_evento'), - - path('api/proximo-evento/', views.proximo_evento, name='proximo_evento'), - path('api/todos-los-eventos/', views.todos_los_eventos, name='todos_los_eventos'), - ] diff --git a/JugarAlPadel/gestion_reservas/eventos/views.py b/JugarAlPadel/gestion_reservas/eventos/views.py index 60fd27c..ac2cf12 100644 --- a/JugarAlPadel/gestion_reservas/eventos/views.py +++ b/JugarAlPadel/gestion_reservas/eventos/views.py @@ -1,8 +1,3 @@ -from rest_framework.response import Response -from rest_framework.decorators import api_view -from django.utils import timezone -from rest_framework import status - from django.shortcuts import render, get_object_or_404, redirect from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib import messages @@ -12,7 +7,6 @@ from django.template.loader import render_to_string from .models import Evento, Reserva, ListaEspera, Noticia from .forms import ListaEsperaForm, EventoForm -from .serializers import EventoSerializer @login_required @@ -208,51 +202,3 @@ def apuntar_lista_espera(request, evento_id): form = ListaEsperaForm() return render(request, 'eventos/apuntar_lista_espera.html', {'form': form, 'evento': evento}) - - -@api_view(['GET']) -def proximo_evento(request): - # Obtiene y valida el parámetro `publicado` - publicado_param = request.GET.get('publicado', 'true').lower() - if publicado_param not in ['true', 'false', 'all']: - return Response( - {'detail': 'El parámetro "publicado" debe ser "true", "false" o "all".'}, - status=status.HTTP_400_BAD_REQUEST - ) - - # Configura el filtro según el parámetro `publicado` - if publicado_param == 'all': - eventos = Evento.objects.filter(fecha__gte=timezone.now()).order_by('fecha') - else: - publicado = publicado_param == 'true' - eventos = Evento.objects.filter(publicado=publicado, fecha__gte=timezone.now()).order_by('fecha') - - evento = eventos.first() - - if evento: - serializer = EventoSerializer(evento) - return Response(serializer.data) - else: - return Response({'detail': 'No hay eventos próximos.'}, status=404) - - -@api_view(['GET']) -def todos_los_eventos(request): - # Obtiene y valida el parámetro `publicado` - publicado_param = request.GET.get('publicado', 'true').lower() - if publicado_param not in ['true', 'false', 'all']: - return Response( - {'detail': 'El parámetro "publicado" debe ser "true", "false" o "all".'}, - status=status.HTTP_400_BAD_REQUEST - ) - - # Configura el filtro según el parámetro `publicado` - if publicado_param == 'all': - eventos = Evento.objects.all().order_by('fecha') - else: - publicado = publicado_param == 'true' - eventos = Evento.objects.filter(publicado=publicado).order_by('fecha') - - serializer = EventoSerializer(eventos, many=True) # `many=True` para serializar una lista de eventos - return Response(serializer.data) - diff --git a/JugarAlPadel/gestion_reservas/eventos/serializers.py b/JugarAlPadel/gestion_reservas/gestion_reservas/serializers.py similarity index 87% rename from JugarAlPadel/gestion_reservas/eventos/serializers.py rename to JugarAlPadel/gestion_reservas/gestion_reservas/serializers.py index bdd9b8f..efe0230 100644 --- a/JugarAlPadel/gestion_reservas/eventos/serializers.py +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/serializers.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from .models import Evento +from eventos.models import Evento class EventoSerializer(serializers.ModelSerializer): diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py b/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py index c616eb1..3bcf744 100644 --- a/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py @@ -34,5 +34,8 @@ urlpatterns = [ path('', views.principal, name='principal'), path('entorno/', views.ver_variables_entorno, name='ver_variables_entorno'), + path('api/proximo-evento/', views.proximo_evento, name='proximo_evento'), + path('api/todos-los-eventos/', views.todos_los_eventos, name='todos_los_eventos'), + ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/views.py b/JugarAlPadel/gestion_reservas/gestion_reservas/views.py index 4314766..82a96a6 100644 --- a/JugarAlPadel/gestion_reservas/gestion_reservas/views.py +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/views.py @@ -1,10 +1,16 @@ +from rest_framework.response import Response +from rest_framework.decorators import api_view +from django.utils import timezone +from rest_framework import status + import os from django.conf import settings from django.contrib.auth.decorators import user_passes_test from django.shortcuts import render, get_object_or_404 from django.http import HttpResponseForbidden -from eventos.models import Noticia +from eventos.models import Noticia, Evento +from .serializers import EventoSerializer @user_passes_test(lambda u: u.is_staff) @@ -41,3 +47,51 @@ def principal(request): print("Principal en gestion_reservas: ", noticia.titulo) return render(request, 'index.html', {'noticias': noticias}) + + +@api_view(['GET']) +def proximo_evento(request): + # Obtiene y valida el parámetro `publicado` + publicado_param = request.GET.get('publicado', 'true').lower() + if publicado_param not in ['true', 'false', 'all']: + return Response( + {'detail': 'El parámetro "publicado" debe ser "true", "false" o "all".'}, + status=status.HTTP_400_BAD_REQUEST + ) + + # Configura el filtro según el parámetro `publicado` + if publicado_param == 'all': + eventos = Evento.objects.filter(fecha__gte=timezone.now()).order_by('fecha') + else: + publicado = publicado_param == 'true' + eventos = Evento.objects.filter(publicado=publicado, fecha__gte=timezone.now()).order_by('fecha') + + evento = eventos.first() + + if evento: + serializer = EventoSerializer(evento) + return Response(serializer.data) + else: + return Response({'detail': 'No hay eventos próximos.'}, status=404) + + +@api_view(['GET']) +def todos_los_eventos(request): + # Obtiene y valida el parámetro `publicado` + publicado_param = request.GET.get('publicado', 'true').lower() + if publicado_param not in ['true', 'false', 'all']: + return Response( + {'detail': 'El parámetro "publicado" debe ser "true", "false" o "all".'}, + status=status.HTTP_400_BAD_REQUEST + ) + + # Configura el filtro según el parámetro `publicado` + if publicado_param == 'all': + eventos = Evento.objects.all().order_by('fecha') + else: + publicado = publicado_param == 'true' + eventos = Evento.objects.filter(publicado=publicado).order_by('fecha') + + serializer = EventoSerializer(eventos, many=True) # `many=True` para serializar una lista de eventos + return Response(serializer.data) +