Commit e168c294 by Nicolas Joyard

Mise à jour

parent bebdd4fd
......@@ -34,6 +34,8 @@ ETAPE_AR_RECU = 30
ETAPE_REPONSE_POSITIVE = 40
ETAPE_REPONSE_NEGATIVE = 50
ETAPE_DEMANDE_CADA = 60
ETAPE_INCOMPETENCE_CADA = 65
ETAPE_REQUETE_TA = 70
ETAPES = [
{
......@@ -189,6 +191,40 @@ ETAPES = [
'icone': 'balance-scale',
'hidden': False,
'alerte': True
},
{
'ordre': ETAPE_INCOMPETENCE_CADA,
'label': 'Incompétence 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. Celle-ci s'est
déclarée incompétente pour répondre à notre demande.
""",
'couleur': '#bbbbbb',
'icone': 'balance-scale',
'hidden': False,
'alerte': False
},
{
'ordre': ETAPE_REQUETE_TA,
'label': 'Requête TA',
'description': """
Suite à la déclaration d'incompétence de la CADA, nous avons
transmis la requête au tribunal administratif.
""",
'description_mail': """
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. Celle-ci s'est
déclarée incompétente pour répondre à notre demande.
Nous avons donc transmis la requête au tribunal administratif.
""",
'couleur': '#eebb44',
'icone': 'balance-scale',
'hidden': False,
'alerte': True
}
]
......
......@@ -11,7 +11,8 @@ from ..models.constants import (CHAMBRES, ETAPES, ETAPES_BY_ORDRE,
ETAPE_COM_PUBLIE, ETAPE_COURRIEL,
ETAPE_DOC_MASQUE, ETAPE_DOC_PUBLIE,
ETAPE_ENVOYE, ETAPE_NA, ETAPE_REPONSE_NEGATIVE,
ETAPE_REPONSE_POSITIVE, ETAPE_DEMANDE_CADA)
ETAPE_REPONSE_POSITIVE, ETAPE_DEMANDE_CADA,
ETAPE_INCOMPETENCE_CADA, ETAPE_REQUETE_TA)
def setup(app):
......@@ -156,7 +157,9 @@ def setup(app):
'ETAPE_AR_RECU': ETAPE_AR_RECU,
'ETAPE_REPONSE_POSITIVE': ETAPE_REPONSE_POSITIVE,
'ETAPE_REPONSE_NEGATIVE': ETAPE_REPONSE_NEGATIVE,
'ETAPE_DEMANDE_CADA': ETAPE_DEMANDE_CADA
'ETAPE_DEMANDE_CADA': ETAPE_DEMANDE_CADA,
'ETAPE_INCOMPETENCE_CADA': ETAPE_INCOMPETENCE_CADA,
'ETAPE_REQUETE_TA': ETAPE_REQUETE_TA
},
'chambres': CHAMBRES
}
......@@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
{% set page_title -%}
{% block title %}Transparence IRFM par Regards Citoyens{% endblock %}
{% block title %}Transparence des Frais de Mandat par Regards Citoyens{% endblock %}
{%- endset %}
{% set page_subtitle -%}
......
......@@ -98,6 +98,20 @@
</section>
</div>
<div class="col-md-12">
<section class="panel panel-default">
<header class="panel-heading">
<b>Historique de l'opération</b>
</header>
<article class="panel-body">
{% filter markdown -%}
{% include "text/histo_operation.md" %}
{% endfilter %}
</article>
</section>
</div>
{% endblock %}
{% block scripts %}
......@@ -223,23 +237,24 @@
/* Procedure */
var en_cours = "En cours: requête déposée au Tribunal Administratif pour 567 députés n'ayant pas répondu favorablement à notre demande";
var tooltips = {
'#demande': "Envoi d'une demande de communication des relevés bancaires et de l'attestation d'utilisation de l'IRFM aux parlementaires",
'#parl_cada': "Demande de communication au parlementaire suite à l'accord CADA",
// '#parl_cada': "Demande de communication au parlementaire suite à l'accord CADA",
'#parl_ta': "Demande de communication au parlementaire suite à l'accord du Tribunal Administratif",
'#parl_caa': "Demande de communication au parlementaire suite à l'accord de la Cour Administrative d'Appel",
'#silence_parl': "Pas de réponse du parlementaire",
'#silence_parl_cada': "Pas de réponse du parlementaire",
// '#silence_parl_cada': "Pas de réponse du parlementaire",
'#refus_parl': "Le parlementaire refuse de nous communiquer les informations demandées",
'#refus_parl_cada': "Le parlementaire refuse de nous communiquer les informations demandées malgré la décision de la CADA",
// '#refus_parl_cada': "Le parlementaire refuse de nous communiquer les informations demandées malgré la décision de la CADA",
'#refus_parl_ta': "Le parlementaire fait appel de la décision du Tribunal Administratif",
'#refus_parl_caa': "Le parlementaire forme un pourvoi devant le Conseil d'État",
'#accord_parl': "Le parlementaire accepte de nous communiquer les informations demandées",
'#accord_parl_cada': "Le parlementaire accepte de nous communiquer les informations demandées",
// '#accord_parl_cada': "Le parlementaire accepte de nous communiquer les informations demandées",
'#accord_parl_ta': "Le parlementaire accepte de nous communiquer les informations demandées",
'#accord_parl_caa': "Le parlementaire accepte de nous communiquer les informations demandées",
......@@ -247,19 +262,25 @@
'#incompetence_ta': "Le Tribunal Administratif se déclare incompétent pour traiter notre demande",
'#incompetence_ce': "Le Conseil d'État se déclare incompétent pour traiter notre demande",
'#rejet_cada': "La CADA rejette notre demande",
// '#rejet_cada': "La CADA rejette notre demande",
'#rejet_ta': "Le Tribunal Administratif rejette notre demande",
'#rejet_caa': "La Cour Administrative d'Appel rejette notre demande",
'#rejet_ce': "Le Conseil d'État rejette notre demande",
'#rejet_eur': "La juridiction Européenne rejette notre demande",
'#accord_cada': "La CADA nous accorde le droit d'accès aux informations",
// '#accord_cada': "La CADA nous accorde le droit d'accès aux informations",
'#accord_ta': "Le Tribunal Administratif nous accorde le droit d'accès aux informations",
'#accord_caa': "La Cour Administrative d'Appel nous accorde le droit d'accès aux informations",
'#accord_ce': "Le Conseil d'État nous accorde le droit d'accès aux informations",
'#accord_eur': "La juridiction Européenne nous accorde le droit d'accès aux informations",
'#lobbying': "Nous faisons du lobbying pour qu'un projet de loi soit adopté qui établisse la transparence de l'IRFM"
'#lobbying': "Nous faisons du lobbying pour qu'un projet de loi soit adopté qui établisse la transparence de l'IRFM",
'#pin': en_cours,
'#nb_negatifs': en_cours,
'#saisie_ta': en_cours,
'#nb_positifs': "7 parlementaires ont accepté de nous communiquer les informations demandées"
};
var tooltips_right = ['#accord_eur', '#rejet_eur', '#lobbying'];
......
# <a href="{{ url_for('home') }}">Transparence IRFM</a>
# <a href="{{ url_for('home') }}">Transparence des Frais de Mandat</a>
Aidez-nous à obtenir la transparence sur l'Indemnité Représentative de Frais de Mandat de la précédente législature !
**15 mai 2017**
* Lancement de l'opération : envoi par e-mail de la demande d'accès aux documents aux 574 députés concernés.
* Ouverture de l'envoi des relances par recommandé avec l'aide des citoyens.
**du 16 mai 2017 au 7 juillet 2017**
* 279 relances envoyées par recommandé avec l'aide des citoyens ; 239 avis de réception reçus.
* 7 réponse positives de parlementaires, 18 réponses négatives.
**8 juillet 2017**
* Clôture des envois de recommandés avec l'aide des citoyens.
* Dépôt de 567 recours auprès de la Commission d'Accès aux Documents administratifs pour les parlementaires ne nous ayant pas répondu, ou ayant répondu par la négative.
**23 novembre 2017**
* Réception du premier avis de la CADA, qui se déclare incompétente pour traiter notre demande.
**du 23 novembre 2017 au 3 janvier 2018**
* Réception des 573 avis de la CADA sur les demandes à chaque parlementaire concerné. Tous les avis reçus sont identiques.
**15 mai 2018**
* Dépôt d'un recours collectif auprès du Tribunal Administratif.
......@@ -8,7 +8,11 @@ C'est simple : choisissez un parlementaire pour lequel la demande de document n
{% else %}
Nous avons transmis un recours auprès de la [Commission d'Accès aux Documents Administratifs (CADA)](http://cada.fr) pour chaque parlementaire n'ayant pas répondu positivement à notre demande. Celle-ci statuera vraisemblablement à la rentrée.
{% if current_step == ordres.ETAPE_DEMANDE_CADA %}
Nous avons transmis un recours auprès de la [Commission d'Accès aux Documents Administratifs (CADA)](http://cada.fr) pour chaque parlementaire n'ayant pas répondu positivement à notre demande. Celle-ci statuera vraisemblablement à la rentrée.
{% elif current_step == ordres.ETAPE_REQUETE_TA %}
Nous avons déposé une requête auprès du Tribunal Administratif pour chaque parlementaire n'ayant pas répondu positivement à notre demande.
{% endif %}
En attendant, vous pouvez contacter directement l'un des parlementaires ou l'un de leurs collaborateurs pour recueillir leur avis sur cette opération, et tenter de les convaincre de nous répondre favorablement.
......@@ -16,4 +20,4 @@ En attendant, vous pouvez contacter directement l'un des parlementaires ou l'un
{% endif %}
Notez bien que tous les parlementaires sont des élus de la Nation, vous êtes donc tout à fait en droit de solliciter un élu d'une autre circonscription que celle de votre domicile.
\ No newline at end of file
Notez bien que tous les parlementaires sont des élus de la Nation, vous êtes donc tout à fait en droit de solliciter un élu d'une autre circonscription que celle de votre domicile.
......@@ -10,6 +10,10 @@
<!--
Classification des formes
#pin
#nb_negatifs
#nb_positifs
.rect
.parl
#demande
......@@ -145,6 +149,16 @@
#procedure #saisie_caa .label {
font-size: 8pt;
}
/* Etapes passées */
#accord_cada,
#rejet_cada,
#parl_cada,
#accord_parl_cada,
#refus_parl_cada,
#silence_parl_cada {
opacity: 0.1 !important;
}
</style>
<defs
......@@ -975,4 +989,49 @@
</g>
</g>
</g>
<path
style="fill:#ff2000;fill-opacity:1;stroke:#bd0000;stroke-width:1.33638978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 466.97368,53.530316 c 2.82647,-10.81409 13.71669,-21.803645 12.51016,-28.663806 -1.20652,-6.86017 -7.17453,-11.52239 -12.78506,-11.369834 -5.61053,0.152551 -11.45054,4.787129 -12.39108,11.615654 -0.94054,6.828526 10.16307,17.816918 12.66598,28.417986 z m 0.28697,-20.237954 a 7.1766908,7.1766908 0 0 1 -7.22557,-7.12763 7.1766908,7.1766908 0 0 1 7.12701,-7.225559 7.1766908,7.1766908 0 0 1 7.22556,7.127005 7.1766908,7.1766908 0 0 1 -7.127,7.226184 z"
id="pin"
transform="translate(-70,-12)"
inkscape:connector-curvature="0" />
<g
id="nb_positifs"
transform="translate(294,265)">
<path
inkscape:connector-curvature="0"
id="path1031"
d="m -135.68833,-80.411704 a 10.049657,10.049657 0 0 1 -10.04966,10.049657 10.049657,10.049657 0 0 1 -10.04966,-10.049657 10.049657,10.049657 0 0 1 10.04966,-10.049657 10.049657,10.049657 0 0 1 10.04966,10.049657 z"
style="opacity:1;vector-effect:none;fill:#66bb66;fill-opacity:1;stroke:#ddeedd;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text1057"
y="-76.039421"
x="-145.41687"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#ddeedd;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
xml:space="preserve"><tspan
y="-76.039421"
x="-145.41687"
id="tspan1055"
sodipodi:role="line">7</tspan></text>
</g>
<g
id="nb_negatifs"
transform="translate(471,360)">
<path
inkscape:connector-curvature="0"
id="path1031-7"
d="m -13.039689,-217.90771 c -5.55027,0 -10.04966,-4.49938 -10.04966,-10.04966 0,-5.55027 4.49939,-10.04966 10.04966,-10.04965 H 6.9603107 c 5.5502703,-10e-6 10.0496603,4.49938 10.0496603,10.04965 0,5.55028 -4.49939,10.04966 -10.0496603,10.04966 z"
style="opacity:1;vector-effect:none;fill:#bb6666;fill-opacity:1;stroke:#eedddd;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="csccscc" />
<text
id="text1057-5"
y="-223.58508"
x="-2.7185695"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#eedddd;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
xml:space="preserve"><tspan
y="-223.58508"
x="-2.7185695"
id="tspan1055-3"
sodipodi:role="line">567</tspan></text>
</g>
</svg>
......@@ -45,7 +45,10 @@ def envoyer_alerte(app, etape, parl, commentaire=None):
subject = 'Transparence IRFM - Alerte pour %s' % parl.nom_complet
if not commentaire:
commentaire = etape['description']
if 'description_mail' in etape:
commentaire = etape['description_mail']
else:
commentaire = etape['description']
messages = []
for user in parl.abonnes:
......
......@@ -9,9 +9,10 @@ from ..models import Action, Parlementaire, User, db
from ..models.constants import (DEBUT_ACTION, ETAPE_A_CONFIRMER,
ETAPE_COURRIEL, ETAPES_BY_ORDRE,
ETAPE_DEMANDE_CADA, ETAPE_DOC_PUBLIE,
ETAPE_REPONSE_NEGATIVE,
ETAPE_DOC_MASQUE, ETAPE_ENVOYE,
ETAPE_REPONSE_POSITIVE, ETAPE_NA)
ETAPE_REPONSE_NEGATIVE, ETAPE_REQUETE_TA,
ETAPE_DOC_MASQUE, ETAPE_ENVOYE, ETAPE_AR_RECU,
ETAPE_REPONSE_POSITIVE, ETAPE_NA,
ETAPE_INCOMPETENCE_CADA)
from .mails import envoyer_alerte
from .text import slugify
......@@ -49,12 +50,13 @@ 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:
if ordre_etape in (ETAPE_DEMANDE_CADA, ETAPE_INCOMPETENCE_CADA,
ETAPE_REQUETE_TA):
# Recherche des parlementaire n'ayant pas de réponse positive
# et avant l'étape CADA
# et avant l'étape demandée
query = Parlementaire.query \
.filter(Parlementaire.etape != ETAPE_REPONSE_POSITIVE) \
.filter(Parlementaire.etape < ETAPE_DEMANDE_CADA)
.filter(Parlementaire.etape < ordre_etape)
elif etape:
print('Etape non supportée : %s' % etape['label'])
return
......@@ -66,10 +68,12 @@ def avance_procedure(app, ordre_etape):
# ne sont pas déjà à cette étape
parls = query.filter(Parlementaire.etape != ordre_etape) \
.filter(Parlementaire.etape > ETAPE_NA) \
.order_by(Parlementaire.nom) \
.all()
for parl in parls:
print(parl.nom_complet)
act = None
# Cas particulier demande CADA
if ordre_etape == ETAPE_DEMANDE_CADA:
......@@ -92,14 +96,32 @@ def avance_procedure(app, ordre_etape):
if act:
act.etape = ETAPE_DEMANDE_CADA
# Cas particulier incompétence CADA
if ordre_etape == ETAPE_INCOMPETENCE_CADA:
# Transformation de l'action 'Document' avec l'avis CADA en action
# "incompétence cada"
act = Action.query \
.filter(Action.parlementaire == parl) \
.filter(Action.etape == ETAPE_DOC_MASQUE) \
.filter(Action.attachment.like('avis-cada-%')) \
.first()
if act:
act.etape = ETAPE_INCOMPETENCE_CADA
# Création de l'action si inexistante
if not act:
act = Action(
parlementaire=parl,
etape=ordre_etape,
date=datetime.now(),
user=admin,
user=admin
)
if ordre_etape == ETAPE_REQUETE_TA:
act.suivi = etape['description'].strip()
act.attachment = 'requete-ta-%s.pdf' % \
slugify(parl.nom_complet)
db.session.add(act)
parl.etape = ordre_etape
......@@ -107,7 +129,7 @@ def avance_procedure(app, ordre_etape):
# Commit immédiat pour pouvoir arrêter en plein milieu et reprendre
db.session.commit()
if etape['alerte']:
if etape['alerte'] and not app.config['MAIL_SUPPRESS_SEND']:
cnt = envoyer_alerte(app, etape, parl)
if cnt:
print('%s e-mails d\'alerte envoyés' % cnt)
......@@ -121,8 +143,9 @@ def export_pour_ta(app):
.order_by(Parlementaire.nom) \
.all()
output_order = ['num', 'nom', 'sexe', 'refus', 'demande', 'bordereau',
'avis_cada', 'date_cada']
output_order = ['num', 'nom', 'slug', 'sexe', 'adresse', 'refus',
'demande', 'bordereau', 'cada_no', 'avis_cada',
'date_cada', 'lar_envoi', 'lar_reception']
print(';'.join(output_order))
......@@ -133,21 +156,30 @@ def export_pour_ta(app):
data = {
'num': '%03d' % parl_num,
'nom': parl.nom_complet,
'slug': slugify(parl.nom_complet),
'sexe': parl.sexe,
'refus': '',
'demande': 'demande-irfm-%s.pdf' % slugify(parl.nom_complet)
'refus': ' ',
'demande': 'demande-irfm-%s.pdf' % slugify(parl.nom_complet),
'adresse': parl.adresse.replace('\n', ', ').replace(',,', ',')
.replace("\xa0", " ")
}
for act in parl.actions:
if act.etape == ETAPE_ENVOYE:
data['bordereau'] = act.attachment
data['bordereau'] = act.attachment or 'NONE'
data['lar_envoi'] = act.date.strftime('%d %B %Y')
if act.etape == ETAPE_AR_RECU:
data['lar_reception'] = act.date.strftime('%d %B %Y')
if act.etape == ETAPE_REPONSE_NEGATIVE:
data['refus'] = 'REFUS'
if act.etape == ETAPE_DOC_MASQUE and \
act.attachment.startswith('avis-cada'):
data['avis_cada'] = act.attachment
data['date_cada'] = act.date.strftime('%d/%m/%Y')
data['avis_cada'] = act.attachment or 'NONE'
data['date_cada'] = act.date.strftime('%d %B %Y')
data['cada_no'] = data['avis_cada'].replace('avis-cada-', '') \
.replace('.pdf', '')
print(';'.join([data.get(k, '') for k in output_order]))
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 sign in to comment