Commit b5996e5a authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout infos envoi + réorg templates

parent 09e70745
# -*- coding: utf-8 -*-
from io import BytesIO
import re
import unicodedata
from flask import abort, make_response, render_template
from xhtml2pdf import pisa
from io import BytesIO
from ..models import Parlementaire
SLUG_STRIP_RE = re.compile(r'[^\w\s-]')
SLUG_HYP_RE = re.compile(r'[-\s]+')
def slugify(value):
if not isinstance(value, str):
value = str(value)
value = str(unicodedata.normalize('NFKD', value).encode('ascii', 'ignore'))
value = str(SLUG_STRIP_RE.sub('', value).strip().lower())
value = SLUG_HYP_RE.sub('-', value)
return value[1:]
def setup_routes(app):
@app.route('/demande/<id>', endpoint='demande_pdf')
def demande_pdf(id):
@app.route('/demande/<id>/<mode>', endpoint='demande_pdf')
def demande_pdf(id, mode='download'):
parl = Parlementaire.query.filter_by(id=id).first()
if not parl:
abort(404)
slug = slugify(parl.nom_complet)
html = render_template('demande.html.j2',
parlementaire=parl
)
pdf = BytesIO()
pisa.CreatePDF(html, pdf)
response = make_response(pdf.getvalue())
pdf.close()
response.headers['Content-Type'] = 'application/pdf'
if mode == 'download':
response.headers['Content-Disposition'] = \
'attachment; filename="courrier-irfm-%s.pdf"' % slug
return response
......@@ -63,6 +63,10 @@
<div class="alert alert-danger" role="alert">{{ message }}</div>
{% endfor %}
<div class="alert alert-warning" role="alert">
Attention, ceci est une version préliminaire, l'opération n'ayant pas encore été lancée.
</div>
{% block content %}
{% endblock %}
......
......@@ -3,9 +3,23 @@
{% block content %}
<div class="col-md-6">
<section class="panel panel-default">
<header class="panel-heading">
<b>Présentation de l'opération</b>
</header>
<article class="panel-body">
{% filter markdown -%}
{% include "text/presentation.md" %}
{% endfilter %}
</article>
</section>
<section class="panel panel-default">
<header class="panel-heading">
<b>Comment nous aider ?</b>
</header>
<article class="panel-body">
{% filter markdown -%}
{% include "text/explications.md" %}
{% include "text/howto_help.md" %}
{% endfilter %}
</article>
</section>
......@@ -14,7 +28,7 @@
<div class="col-md-6">
<section class="panel panel-default">
<header class="panel-heading">
<b>Avancement du projet</b>
<b>Avancement</b>
</header>
<article class="panel-body" id="pie-container">
<div>
......@@ -31,14 +45,6 @@
</article>
</section>
<section class="panel panel-default">
<article class="panel-body">
{% filter markdown -%}
{% include "text/nousaider.md" %}
{% endfilter %}
</article>
</section>
<section class="panel panel-default">
<header class="panel-heading">
<b>Un parlementaire au hasard...</b>
......
......@@ -23,7 +23,7 @@
{% endblock %}
{% block content %}
<div class="col-md-12">
<div class="col-md-6">
<section class="panel panel-default">
<article class="panel-body parl-card">
<img class="parl-photo" src="{{ parlementaire.url_photo }}/120" align="left">
......@@ -33,16 +33,40 @@
</div>
</article>
</section>
{% if parlementaire.etape.ordre == 10 %}
{% if session.user %}
<section class="panel panel-default">
<article class="panel-body">
<a class="btn btn-primary btn-lg btn-block" href="#">Je prends en charge l'envoi !</button>
<a class="btn btn-default btn-lg btn-block" href="{{ url_for('demande_pdf', id=parlementaire.id, mode='download') }}">Télécharger le courrier au format PDF</a>
</article>
</section>
{% endif %}
{% endif %}
</div>
{% if parlementaire.etape.ordre == 10 %}
{% if session.user %}
<div class="col-md-6">
<section class="panel panel-default">
<header class="panel-heading">
<b>Quelle est la marche à suivre ?</b>
</header>
<article class="panel-body">
{% filter markdown -%}
{% include "text/howto_envoi.md" %}
{% endfilter %}
</article>
</section>
</div>
<div class="col-md-12" id="letter-container">
<iframe name="demande" id="demande" src="{{ url_for('demande_pdf', id=parlementaire.id) }}">
<iframe name="demande" id="demande" src="{{ url_for('demande_pdf', id=parlementaire.id, mode='show') }}">
</iframe>
</div>
{% else %}
<div class="col-md-12">
<div class="col-md-6">
<div class="alert alert-warning" role="alert">
Pour envoyer une demande et assurer son suivi, il faut au préalable <a href="#" id="identify-link">vous identifier</a>.
</div>
......
C'est assez simple :
1. Cliquez sur le bouton « Je prends en charge l'envoi » ci-contre.
2. **Imprimez le courrier** ci-dessous ou **téléchargez-le au format PDF**
3. **Envoyez-le en recommandé** avec avis de réception à l'adresse du parlementaire. Indiquez bien l'adresse de Regards Citoyens comme expéditeur.
4. Vous **recevrez un e-mail** comportant un lien permettant de nous envoyer une photo ou un scan de la **preuve de dépôt**, faites-le dès que possible !
C'est tout, nous nous chargeons du reste.
<div class="alert alert-warning">
<b>Attention</b>, dès que vous cliquez sur le bouton de prise en charge, vous empêchez tout autre utilisateur de le faire. N'oubliez pas de nous envoyer rapidement la preuve de dépôt. Sans nouvelles de votre part après quelques temps, nous considérerons que vous avez renoncé et rendrons à nouveau disponible l'envoi pour d'autres utilisateurs.
</div>
### Comment nous aider ?
La première étape consiste à envoyer une demande de document à chaque parlementaire concerné par lettre recommandée avec avis de réception. Malheureusement, notre petite équipe bénévole ne peut pas le faire pour tous les députés. **Mais vous pouvez nous aider à le faire !**
C'est simple : choisissez un parlementaire pour lequel la demande de document n'a pas encore été envoyée depuis la [liste des parlementaires](/parlementaires), cliquez sur le bouton « *Envoyer la demande* » et laissez-vous guider. Si vous ne savez pas lequel choisir, un parlementaire au hasard est affiché ci-dessous.
C'est simple : choisissez un parlementaire pour lequel la demande de document n'a pas encore été envoyée depuis la [liste des parlementaires](/parlementaires), cliquez sur le bouton « *Envoyer la demande* » et laissez-vous guider. Si vous ne savez pas lequel choisir, un parlementaire au hasard est affiché ci-contre.
Notez bien que les parlementaires sont des élus de la Nation, vous êtes donc tout à fait en droit d'envoyer une demande à un élu d'une circonscription autre que celle de votre domicile.
### Qu'est-ce que l'IRFM ?
#### Qu'est-ce que l'IRFM ?
L'Indemnité Représentative de Frais de Mandat est une indemnité versée chaque mois à tous les parlementaires. Elle a pour objectif de couvrir les frais de mandat et son montant forfaitaire (5 770 € pour chaque Député et 6 240 € pour chaque Sénateur) évite aux parlementaire de devoir établir des notes de frais.
### Quel est le problème avec l'IRFM ?
#### Quel est le problème avec l'IRFM ?
Sans aucune transparence sur l'utilisation de cet argent public, les parlementaires sont libres de son utilisation, malgré les restrictions formulées par les règlements du Sénat et de l'Assemblée nationale. Par le passé, certains l'ont par exemple utilisée pour rembourser l'emprunt utilisé pour acquérir les locaux de leur permanence, locaux ensuite revendus sans que l'argent ne revienne à l'État.
De plus, les parlementaires sont sensés restituer les sommes non utilisées en fin de mandat.
### Plus de transparence ?
#### Plus de transparence ?
Nous souhaitons demander à chaque parlementaire de nous fournir les éléments permettant aux citoyens de contrôler l'utilisation de leur indemnité : les relevés bancaires (sur les 6 derniers mois) ainsi que la dernière attestation d'utilisation de l'IRFM qu'il doit transmettre chaque année au Bureau de l'Assemblée nationale.
### Et le secret bancaire ? Et la vie privée ?
#### Et le secret bancaire ? Et la vie privée ?
L'IRFM est versée sur un compte bancaire dédié. Il n'y a donc aucun risque d'intrusion dans la vie privée des parlementaires.
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