|
|
|
@ -6,12 +6,14 @@ 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 |
|
|
|
|
|
|
|
from .models import Evento, Reserva, ListaEspera, Noticia |
|
|
|
from .forms import ListaEsperaForm, EventoForm |
|
|
|
from .forms import ListaEsperaForm, EventoForm, MensajeCorreoForm |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
@ -292,3 +294,44 @@ 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) |
|
|
|
|
|
|
|
if request.method == "POST": |
|
|
|
form = MensajeCorreoForm(request.POST) |
|
|
|
if form.is_valid(): |
|
|
|
asunto = form.cleaned_data['asunto'] |
|
|
|
mensaje = form.cleaned_data['mensaje'] |
|
|
|
|
|
|
|
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) |
|
|
|
else: |
|
|
|
form = MensajeCorreoForm() |
|
|
|
|
|
|
|
return redirect('eventos:detalle_evento', evento_id=evento.id) |