|
|
@@ -4,6 +4,11 @@ from django.contrib import messages
|
|
|
from django.core.mail import EmailMultiAlternatives
|
|
|
from django.conf import settings
|
|
|
from django.template.loader import render_to_string
|
|
|
+from django.utils import timezone
|
|
|
+
|
|
|
+from rest_framework.response import Response
|
|
|
+from rest_framework.decorators import api_view
|
|
|
+from .serializers import EventoSerializer, ReservaSerializer, ListaEsperaSerializer, NoticiaSerializer
|
|
|
|
|
|
from .models import Evento, Reserva, ListaEspera, Noticia
|
|
|
from .forms import ListaEsperaForm, EventoForm
|
|
|
@@ -72,11 +77,14 @@ def publicar_evento(request, evento_id):
|
|
|
|
|
|
@login_required
|
|
|
def lista_eventos(request):
|
|
|
+ # anno_actual = timezone.now().year
|
|
|
+
|
|
|
# Solo mostrar los eventos publicados a los usuarios normales
|
|
|
if request.user.is_staff:
|
|
|
- eventos = Evento.objects.all() # Los administradores ven todos los eventos
|
|
|
+ eventos = Evento.objects.all().order_by('-fecha', '-hora')
|
|
|
else:
|
|
|
- eventos = Evento.objects.filter(publicado=True) # Los usuarios ven solo eventos publicados
|
|
|
+ eventos = Evento.objects.filter(publicado=True).order_by('-fecha', '-hora')
|
|
|
+# eventos = Evento.objects.filter(publicado=True, fecha__year=anno_actual) # Los usuarios ven solo eventos publicados y del año en curso
|
|
|
|
|
|
# Crear un diccionario que mapea cada evento con un booleano indicando si el usuario ya ha reservado
|
|
|
eventos_con_reserva = []
|
|
|
@@ -99,7 +107,8 @@ def lista_eventos(request):
|
|
|
'plazas_restantes': evento.plazas_restantes,
|
|
|
'en_espera': en_espera,
|
|
|
'usuario': request.user,
|
|
|
- 'publicado': evento.publicado
|
|
|
+ 'publicado': evento.publicado,
|
|
|
+ 'url_imagen': evento.url_imagen
|
|
|
})
|
|
|
|
|
|
return render(request, 'eventos/lista_eventos.html', {'eventos_con_reserva': eventos_con_reserva})
|
|
|
@@ -144,7 +153,8 @@ def detalle_evento(request, evento_id):
|
|
|
'plazas_restantes': evento.plazas_restantes,
|
|
|
'en_espera': en_espera,
|
|
|
'usuario': request.user,
|
|
|
- 'publicado': evento.publicado
|
|
|
+ 'publicado': evento.publicado,
|
|
|
+ 'url_imagen': evento.url_imagen
|
|
|
}
|
|
|
)
|
|
|
|
|
|
@@ -202,3 +212,83 @@ def apuntar_lista_espera(request, evento_id):
|
|
|
|
|
|
form = ListaEsperaForm()
|
|
|
return render(request, 'eventos/apuntar_lista_espera.html', {'form': form, 'evento': evento})
|
|
|
+
|
|
|
+
|
|
|
+#
|
|
|
+# API
|
|
|
+#
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_lista_eventos(request):
|
|
|
+ """Devuelve la lista de todos los eventos."""
|
|
|
+ eventos = Evento.objects.all()
|
|
|
+ serializer = EventoSerializer(eventos, many=True)
|
|
|
+ return Response(serializer.data)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_detalle_evento(request, evento_id):
|
|
|
+ """Devuelve los detalles de un evento específico."""
|
|
|
+ try:
|
|
|
+ evento = Evento.objects.get(id=evento_id)
|
|
|
+ serializer = EventoSerializer(evento)
|
|
|
+ return Response(serializer.data)
|
|
|
+ except Evento.DoesNotExist:
|
|
|
+ return Response({'error': 'Evento no encontrado'}, status=404)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_lista_reservas(request):
|
|
|
+ """Devuelve la lista de todos los reservas."""
|
|
|
+ reservas = Reserva.objects.all()
|
|
|
+ serializer = ReservaSerializer(reservas, many=True)
|
|
|
+ return Response(serializer.data)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_detalle_reserva(request, reserva_id):
|
|
|
+ """Devuelve los detalles de un reserva específico."""
|
|
|
+ try:
|
|
|
+ reserva = Reserva.objects.get(id=reserva_id)
|
|
|
+ serializer = ReservaSerializer(reserva)
|
|
|
+ return Response(serializer.data)
|
|
|
+ except Reserva.DoesNotExist:
|
|
|
+ return Response({'error': 'Reserva no encontrado'}, status=404)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_lista_listaespera(request):
|
|
|
+ """Devuelve la lista de todos los listaespera."""
|
|
|
+ listaesperas = ListaEspera.objects.all()
|
|
|
+ serializer = ListaEsperaSerializer(listaesperas, many=True)
|
|
|
+ return Response(serializer.data)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_detalle_listaespera(request, listaespera_id):
|
|
|
+ """Devuelve los detalles de un listaespera específico."""
|
|
|
+ try:
|
|
|
+ listaespera = ListaEspera.objects.get(id=listaespera_id)
|
|
|
+ serializer = ListaEsperaSerializer(listaespera)
|
|
|
+ return Response(serializer.data)
|
|
|
+ except ListaEspera.DoesNotExist:
|
|
|
+ return Response({'error': 'ListaEspera no encontrado'}, status=404)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_lista_noticias(request):
|
|
|
+ """Devuelve la lista de todos los noticias."""
|
|
|
+ noticias = Noticia.objects.all()
|
|
|
+ serializer = NoticiaSerializer(noticias, many=True)
|
|
|
+ return Response(serializer.data)
|
|
|
+
|
|
|
+
|
|
|
+@api_view(['GET'])
|
|
|
+def api_detalle_noticia(request, noticia_id):
|
|
|
+ """Devuelve los detalles de un noticia específico."""
|
|
|
+ try:
|
|
|
+ noticia = Noticia.objects.get(id=noticia_id)
|
|
|
+ serializer = NoticiaSerializer(noticia)
|
|
|
+ return Response(serializer.data)
|
|
|
+ except Noticia.DoesNotExist:
|
|
|
+ return Response({'error': 'Noticia no encontrado'}, status=404)
|