Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
manhattan
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
InnovacionDocente
manhattan
Commits
0dad8b82
Commit
0dad8b82
authored
May 13, 2019
by
Enrique Matías Sánchez (Quique)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat Enviar correo al responsable del centro, en su caso
parent
f1aded61
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
110 additions
and
37 deletions
+110
-37
README.md
README.md
+16
-8
views.py
indo/views.py
+31
-8
settings-sample.py
manhattan_project/settings-sample.py
+32
-19
invitacion.email
templates/templated_email/invitacion.email
+2
-2
solicitud_visto_bueno.email
templates/templated_email/solicitud_visto_bueno.email
+29
-0
No files found.
README.md
View file @
0dad8b82
# Proyecto Manhattan
Proyecto Manhattan
==================
> First we take Manhattan, then we take Berlin.
Manhattan es una aplicación web para gestionar los proyectos de Innovación Docente.
Está desarrollada con
[
Django
](
https://www.djangoproject.com/
)
2, mucho ♥, bastante ☕ y un poco de magia 🧙.
## Requisitos
Requisitos
----------
-
Python 3.7 o superior. En Debian se puede instalar con el script
`compile_python.sh`
. En Ubuntu instalar los paquetes python3.7 libpython3.7-dev.
-
[
pip
](
https://pip.pypa.io/en/stable/installing/
)
(
puede
venir con la instalación de Python).
...
...
@@ -13,25 +15,30 @@ Está desarrollada con [Django](https://www.djangoproject.com/) 2, mucho ♥, ba
-
Paquetes libxmlsec1-dev pkg-config
-
Un SGBD aceptado por Django (vg PostgreSQL o MariaDB).
Para MariaDB/MySQL instalar el paquete libmariadbclient-dev o libmysqlclient-dev. La configuración deberá incluir:
```
```
ini
innodb_file_per_table
innodb_file_format
=
Barracuda
innodb_large_prefix
innodb_default_row_format
=
dynamic
```
## Instalación
Instalación
-----------
```
shell
cd manhattan
pipenv --python 3.7 install --dev
```
## Configuración inicial
Configuración inicial
---------------------
1. Configurar la base de datos en la sección `DATABASES` de `manhattan_project/settings.py`.
2. Configurar los datos para el _Single Sign On_ (SAML).
3. Ejecutar
2. Configurar los datos para el correo, y la URL del sitio.
3. Configurar los datos para el _Single Sign On_ (SAML).
4. Ejecutar
```shell
pipenv shell
./manage.py migrate
...
...
@@ -39,7 +46,8 @@ pipenv --python 3.7 install --dev
./manage.py loaddata seed
```
## Servidor web para desarrollo
Servidor web para desarrollo
----------------------------
```
shell
pipenv shell
...
...
indo/views.py
View file @
0dad8b82
...
...
@@ -170,6 +170,7 @@ class ProyectoPresentarView(LoginRequiredMixin, RedirectView):
"""
Presentar una solicitud de proyecto.
El proyecto pasa de estado «Borrador» a estado «Solicitado».
Se envían correos a los agentes involucrados.
"""
# TODO: Comprobar permisos, fecha
...
...
@@ -182,9 +183,20 @@ 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
self
.
_enviar_invitaciones
(
request
,
proyecto
)
if
proyecto
.
programa
.
nombre_corto
in
[
"PIEC"
,
"PRACUZ"
]:
self
.
_enviar_solicitudes_visto_bueno
(
request
,
proyecto
)
proyecto
.
estado
=
"SOLICITADO"
proyecto
.
save
()
# 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
)
def
_enviar_invitaciones
(
self
,
request
,
proyecto
):
"""Enviar mensaje a los invitados al proyecto"""
for
invitado
in
proyecto
.
participantes
.
filter
(
tipo_participacion
=
"invitado"
):
send_templated_mail
(
template_name
=
"invitacion"
,
...
...
@@ -197,15 +209,26 @@ class ProyectoPresentarView(LoginRequiredMixin, RedirectView):
"titulo_proyecto"
:
proyecto
.
titulo
,
"programa_proyecto"
:
f
"{proyecto.programa.nombre_corto} ({proyecto.programa.nombre_largo})"
,
"descripcion_proyecto"
:
proyecto
.
descripcion
,
"site_url"
:
settings
.
SITE_URL
,
},
)
proyecto
.
estado
=
"SOLICITADO"
proyecto
.
save
()
# 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
)
def
_enviar_solicitudes_visto_bueno
(
self
,
request
,
proyecto
):
"""Enviar mensaje al responsable del centro solicitando su visto bueno"""
send_templated_mail
(
template_name
=
"solicitud_visto_bueno"
,
from_email
=
None
,
# settings.DEFAULT_FROM_EMAIL
recipient_list
=
[
proyecto
.
centro
.
email_decano
],
context
=
{
"nombre_coordinador"
:
request
.
user
.
get_full_name
(),
"nombre_decano"
:
proyecto
.
centro
.
nombre_decano
,
"tratamiento_decano"
:
proyecto
.
centro
.
tratamiento_decano
,
"titulo_proyecto"
:
proyecto
.
titulo
,
"programa_proyecto"
:
f
"{proyecto.programa.nombre_corto} ({proyecto.programa.nombre_largo})"
,
"descripcion_proyecto"
:
proyecto
.
descripcion
,
"site_url"
:
settings
.
SITE_URL
,
},
)
class
ProyectoUpdateFieldView
(
LoginRequiredMixin
,
UpdateView
):
...
...
manhattan_project/settings-sample.py
View file @
0dad8b82
...
...
@@ -29,6 +29,17 @@ DEBUG = True
ALLOWED_HOSTS
=
[]
# ['*']
DEFAULT_FROM_EMAIL
=
'leocricia@manhattan.local'
EMAIL_BACKEND
=
'django.core.mail.backends.console.EmailBackend'
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
=
'smtp.manhattan.local'
EMAIL_HOST_USER
=
'mls'
EMAIL_HOST_PASSWORD
=
'plaff'
EMAIL_PORT
=
587
EMAIL_USE_LOCALTIME
=
True
EMAIL_USE_TLS
=
True
# Application definition
INSTALLED_APPS
=
[
...
...
@@ -59,6 +70,8 @@ MIDDLEWARE = [
ROOT_URLCONF
=
"manhattan_project.urls"
SITE_URL
=
"http://manhattan.local/"
TEMPLATES
=
[
{
"BACKEND"
:
"django.template.backends.django.DjangoTemplates"
,
...
...
@@ -227,8 +240,8 @@ SUMMERNOTE_CONFIG = {
#'airMode': False,
# Change editor size
"width"
:
'100
%
'
,
"height"
:
'480'
,
"width"
:
"100
%
"
,
"height"
:
"480"
,
# Use proper language setting automatically (default)
"lang"
:
None
,
...
...
@@ -246,31 +259,31 @@ SUMMERNOTE_CONFIG = {
"attachment_require_authentication"
:
True
,
# Set `upload_to` function for attachments.
#'attachment_upload_to': my_custom_upload_to_func(),
#
'attachment_upload_to': my_custom_upload_to_func(),
# Set custom storage class for attachments.
#'attachment_storage_class': 'my.custom.storage.class.name',
#
'attachment_storage_class': 'my.custom.storage.class.name',
# Set custom model for attachments (default: 'django_summernote.Attachment')
#'attachment_model': 'my.custom.attachment.model', # must inherit 'django_summernote.AbstractAttachment'
#
'attachment_model': 'my.custom.attachment.model', # must inherit 'django_summernote.AbstractAttachment'
# You can disable attachment feature.
#'disable_attachment': False,
#
'disable_attachment': False,
# Set `True` to return attachment paths in absolute URIs.
#'attachment_absolute_uri': False,
#
'attachment_absolute_uri': False,
# You can add custom css/js for SummernoteWidget.
#'css': (),
#'js': (
#),
#
'css': (),
#
'js': (
#
),
# You can also add custom css/js for SummernoteInplaceWidget.
# !!! Be sure to put {{ form.media }} in template before initiate summernote.
#'css_for_inplace': (
#),
#'js_for_inplace': (
#),
#
'css_for_inplace': (
#
),
#
'js_for_inplace': (
#
),
# Codemirror as codeview
# If any codemirror settings are defined, it will include codemirror files automatically.
...
...
@@ -289,12 +302,12 @@ SUMMERNOTE_CONFIG = {
# If you want to initialize summernote at the bottom of page, set this as True
# and call `initSummernote()` on your page.
"lazy"
:
True
,
#'lazy': False,
#
'lazy': False,
# To use external plugins,
# Include them within `css` and `js`.
#'js': {
# '/some_static_folder/summernote-ext-print.js',
# '//somewhere_in_internet/summernote-plugin-name.js',
#},
#
'js': {
#
'/some_static_folder/summernote-ext-print.js',
#
'//somewhere_in_internet/summernote-plugin-name.js',
#
},
}
templates/templated_email/invitacion.email
View file @
0dad8b82
...
...
@@ -5,7 +5,7 @@ Estimada {{nombre_invitado}}:
{% elif sexo_invitado == 'M' %}
Estimado {{nombre_invitado}}:
{% else %}
Invit
ad@ {{nombre_invitado}}:
Estim
ad@ {{nombre_invitado}}:
{% endif %}
{{nombre_coordinador}} le ha invitado a participar en el siguiente Proyecto de Innovación Docente:
...
...
@@ -15,7 +15,7 @@ Invitad@ {{nombre_invitado}}:
Descripción: {{descripcion_proyecto}}
Si desea aceptar la invitación, visite la web <
http://manhattan.unizar.es
>
Si desea aceptar la invitación, visite la web <
{{site_url}}
>
e inicie sesión con su NIP y contraseña administrativa.
...
...
templates/templated_email/solicitud_visto_bueno.email
0 → 100644
View file @
0dad8b82
{% block subject %}VºBº del proyecto «{{titulo_proyecto}}»{% endblock %}
{% block plain %}
{% if tratamiento_decano in 'Decana,Directora' %}
Estimada {{nombre_decano}}:
{% elif tratamiento_decano in 'Decano,Director' %}
Estimado {{nombre_decano}}:
{% else %}
Estimad@ {{nombre_decano}}:
{% endif %}
{{nombre_coordinador}} ha solicitado el siguiente Proyecto de Innovación Docente:
Título: {{titulo_proyecto}}
Programa: {{programa_proyecto}}
Descripción: {{descripcion_proyecto}}
Los proyectos de este programa deben ser impulsados por el centro.
Por ello, para que solicitud anterior pueda ser evaluada, debe contar con
el visto bueno del responsable del centro.
Para dar su visto bueno a dicha solicitud, visite la web <{{site_url}}>
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment