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_ ...@@ -19,7 +19,8 @@ from .tools.files import generer_demandes as generer_demandes_
from .tools.mails import (envoyer_emails as envoyer_emails_, from .tools.mails import (envoyer_emails as envoyer_emails_,
envoyer_relances as envoyer_relances_, envoyer_relances as envoyer_relances_,
mailing_lists as mailing_lists_) 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 from .tools.text import hash_password
...@@ -84,6 +85,17 @@ def fix_procedure(): ...@@ -84,6 +85,17 @@ def fix_procedure():
fix_procedure_(app) 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 @manager.command
def generer_demandes(): def generer_demandes():
"""Génère les demandes pour tous les parlementaires""" """Génère les demandes pour tous les parlementaires"""
......
...@@ -33,6 +33,7 @@ ETAPE_ENVOYE = 20 ...@@ -33,6 +33,7 @@ ETAPE_ENVOYE = 20
ETAPE_AR_RECU = 30 ETAPE_AR_RECU = 30
ETAPE_REPONSE_POSITIVE = 40 ETAPE_REPONSE_POSITIVE = 40
ETAPE_REPONSE_NEGATIVE = 50 ETAPE_REPONSE_NEGATIVE = 50
ETAPE_DEMANDE_CADA = 60
ETAPES = [ ETAPES = [
{ {
...@@ -176,6 +177,19 @@ ETAPES = [ ...@@ -176,6 +177,19 @@ ETAPES = [
'hidden': False, 'hidden': False,
'alerte': True, '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} ETAPES_BY_ORDRE = {e['ordre']: e for e in ETAPES}
......
...@@ -439,6 +439,28 @@ ...@@ -439,6 +439,28 @@
</tr> </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 %} {% endif %}
{% if ( parlementaire.etape != ordres.ETAPE_REPONSE_POSITIVE {% 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 @@ ...@@ -2,8 +2,12 @@
from datetime import datetime, time from datetime import datetime, time
from ..models import Action, Parlementaire, db from ..models import Action, Parlementaire, User, db
from ..models.constants import DEBUT_ACTION, ETAPE_COURRIEL 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): def fix_procedure(app):
...@@ -18,6 +22,8 @@ def fix_procedure(app): ...@@ -18,6 +22,8 @@ def fix_procedure(app):
.order_by(Parlementaire.nom) \ .order_by(Parlementaire.nom) \
.all() .all()
admin = User.query.filter(User.nick == '!rc').one()
for parl in parls: for parl in parls:
print('%s: etape courriel' % parl.nom_complet) print('%s: etape courriel' % parl.nom_complet)
...@@ -25,9 +31,56 @@ def fix_procedure(app): ...@@ -25,9 +31,56 @@ def fix_procedure(app):
parlementaire=parl, parlementaire=parl,
etape=ETAPE_COURRIEL, etape=ETAPE_COURRIEL,
date=datetime.combine(DEBUT_ACTION, time(23, 30)), date=datetime.combine(DEBUT_ACTION, time(23, 30)),
nick='!rc', user=admin
email=app.config['ADMIN_EMAIL'],
) )
db.session.add(act) db.session.add(act)
db.session.commit() 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