From 529aea3db0a520de623a7b45c23038f5343158b5 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Mon, 11 Nov 2024 07:45:08 +0000 Subject: [PATCH] =?UTF-8?q?A=C3=B1ado=20api=20con=20solo=20una=20funci?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gestion_reservas/eventos/serializers.py | 9 +++++ JugarAlPadel/gestion_reservas/eventos/urls.py | 3 ++ .../gestion_reservas/eventos/views.py | 33 ++++++++++--------- .../gestion_reservas/settings.py | 3 +- .../templates/eventos/lista_eventos.html | 2 +- JugarAlPadel/requirements.txt | 1 + 6 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 JugarAlPadel/gestion_reservas/eventos/serializers.py diff --git a/JugarAlPadel/gestion_reservas/eventos/serializers.py b/JugarAlPadel/gestion_reservas/eventos/serializers.py new file mode 100644 index 0000000..bdd9b8f --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/serializers.py @@ -0,0 +1,9 @@ +from rest_framework import serializers +from .models import Evento + + +class EventoSerializer(serializers.ModelSerializer): + class Meta: + model = Evento + fields = ['id', 'nombre', 'descripcion', 'fecha', 'hora', 'plazas_restantes', 'publicado'] + diff --git a/JugarAlPadel/gestion_reservas/eventos/urls.py b/JugarAlPadel/gestion_reservas/eventos/urls.py index 47686eb..a59d33e 100644 --- a/JugarAlPadel/gestion_reservas/eventos/urls.py +++ b/JugarAlPadel/gestion_reservas/eventos/urls.py @@ -17,4 +17,7 @@ urlpatterns = [ path('reservar//', views.reservar_evento, name='reservar_evento'), + + path('api/proximo-evento/', views.proximo_evento, name='proximo_evento'), + ] diff --git a/JugarAlPadel/gestion_reservas/eventos/views.py b/JugarAlPadel/gestion_reservas/eventos/views.py index 4ffcb9e..e9e49bb 100644 --- a/JugarAlPadel/gestion_reservas/eventos/views.py +++ b/JugarAlPadel/gestion_reservas/eventos/views.py @@ -1,3 +1,7 @@ +from rest_framework.response import Response +from rest_framework.decorators import api_view +from django.utils import timezone + 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 @@ -7,6 +11,7 @@ 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 @@ -52,7 +57,6 @@ def reservar_evento(request, evento_id): else: messages.error(request, 'Lo sentimos, no quedan plazas disponibles.') - print("Lo sentimos, no quedan plazas disponibles.") return redirect('eventos:lista_eventos') @@ -112,21 +116,7 @@ def detalle_noticia(request, noticia_id): def ayuda(request): - ''' - evento = get_object_or_404(Evento, id=1) - - reservas = Reserva.objects.filter(evento=1) - - print("Ayuda->plazas disponibles: ", evento.plazas_disponibles) - print("Ayuda->reservas: ", evento.reservas.count()) - - numero = random.randint(1, evento.plazas_disponibles-2) - - if numero < evento.reservas.count(): - print("Ayuda->Aqui haria algo...") - print("Ayuda->Aleatorio: ", numero) - ''' return render(request, 'eventos/help.html') @@ -218,3 +208,16 @@ 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): + # Obtén el próximo evento que esté publicado y cuya fecha sea mayor a la fecha actual + # evento = Evento.objects.filter(publicado=True, fecha__gte=timezone.now()).order_by('fecha').first() + evento = Evento.objects.filter(fecha__gte=timezone.now()).order_by('fecha').first() + + if evento: + serializer = EventoSerializer(evento) + return Response(serializer.data) + else: + return Response({'detail': 'No hay eventos próximos.'}, status=404) + diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py b/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py index a84528f..23df629 100644 --- a/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py @@ -28,7 +28,6 @@ DEBUG = os.environ["DEBUG"] == 'True' ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ") -print("ALLOWD_HOSTS: ", ALLOWED_HOSTS) # Application definition @@ -42,6 +41,8 @@ INSTALLED_APPS = [ 'eventos', 'reymotausers', + + 'rest_framework', ] MIDDLEWARE = [ diff --git a/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html b/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html index da1667c..29b986a 100644 --- a/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html +++ b/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html @@ -73,7 +73,7 @@ {% endif %} {% if user.is_staff and not evento.evento.publicado %} - + Publicar {% endif %} diff --git a/JugarAlPadel/requirements.txt b/JugarAlPadel/requirements.txt index 67be145..83cce20 100644 --- a/JugarAlPadel/requirements.txt +++ b/JugarAlPadel/requirements.txt @@ -11,3 +11,4 @@ pyflakes==3.2.0 sqlparse==0.5.1 typing_extensions==4.12.2 django-calculation==1.0.0 +djangorestframework==3.15.2