|
|
@ -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.shortcuts import render, get_object_or_404, redirect |
|
|
from django.contrib.auth.decorators import login_required, user_passes_test |
|
|
from django.contrib.auth.decorators import login_required, user_passes_test |
|
|
from django.contrib import messages |
|
|
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 .models import Evento, Reserva, ListaEspera, Noticia |
|
|
from .forms import ListaEsperaForm, EventoForm |
|
|
from .forms import ListaEsperaForm, EventoForm |
|
|
from .serializers import EventoSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
@ -208,51 +202,3 @@ def apuntar_lista_espera(request, evento_id): |
|
|
|
|
|
|
|
|
form = ListaEsperaForm() |
|
|
form = ListaEsperaForm() |
|
|
return render(request, 'eventos/apuntar_lista_espera.html', {'form': form, 'evento': evento}) |
|
|
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) |
|
|
|
|
|
|
|
|
|