Commit 1422a514 authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout script pour avancée procédure en batch

parent 6f5ee05d
......@@ -19,7 +19,8 @@ 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.procedure import (fix_procedure as fix_procedure_,
avance_procedure as avance_procedure_)
from .tools.text import hash_password
......@@ -84,6 +85,17 @@ def fix_procedure():
fix_procedure_(app)
@manager.command
@manager.option('-e', '--etape', dest='etape', default=None)
def avance_procedure(etape):
"""
Avance la procédure pour tous les parlementaire, et envoie les alertes
correspondantes.
"""
app.config.update(SQLALCHEMY_ECHO=False)
avance_procedure_(app, etape)
@manager.command
def generer_demandes():
"""Génère les demandes pour tous les parlementaires"""
......
......@@ -33,6 +33,7 @@ ETAPE_ENVOYE = 20
ETAPE_AR_RECU = 30
ETAPE_REPONSE_POSITIVE = 40
ETAPE_REPONSE_NEGATIVE = 50
ETAPE_DEMANDE_CADA = 60
ETAPES = [
{
......@@ -176,6 +177,19 @@ ETAPES = [
'hidden': False,
'alerte': True,
},
{
'ordre': ETAPE_DEMANDE_CADA,
'label': 'Demande CADA',
'description': """
Suite au refus ou a l'absence de réponse du parlementaire, nous
avons transmis la demande d'accès aux relevés de compte à la
Commission d'Accès aux Documents Administratifs.
""",
'couleur': '#bbbb66',
'icone': 'balance-scale',
'hidden': False,
'alerte': True
}
]
ETAPES_BY_ORDRE = {e['ordre']: e for e in ETAPES}
......
......@@ -439,6 +439,28 @@
</tr>
{% elif parlementaire.etape == ordres.ETAPE_DEMANDE_CADA %}
<!-- DEMANDE_CADA -->
<tr>
<td class="label-next">
<span class="label" title="Nous avons déposé un recours auprès de la CADA "
data-toggle="tooltip" style="background-color: #bb6666;">
<i class="fa fa-balance-scale"></i>
Demande CADA
</span>
</td>
<td colspan="4">
{% filter markdown -%}
{% include "text/etape_cada.md" %}
{% endfilter %}
</td>
</tr>
{% endif %}
{% if ( parlementaire.etape != ordres.ETAPE_REPONSE_POSITIVE
......
#### Nous avons déposé un recours auprès de la CADA
Suite au refus ou à l'absence de réponse du parlementaire, nous avons déposé un recours auprès de la [Commission d'Accès aux Documents Administratifs (CADA)](http://cada.fr). Celle-ci statuera vraisemblablement deux mois plus tard.
......@@ -2,8 +2,12 @@
from datetime import datetime, time
from ..models import Action, Parlementaire, db
from ..models.constants import DEBUT_ACTION, ETAPE_COURRIEL
from ..models import Action, Parlementaire, User, db
from ..models.constants import (DEBUT_ACTION, ETAPE_COURRIEL, ETAPES_BY_ORDRE,
ETAPE_DEMANDE_CADA, ETAPE_REPONSE_POSITIVE,
ETAPE_NA)
from .mails import envoyer_alerte
def fix_procedure(app):
......@@ -18,6 +22,8 @@ def fix_procedure(app):
.order_by(Parlementaire.nom) \
.all()
admin = User.query.filter(User.nick == '!rc').one()
for parl in parls:
print('%s: etape courriel' % parl.nom_complet)
......@@ -25,9 +31,56 @@ def fix_procedure(app):
parlementaire=parl,
etape=ETAPE_COURRIEL,
date=datetime.combine(DEBUT_ACTION, time(23, 30)),
nick='!rc',
email=app.config['ADMIN_EMAIL'],
user=admin
)
db.session.add(act)
db.session.commit()
def avance_procedure(app, ordre_etape):
etape = ETAPES_BY_ORDRE.get(ordre_etape, None)
admin = User.query.filter(User.nick == '!rc').one()
if ordre_etape == ETAPE_DEMANDE_CADA:
# Recherche des parlementaire n'ayant pas de réponse positive
# et avant l'étape CADA
query = Parlementaire.query \
.filter(Parlementaire.etape != ETAPE_REPONSE_POSITIVE) \
.filter(Parlementaire.etape < ETAPE_DEMANDE_CADA)
elif etape:
print('Etape non supportée : %s' % etape['label'])
return
else:
print('Etape inconnue : %s' % ordre_etape)
return
# Filtrage (générique) des parlementaires concernés par l'opération et qui
# ne sont pas déjà à cette étape
parls = query.filter(Parlementaire.etape != ordre_etape) \
.filter(Parlementaire.etape > ETAPE_NA) \
.all()
for parl in parls:
print(parl.nom_complet)
# Création de l'action
act = Action(
parlementaire=parl,
etape=ordre_etape,
date=datetime.now(),
user=admin,
)
db.session.add(act)
parl.etape = ordre_etape
# Commit immédiat pour pouvoir arrêter en plein milieu et reprendre
db.session.commit()
if etape['alerte']:
cnt = envoyer_alerte(app, etape, parl, '')
if cnt:
print('%s e-mails d\'alerte envoyés' % cnt)
# Throttling mails
time.sleep(1)
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