Commit fbb60f75 authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout commande envoi mails relance

parent 2600108b
......@@ -17,6 +17,7 @@ from .models import db
from .tools.files import generer_demandes as generer_demandes_
from .tools.mails import (envoyer_emails as envoyer_emails_,
envoyer_relances as envoyer_relances_,
mailing_lists as mailing_lists_)
from .tools.procedure import fix_procedure as fix_procedure_
from .tools.text import hash_password
......@@ -60,6 +61,14 @@ def envoyer_emails(envoyer=False):
print('Aucun parlementaire sans adresse mail :)')
@manager.command
@manager.option('--envoyer', action='store_true')
def envoyer_relances(envoyer=False):
"""Envoie des e-mails de relance"""
app.config.update(SQLALCHEMY_ECHO=False)
envoyer_relances_(app, envoyer)
@manager.command
def mailing_lists():
"""Affiche les abonnés aux mailing lists"""
......
......@@ -15,6 +15,10 @@ while _m < 1:
DEBUT_RELEVES = datetime.date(_y, _m, DEBUT_ACTION.day)
# Délais pour la relance de citoyens en jours
DELAI_RELANCE = 7
DELAI_REPONSE = 2
#
# Lors de la modification de ces énumérations, penser à créer une migration DB
......
Bonjour {{ user.nick }},
Vous avez indiqué sur notre site dédié à l'opération de transparence sur l'IRFM
que vous preniez en charge l'envoi de la demande de documents pour :
{% for parl in parls -%}
- {{ parl.nom_complet }}
{%- endfor %}
Comme {{ delai_relance }} jours se sont écoulés depuis, nous nous permettons de
vous envoyer un petit message de relance.
Pour assurer le suivi de notre opération, il est important que vous confirmiez
l'envoi sur la page de chaque parlementaire. Un formulaire y est disponible,
et vous permettra de saisir le numéro de suivi du courrier que vous avez
envoyé, et si vous le souhaitez, d'y joindre une photo ou un scan de la preuve
d'envoi.
Pour retrouver la liste des parlementaires que vous avez pris en charge,
accédez au site <{{ url_for('home', _external=True) }}>. Vous devrez vous
identifier (en cliquant sur le bouton « S'identifier » en haut à droite de la
page) avec les informations utilisées lors de la prise en charge de l'envoi,
c'est à dire :
Pseudo: {{ user.nick }}
E-mail: {{ user.email }}
Vous pourrez alors cliquer sur « Mes actions » dans le menu en tête de page.
Sans nouvelles de votre part sous {{ delai_reponse }} jours, nous remettrons l'envoi à
disposition d'autres citoyens.
N'hésitez pas à nous contacter par e-mail en cas de souci !
--
Regards Citoyens
Ce message a été envoyé automatiquement. Si vous pensez l'avoir reçu par
erreur, merci de nous contacter par retour de mail.
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
import os
import time
......@@ -7,8 +8,11 @@ from flask import render_template
from flask_mail import Mail, Message
from ..models import User, Parlementaire, db
from ..models.constants import ETAPE_NA
from sqlalchemy.orm import contains_eager, joinedload
from ..models import Action, User, Parlementaire, db
from ..models.constants import (DELAI_RELANCE, DELAI_REPONSE, ETAPE_NA,
ETAPE_A_CONFIRMER)
from ..tools.files import generer_demande
......@@ -121,3 +125,47 @@ def envoyer_emails(app, envoyer):
time.sleep(1)
return missed_addr, missed_email
def envoyer_relances(app, envoyer):
mail = Mail(app)
date_min = datetime.now() - timedelta(days=DELAI_RELANCE)
acts = Action.query.join(Action.parlementaire) \
.filter(Action.etape == ETAPE_A_CONFIRMER) \
.filter(Parlementaire.etape == ETAPE_A_CONFIRMER) \
.filter(Action.suivi == None) \
.filter(Action.date < date_min) \
.options(contains_eager(Action.parlementaire)) \
.options(joinedload(Action.user)) \
.order_by(Parlementaire.nom) \
.all() # noqa
data = {}
for act in acts:
if act.user not in data:
data[act.user] = []
data[act.user].append(act)
for user, acts in data.items():
sender = ('Regards Citoyens', app.config['ADMIN_EMAIL'])
subject = 'Transparence IRFM - Relance'
body = render_template('courriers/mail_relance.txt.j2',
user=user,
parls=[a.parlementaire for a in acts],
delai_relance=DELAI_RELANCE,
delai_reponse=DELAI_REPONSE)
msg = Message(subject=subject, body=body, sender=sender,
recipients=[user.email])
if envoyer:
mail.send(msg)
act.suivi = 'Relancé le %s' % datetime.now().strftime('%x')
time.sleep(1)
else:
print(msg)
if envoyer:
db.session.commit()
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