|
|
@ -4,9 +4,8 @@ from django.contrib import messages |
|
|
from django.core.mail import send_mail |
|
|
from django.core.mail import send_mail |
|
|
from django.conf import settings |
|
|
from django.conf import settings |
|
|
|
|
|
|
|
|
from .models import Evento, Reserva |
|
|
|
|
|
from .forms import EventoForm |
|
|
|
|
|
from reymotausers.models import ReyMotaUser |
|
|
|
|
|
|
|
|
from .models import Evento, Reserva, ListaEspera |
|
|
|
|
|
from .forms import ListaEsperaForm, EventoForm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
@ -51,42 +50,6 @@ def reservar_evento(request, evento_id): |
|
|
return redirect('eventos:lista_eventos') |
|
|
return redirect('eventos:lista_eventos') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
|
|
def anular_reserva(request, evento_id): |
|
|
|
|
|
evento = get_object_or_404(Evento, id=evento_id) |
|
|
|
|
|
|
|
|
|
|
|
# Verificar si el usuario ya tiene una reserva para este evento |
|
|
|
|
|
if Reserva.objects.filter(evento=evento, usuario=request.user).exists(): |
|
|
|
|
|
messages.error(request, 'Vamos a solicitar la baja.') |
|
|
|
|
|
|
|
|
|
|
|
admin = ReyMotaUser.objects.filter(is_staff=True) |
|
|
|
|
|
|
|
|
|
|
|
for i in admin: |
|
|
|
|
|
if i.nombre == "Tino": |
|
|
|
|
|
# Enviar un correo con la información del evento |
|
|
|
|
|
asunto = f'Solicitud de cancelación en {evento.nombre}' |
|
|
|
|
|
mensaje = f'Hola,\n\n' \ |
|
|
|
|
|
f'{request.user.nombre} ha solicitado la baja en el "{evento.nombre}".\n' \ |
|
|
|
|
|
f'Detalles del evento:\n' \ |
|
|
|
|
|
f'Nombre: {evento.nombre}\n' \ |
|
|
|
|
|
f'Descripción: {evento.descripcion}\n' \ |
|
|
|
|
|
f'Fecha: {evento.fecha.strftime("%d/%b/%y")} a las {evento.hora.hour}\n' \ |
|
|
|
|
|
f'\n{request.user.nombre}, recuerda que si no encontramos a nadie y la plaza queda\n' \ |
|
|
|
|
|
f'desierta el coste de tu plaza en el pozo lo tienes que abonar tú\n\n' |
|
|
|
|
|
|
|
|
|
|
|
send_mail( |
|
|
|
|
|
asunto, |
|
|
|
|
|
mensaje, |
|
|
|
|
|
settings.DEFAULT_FROM_EMAIL, |
|
|
|
|
|
[request.user.email, i.email], |
|
|
|
|
|
fail_silently=False, |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
return redirect('eventos:lista_eventos') |
|
|
|
|
|
|
|
|
|
|
|
return redirect('eventos:lista_eventos') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
def lista_eventos(request): |
|
|
def lista_eventos(request): |
|
|
eventos = Evento.objects.all() |
|
|
eventos = Evento.objects.all() |
|
|
@ -96,6 +59,11 @@ def lista_eventos(request): |
|
|
for evento in eventos: |
|
|
for evento in eventos: |
|
|
inscrito = Reserva.objects.filter(evento=evento, usuario=request.user).exists() if request.user.is_authenticated else False |
|
|
inscrito = Reserva.objects.filter(evento=evento, usuario=request.user).exists() if request.user.is_authenticated else False |
|
|
|
|
|
|
|
|
|
|
|
if ListaEspera.objects.filter(evento=evento, usuario=request.user).exists(): |
|
|
|
|
|
en_espera = True |
|
|
|
|
|
else: |
|
|
|
|
|
en_espera = False |
|
|
|
|
|
|
|
|
eventos_con_reserva.append({ |
|
|
eventos_con_reserva.append({ |
|
|
'evento': evento, |
|
|
'evento': evento, |
|
|
'inscrito': inscrito, |
|
|
'inscrito': inscrito, |
|
|
@ -103,7 +71,9 @@ def lista_eventos(request): |
|
|
'nombre': evento.nombre, |
|
|
'nombre': evento.nombre, |
|
|
'fecha': evento.fecha, |
|
|
'fecha': evento.fecha, |
|
|
'plazas_disponibles': evento.plazas_disponibles, |
|
|
'plazas_disponibles': evento.plazas_disponibles, |
|
|
'plazas_restantes': evento.plazas_restantes |
|
|
|
|
|
|
|
|
'plazas_restantes': evento.plazas_restantes, |
|
|
|
|
|
'en_espera': en_espera, |
|
|
|
|
|
'usuario': request.user |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
return render(request, 'eventos/lista_eventos.html', {'eventos_con_reserva': eventos_con_reserva}) |
|
|
return render(request, 'eventos/lista_eventos.html', {'eventos_con_reserva': eventos_con_reserva}) |
|
|
@ -146,3 +116,24 @@ def crear_evento(request): |
|
|
form = EventoForm() |
|
|
form = EventoForm() |
|
|
|
|
|
|
|
|
return render(request, 'eventos/crear_evento.html', {'form': form}) |
|
|
return render(request, 'eventos/crear_evento.html', {'form': form}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
|
|
def apuntar_lista_espera(request, evento_id): |
|
|
|
|
|
evento = get_object_or_404(Evento, id=evento_id) |
|
|
|
|
|
|
|
|
|
|
|
# Verificar si el usuario ya está en la lista de espera |
|
|
|
|
|
if ListaEspera.objects.filter(evento=evento, usuario=request.user).exists(): |
|
|
|
|
|
messages.error(request, 'Ya estás en la lista de espera para este evento.') |
|
|
|
|
|
return redirect('eventos:lista_eventos') |
|
|
|
|
|
|
|
|
|
|
|
# Crear una entrada en la lista de espera |
|
|
|
|
|
if request.method == 'POST': |
|
|
|
|
|
form = ListaEsperaForm(request.POST) |
|
|
|
|
|
if form.is_valid(): |
|
|
|
|
|
ListaEspera.objects.create(evento=evento, usuario=request.user) |
|
|
|
|
|
messages.success(request, 'Te has apuntado a la lista de espera para este evento.') |
|
|
|
|
|
return redirect('eventos:lista_eventos') |
|
|
|
|
|
|
|
|
|
|
|
form = ListaEsperaForm() |
|
|
|
|
|
return render(request, 'eventos/apuntar_lista_espera.html', {'form': form, 'evento': evento}) |