|
|
@@ -6,6 +6,8 @@ from django.conf import settings
|
|
|
from django.template.loader import render_to_string
|
|
|
from django.utils import timezone
|
|
|
|
|
|
+from django.core.mail import send_mail
|
|
|
+
|
|
|
from rest_framework.response import Response
|
|
|
from rest_framework.decorators import api_view
|
|
|
from .serializers import EventoSerializer, ReservaSerializer, ListaEsperaSerializer, NoticiaSerializer
|
|
|
@@ -292,3 +294,47 @@ def api_detalle_noticia(request, noticia_id):
|
|
|
return Response(serializer.data)
|
|
|
except Noticia.DoesNotExist:
|
|
|
return Response({'error': 'Noticia no encontrado'}, status=404)
|
|
|
+
|
|
|
+
|
|
|
+# Verifica si el usuario es administrador
|
|
|
+def es_admin(user):
|
|
|
+ return user.is_staff
|
|
|
+
|
|
|
+@user_passes_test(es_admin) # Solo administradores pueden acceder
|
|
|
+def enviar_correo_inscritos(request, evento_id):
|
|
|
+ evento = get_object_or_404(Evento, id=evento_id)
|
|
|
+ inscritos = Reserva.objects.filter(evento=evento).select_related('usuario')
|
|
|
+
|
|
|
+ if not inscritos:
|
|
|
+ messages.warning(request, "No hay usuarios inscritos en este evento.")
|
|
|
+ return redirect('detalle_evento', evento_id=evento.id)
|
|
|
+
|
|
|
+ destinatarios = [reserva.usuario.email for reserva in inscritos if reserva.usuario.email]
|
|
|
+
|
|
|
+ if not destinatarios:
|
|
|
+ messages.warning(request, "No hay correos disponibles para los inscritos.")
|
|
|
+ return redirect('detalle_evento', evento_id=evento.id)
|
|
|
+
|
|
|
+ asunto = f"Información sobre el evento: {evento.titulo}"
|
|
|
+ mensaje = f"""
|
|
|
+ Hola,
|
|
|
+
|
|
|
+ Queremos recordarte que estás inscrito en el evento "{evento.titulo}".
|
|
|
+ Fecha y hora: {evento.fecha} - {evento.hora}
|
|
|
+
|
|
|
+ Cualquier duda, contáctanos.
|
|
|
+
|
|
|
+ Saludos,
|
|
|
+ El equipo de eventos
|
|
|
+ """
|
|
|
+
|
|
|
+ send_mail(
|
|
|
+ asunto,
|
|
|
+ mensaje,
|
|
|
+ settings.DEFAULT_FROM_EMAIL,
|
|
|
+ destinatarios,
|
|
|
+ fail_silently=False
|
|
|
+ )
|
|
|
+
|
|
|
+ messages.success(request, f"Correo enviado a {len(destinatarios)} inscritos.")
|
|
|
+ return redirect('detalle_evento', evento_id=evento.id)
|