feat Envío de notificaciones con la resolución

parent 92a07819
Pipeline #601 failed with stage
in 0 seconds
......@@ -24,6 +24,7 @@ from .views import (
ProyectoPresentarView,
ProyectoUpdateFieldView,
ProyectosEvaluadosTableView,
ProyectosNotificarView,
ProyectosUsuarioView,
)
......@@ -49,6 +50,11 @@ urlpatterns = [
ProyectoEvaluacionesCsvView.as_view(),
name='csv_evaluaciones',
),
path(
'gestion/proyectos/<int:anyo>/notificar/',
ProyectosNotificarView.as_view(),
name='notificar_proyectos',
),
path(
'gestion/proyectos/<int:anyo>/evaluadores/',
ProyectoEvaluadorTableView.as_view(),
......
......@@ -631,6 +631,50 @@ class ProyectoEvaluacionesTableView(LoginRequiredMixin, PermissionRequiredMixin,
)
class ProyectosNotificarView(LoginRequiredMixin, PermissionRequiredMixin, RedirectView):
"""Envía a los coordinadores de los proyectos la resolución de la Comisión de Evaluación"""
permission_required = 'indo.listar_evaluaciones'
permission_denied_message = _('Sólo los gestores pueden acceder a esta página.')
def get_redirect_url(self, *args, **kwargs):
return reverse_lazy('evaluaciones_table', kwargs={'anyo': kwargs.get('anyo')})
def post(self, request, *args, **kwargs):
proyectos_con_dotacion = (
Proyecto.objects.filter(convocatoria__id=self.kwargs['anyo'])
.filter(aceptacion_comision=True, ayuda_concedida__gt=0)
.all()
)
for proyecto in proyectos_con_dotacion:
self._enviar_notificaciones(proyecto, 'notificacion_con_dotacion')
proyectos_sin_dotacion = (
Proyecto.objects.filter(convocatoria__id=self.kwargs['anyo'])
.filter(aceptacion_comision=True, ayuda_concedida=0)
.all()
)
for proyecto in proyectos_sin_dotacion:
self._enviar_notificaciones(proyecto, 'notificacion_sin_dotacion')
messages.success(request, _('Se han enviado las notificaciones.'))
return super().post(request, *args, **kwargs)
def _enviar_notificaciones(self, proyecto, plantilla):
emails_coordinadores = [c.email for c in proyecto.get_coordinadores()]
send_templated_mail(
template_name=plantilla,
from_email=None, # settings.DEFAULT_FROM_EMAIL
recipient_list=emails_coordinadores, # TODO: Añadir Cc
context={
'proyecto': proyecto,
'coordinador': proyecto.get_coordinador(),
'coordinador_2': proyecto.get_coordinador_2(),
'site_url': settings.SITE_URL,
},
)
class ProyectoTableView(LoginRequiredMixin, PermissionRequiredMixin, SingleTableView):
"""Muestra una tabla de todos los proyectos presentados en una convocatoria."""
......
......@@ -6,28 +6,70 @@
{% block content %}
<div class='container-blanco'>
<h1 id="presentados">{% trans "Evaluaciones de los proyectos" %} <small>{{ anyo }}</small></h1>
<hr />
<br />
<div class="alert-info alert fade-in">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
<span class="fas fa-info-circle"></span>
<p>{% trans 'Desde esta página puede:' %}</p>
<ul>
<li>{% trans 'Ver las evaluaciones de los proyectos presentados en esta convocatoria' %}</li>
<li>{% trans 'Introducir la resolución de la Comisión Evaluadora' %}</li>
<li>{% trans 'Descargar una hoja de cálculo con todas las evaluaciones' %}</li>
</ul>
</div><br />
{% render_table table %}
<div>
<a href="{% url 'csv_evaluaciones' anyo %}" class="btn btn-info">
<span class="fas fa-file-csv"></span>&nbsp; {% trans "Descargar evaluaciones" %}
</a>
</div
<h1 id="presentados">{% trans "Evaluaciones de los proyectos" %} <small>{{ anyo }}</small></h1>
<hr />
<br />
<div class="alert-info alert fade-in">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
<span class="fas fa-info-circle"></span>
<p>{% trans 'Desde esta página puede:' %}</p>
<ul>
<li>{% trans 'Ver las evaluaciones de los proyectos presentados en esta convocatoria' %}</li>
<li>{% trans 'Introducir la resolución de la Comisión Evaluadora' %}</li>
<li>{% trans 'Descargar una hoja de cálculo con todas las evaluaciones' %}</li>
<li>{% trans 'Enviar las notificaciones de aprobación a los coordinadores' %}</li>
</ul>
</div><br />
{% render_table table %}
<br style="clear: both;" />
<div class="btn-group" role="group" aria-label="Botones">
<a href="{% url 'csv_evaluaciones' anyo %}" class="btn btn-info">
<span class="fas fa-file-csv"></span>&nbsp; {% trans "Descargar evaluaciones" %}
</a>
<button class="btn btn-danger" data-toggle="modal" data-target="#enviarModal" type="button">
<span class="fas fa-paper-plane"></span>&nbsp; {% trans 'Enviar notificaciones' %}
</button>
</div>
</div>
<div class="modal fade" id="enviarModal" tabindex="-1" role="dialog" aria-labelledby="enviarModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="enviarModalLabel">{% trans "¿Seguro que desea enviar las notificaciones?" %}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Cerrar">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>
{% blocktrans %}Se enviarán notificaciones a los coordinadores de <b>todos</b> los proyectos
aprobados por la Comisión.{% endblocktrans %}
</p>
</div>
<div class="modal-footer">
<form action="{% url 'notificar_proyectos' anyo=anyo %}" id="notificar-form" method="post">
{% csrf_token %}
<button type="button" class="btn btn-info" data-dismiss="modal">
<span class="fas fa-times"></span> {% trans "Cancelar" %}
</button>
<button type="submit" class="btn btn-danger">
<span class="fas fa-paper-plane"></span> {% trans "Enviar" %}
</button>
</form>
</div>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
{% block subject %}Resolución sobre el proyecto «{{proyecto.titulo}}»{% endblock %}
{% block plain %}
Resolución Convocatoria de Innovación Docente {{proyecto.convocatoria.id}}/{{proyecto.convocatoria.id|add:1}} de la Universidad de Zaragoza
---------------------------------------------------------------------
{% if coordinador.sexo == 'F' %}Estimada {{coordinador.full_name}}:
{% elif coordinador.sexo == 'M' %}Estimado {{coordinador.full_name}}:
{% else %}Estimad@ {{coordinador.full_name}}:{% endif %}
{% if coordinador_2 %}{% if coordinador_2.sexo == 'F' %}Estimada {{coordinador_2.full_name}}:
{% elif coordinador_2.sexo == 'M' %}Estimado {{coordinador_2.full_name}}:
{% else %}Estimad@ {{coordinador_2.full_name}}:{% endif %}{% endif %}
{% if not coordinador_2 %}Me complace comunicarte la concesión del proyecto
«{{proyecto.titulo}}»,
en el que constas como {% if coordinador.sexo == 'F' %}coordinadora{% else %}coordinador{% endif %}.
{% else %}Me complace comunicaros la concesión del proyecto
«{{proyecto.titulo}}»,
en el que constais como coordinadores.
{% endif %}
El importe de la ayuda concedida para la realización del proyecto es de
{{proyecto.ayuda_concedida}} euros,
que deberán destinarse exclusivamente a los siguientes conceptos:
{{proyecto.tipo_gasto}}
Realizados los gastos y una vez finalizado el proyecto, este
Vicerrectorado transferirá la cantidad justificada a la Unidad de
Planificación correspondiente.
Debes confirmar la aceptación del proyecto hasta el {{proyecto.convocatoria.fecha_max_aceptacion_resolucion}} (inclusive). FIXME
Dicha confirmación debe realizarse exclusivamente a través de la página web
<{{site_url}}> (no por registro).
La fecha de finalización del proyecto será el {{proyecto.convocatoria.fecha_max_memorias}},
fecha límite para remitir la memoria final del proyecto que recogerá
los resultados obtenidos y la valoración de los mismos.
El plazo para incorporar los gastos realizados será hasta el
{{proyecto.convocatoria.fecha_max_gastos}} (inclusive).
No se aceptarán memorias ni cierres de gestión de proyectos con
posterioridad a las fechas antes indicadas.
Los proyectos que no cumplan estos requisitos se considerarán como
no realizados y, por tanto, sus participantes no podrán disfrutar de la
cuantía económica asignada ni recibir la certificación correspondiente.
La resolución completa de esta convocatoria está publicada en la página web
<http://tablon.unizar.es>.
El plazo para formular alegaciones a esta propuesta de resolución,
que deberán presentarse a través de Ayudica (<https://ayudica.unizar.es),
finaliza el próximo día {{proyecto.convocatoria.fecha_max_alegaciones}} (inclusive).
Asimismo, cualquier sugerencia o duda debe enviarse a través de Ayudica
para que quede registrada.
Recibe un cordial saludo,
Gerardo Sanz Sáiz
Vicerrector de Política Académica
Universidad de Zaragoza
{% endblock %}
{% block subject %}Resolución sobre el proyecto «{{proyecto.titulo}}»{% endblock %}
{% block plain %}
Resolución Convocatoria de Innovación Docente {{proyecto.convocatoria.id}} de la Universidad de Zaragoza
---------------------------------------------------------------------
{% if coordinador.sexo == 'F' %}Estimada {{coordinador.full_name}}:
{% elif coordinador.sexo == 'M' %}Estimado {{coordinador.full_name}}:
{% else %}Estimad@ {{coordinador.full_name}}:{% endif %}
{% if coordinador_2 %}{% if coordinador_2.sexo == 'F' %}Estimada {{coordinador_2.full_name}}:
{% elif coordinador_2.sexo == 'M' %}Estimado {{coordinador_2.full_name}}:
{% else %}Estimad@ {{coordinador_2.full_name}}:{% endif %}{% endif %}
{% if not coordinador_2 %}Me complace comunicarte la concesión del proyecto
«{{proyecto.titulo}}»,
en el que constas como {% if coordinador.sexo == 'F' %}coordinadora{% else %}coordinador{% endif %}.
{% else %}Me complace comunicaros la concesión del proyecto
«{{proyecto.titulo}}»,
en el que constais como coordinadores.
{% endif %}
Este proyecto no ha sido dotado económicamente para su realización.
Debes confirmar la aceptación del proyecto hasta el {{proyecto.convocatoria.fecha_max_aceptacion_resolucion}} (inclusive).
Dicha confirmación debe realizarse exclusivamente a través de la página web
<{{site_url}}> (no por registro).
La fecha de finalización del proyecto será el {{proyecto.convocatoria.fecha_max_memorias}},
fecha límite para remitir la memoria final del proyecto que recogerá
los resultados obtenidos y la valoración de los mismos.
No se aceptarán memorias ni cierres de gestión de proyectos con
posterioridad a las fechas antes indicadas.
Los proyectos que no cumplan estos requisitos se considerarán como
no realizados y, por tanto, sus participantes no podrán recibir
la certificación correspondiente.
La resolución completa de esta convocatoria está publicada en la página web
<http://tablon.unizar.es>.
El plazo para formular alegaciones a esta propuesta de resolución,
que deberán presentarse a través de Ayudica (<https://ayudica.unizar.es),
finaliza el próximo día {{proyecto.convocatoria.fecha_max_alegaciones}} (inclusive).
Asimismo, cualquier sugerencia o duda debe enviarse a través de Ayudica
para que quede registrada.
Recibe un cordial saludo,
Gerardo Sanz Sáiz
Vicerrector de Política Académica
Universidad de Zaragoza
{% endblock %}
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