You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

77 lines
2.4 KiB

from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.contrib.auth.decorators import user_passes_test
from .models import Evento, Reserva
from .forms import EventoForm
@login_required
def reservar_evento(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, 'Ya tienes una reserva para este evento.')
print("Ya tienes una reserva para este evento.")
return redirect('eventos:lista_eventos')
# Verificar si quedan plazas disponibles
if evento.plazas_restantes() > 0:
Reserva.objects.create(evento=evento, usuario=request.user)
messages.success(request,
f'Reserva realizada para el evento {evento.nombre}.')
print("Reserva realizada para el evento {evento.nombre}.")
else:
messages.error(request, 'Lo sentimos, no quedan plazas disponibles.')
print("Lo sentimos, no quedan plazas disponibles.")
return redirect('eventos:lista_eventos')
@login_required
def lista_eventos(request):
eventos = Evento.objects.all()
return render(request, 'eventos/lista_eventos.html', {'eventos': eventos})
def principal(request):
return render(request, 'eventos/lista_eventos.html')
def ayuda(request):
return render(request, 'eventos/help.html')
@login_required
def detalle_evento(request, evento_id):
evento = get_object_or_404(Evento, pk=evento_id)
reservas = Reserva.objects.filter(evento=evento_id)
for i in reservas:
print("Reserva: ", i.usuario.nombre)
return render(request, 'eventos/detalle_evento.html', {'evento': evento, 'reservas': reservas})
# Verificar si el usuario es administrador
def es_admin(user):
return user.is_staff
@user_passes_test(es_admin)
def crear_evento(request):
if request.method == 'POST':
form = EventoForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Evento creado exitosamente.')
return redirect('eventos:lista_eventos') # Redirige a la lista de eventos
else:
form = EventoForm()
return render(request, 'eventos/crear_evento.html', {'form': form})