|
|
@@ -0,0 +1,50 @@
|
|
|
+from django.core.mail import send_mail
|
|
|
+from django.conf import settings
|
|
|
+
|
|
|
+@login_required
|
|
|
+def reservar_evento(request, evento_id):
|
|
|
+ evento = get_object_or_404(Evento, id=evento_id)
|
|
|
+
|
|
|
+ # Verificar si ya está inscrito
|
|
|
+ if Reserva.objects.filter(evento=evento, usuario=request.user).exists():
|
|
|
+ messages.warning(request, "Ya estás inscrito en este evento.")
|
|
|
+ return redirect('detalle_evento', evento_id=evento.id)
|
|
|
+
|
|
|
+ if request.method == 'POST':
|
|
|
+ form = ReservaForm(request.POST, evento=evento, usuario=request.user)
|
|
|
+ if form.is_valid():
|
|
|
+ reserva = form.save(commit=False)
|
|
|
+ reserva.evento = evento
|
|
|
+ reserva.usuario = request.user
|
|
|
+ reserva.save()
|
|
|
+
|
|
|
+ # --- Envío de correos ---
|
|
|
+ asunto = f"Confirmación de reserva: {evento.titulo}"
|
|
|
+ mensaje = (
|
|
|
+ f"Hola {request.user.get_full_name() or request.user.username},\n\n"
|
|
|
+ f"Tu reserva para el evento '{evento.titulo}' se ha confirmado correctamente.\n"
|
|
|
+ f"Fecha: {evento.fecha.strftime('%d/%m/%Y')} a las {evento.hora.strftime('%H:%M')}\n\n"
|
|
|
+ )
|
|
|
+
|
|
|
+ # Si tiene acompañante, incluirlo en el mensaje y enviarle también
|
|
|
+ destinatarios = [request.user.email]
|
|
|
+ if reserva.acompanante:
|
|
|
+ mensaje += f"Has indicado como acompañante a {reserva.acompanante.get_full_name() or reserva.acompanante.username}.\n"
|
|
|
+ destinatarios.append(reserva.acompanante.email)
|
|
|
+
|
|
|
+ mensaje += "\nSaludos,\nEl equipo de organización."
|
|
|
+
|
|
|
+ send_mail(
|
|
|
+ asunto,
|
|
|
+ mensaje,
|
|
|
+ settings.DEFAULT_FROM_EMAIL,
|
|
|
+ destinatarios,
|
|
|
+ fail_silently=False,
|
|
|
+ )
|
|
|
+
|
|
|
+ messages.success(request, "Reserva realizada correctamente.")
|
|
|
+ return redirect('detalle_evento', evento_id=evento.id)
|
|
|
+ else:
|
|
|
+ form = ReservaForm(evento=evento, usuario=request.user)
|
|
|
+
|
|
|
+ return render(request, 'eventos/reservar_evento.html', {'form': form, 'evento': evento})
|