feat Enviar emails a los invitados a un proyecto

parent 2f594da6
......@@ -15,6 +15,7 @@ python3-saml = "*"
cx-oracle = "*"
django-crispy-forms = "==1.7.2"
django-summernote = "*"
django-templated-email = "*"
[requires]
python_version = "3.7"
This diff is collapsed.
import json
from datetime import date
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.forms.models import modelform_factory
......@@ -19,6 +20,8 @@ from django.views.generic import (
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django_summernote.widgets import SummernoteWidget
from templated_email import send_templated_mail
from .forms import InvitacionForm, ProyectoForm
from .models import (
Convocatoria,
......@@ -168,6 +171,7 @@ class ProyectoPresentarView(LoginRequiredMixin, RedirectView):
Presentar una solicitud de proyecto.
El proyecto pasa de estado «Borrador» a estado «Solicitado».
"""
# TODO: Comprobar permisos, fecha
def get_redirect_url(self, *args, **kwargs):
......@@ -178,10 +182,27 @@ class ProyectoPresentarView(LoginRequiredMixin, RedirectView):
proyecto = Proyecto.objects.get(pk=proyecto_id)
# TODO ¿Chequear el estado actual del proyecto?
# TODO Enviar mensaje a aprobadores
# Enviar mensaje a los invitados al proyecto
for invitado in proyecto.participantes.filter(tipo_participacion="invitado"):
send_templated_mail(
template_name="invitacion",
from_email=None, # settings.DEFAULT_FROM_EMAIL
recipient_list=[invitado.usuario.email],
context={
"nombre_coordinador": request.user.get_full_name(),
"nombre_invitado": invitado.usuario.get_full_name(),
"sexo_invitado": invitado.usuario.sexo,
"titulo_proyecto": proyecto.titulo,
"programa_proyecto": f"{proyecto.programa.nombre_corto} ({proyecto.programa.nombre_largo})",
"descripcion_proyecto": proyecto.descripcion,
},
)
proyecto.estado = "SOLICITADO"
proyecto.save()
# TODO Enviar correos a invitados y aprobadores
# TODO Modificar detail.html para no mostrar botones de edición/presentación
messages.success(request, _("Su solicitud de proyecto ha sido presentada."))
return super().post(request, *args, **kwargs)
......
{% block subject %}Invitación al proyecto «{{titulo_proyecto}}»{% endblock %}
{% block plain %}
{% if sexo_invitado == 'F' %}
Estimada {{nombre_invitado}}:
{% elif sexo_invitado == 'M' %}
Estimado {{nombre_invitado}}:
{% else %}
Invitad@ {{nombre_invitado}}:
{% endif %}
{{nombre_coordinador}} le ha invitado a participar en el siguiente Proyecto de Innovación Docente:
Título: {{titulo_proyecto}}
Programa: {{programa_proyecto}}
Descripción: {{descripcion_proyecto}}
Si desea aceptar la invitación, visite la web <http://manhattan.unizar.es>
e inicie sesión con su NIP y contraseña administrativa.
Atentamente,
Vicerrectorado de Política Académica
{% endblock %}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment