Browse Source

Muevo el api a gestion_reservas

politica
Celestino Rey 1 year ago
parent
commit
e82bb12eeb
5 changed files with 59 additions and 60 deletions
  1. +0
    -4
      JugarAlPadel/gestion_reservas/eventos/urls.py
  2. +0
    -54
      JugarAlPadel/gestion_reservas/eventos/views.py
  3. +1
    -1
      JugarAlPadel/gestion_reservas/gestion_reservas/serializers.py
  4. +3
    -0
      JugarAlPadel/gestion_reservas/gestion_reservas/urls.py
  5. +55
    -1
      JugarAlPadel/gestion_reservas/gestion_reservas/views.py

+ 0
- 4
JugarAlPadel/gestion_reservas/eventos/urls.py View File

@ -17,8 +17,4 @@ urlpatterns = [
path('reservar/<int:evento_id>/',
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'),
]

+ 0
- 54
JugarAlPadel/gestion_reservas/eventos/views.py View File

@ -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)

JugarAlPadel/gestion_reservas/eventos/serializers.py → JugarAlPadel/gestion_reservas/gestion_reservas/serializers.py View File

@ -1,5 +1,5 @@
from rest_framework import serializers
from .models import Evento
from eventos.models import Evento
class EventoSerializer(serializers.ModelSerializer):

+ 3
- 0
JugarAlPadel/gestion_reservas/gestion_reservas/urls.py View File

@ -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)

+ 55
- 1
JugarAlPadel/gestion_reservas/gestion_reservas/views.py View File

@ -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)

Loading…
Cancel
Save