Commit 8bc0dc04 authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout génération courrier PDF

parent 16c563af
......@@ -5,10 +5,11 @@ from .filters import setup as setup_filters
from .home import setup_routes as setup_home
from .parlementaires import setup_routes as setup_parl
from .pdf import setup_routes as setup_pdf
def setup_routes(app):
setup_cp(app)
setup_filters(app)
setup_home(app)
setup_parl(app)
setup_pdf(app)
# -*- coding: utf-8 -*-
import re
from jinja2 import evalcontextfilter, Markup, escape
def setup(app):
@app.template_filter('titre_parlementaire')
......@@ -24,3 +29,15 @@ def setup(app):
'style="background-color: %s;">%s</span>' % (
groupe.nom, groupe.couleur, groupe.sigle
)
_paragraph_re = re.compile(r'(?:\r\n|\r|\n){2,}')
@app.template_filter('nl2br')
@evalcontextfilter
def nl2br(eval_ctx, value):
result = u'\n\n'.join(u'%s' % p.replace('\n', '<br>\n') \
for p in _paragraph_re.split(escape(value)))
if eval_ctx.autoescape:
result = Markup(result)
return result
......@@ -35,15 +35,3 @@ def setup_routes(app):
'parlementaire.html.j2',
parlementaire=parl
)
@app.route('/parlementaires/<id>/demande', endpoint='demande')
def demande(id):
parl = Parlementaire.query.filter_by(id=id).first()
if not parl:
abort(404)
return render_template(
'demande.html.j2',
parlementaire=parl
)
# -*- coding: utf-8 -*-
from flask import abort, make_response, render_template
from xhtml2pdf import pisa
from io import BytesIO
from ..models import Parlementaire
def setup_routes(app):
@app.route('/demande/<id>', endpoint='demande_pdf')
def demande_pdf(id):
parl = Parlementaire.query.filter_by(id=id).first()
if not parl:
abort(404)
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'
return response
<pre>
Regards Citoyens
chez Julien Rabier
Bâtiment A2
17 rue Corneille
31100 Toulouse
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
à
<style>
@page {
size: A4;
margin-left: 2cm;
margin-right: 2cm;
margin-top: 2cm;
margin-bottom: 2cm;
}
{{ parlementaire|titre_parlementaire}} {{ parlementaire.nom_complet }}
{{ parlementaire.adresse }}
body {
font-family: serif;
font-size: 10pt;
}
{{ parlementaire|titre_parlementaire }},
.logo {
height: 1.8cm;
}
Veuillez nous envoyer vos relevés de compte.
.headers {
padding-top: 1em;
}
Bien cordialement,
.spacer {
padding-top: 2em;
}
Regards Citoyens
</pre>
\ No newline at end of file
.date {
text-align: right;
}
.content {
text-align: justify;
}
.content p,
.signature {
text-indent: 2em;
}
</style>
</head>
<body>
<table width="100%" border="0">
<tr>
<td width="10%" valign="top">
<img class="logo" src="irfm/static/rc-big.png">
</td>
<td width="90%">
<div class="address">
Regards Citoyens<br>
Chez Julien Rabier &ndash; Bâtiment A2<br>
17 rue Corneille<br>
31100 Toulouse
</div>
</td>
</tr>
</table>
<table width="100%" border="0">
<tr>
<td width="50%"></td>
<td width="50%">
<div class="address">
<strong>
{{ parlementaire|titre_parlementaire}} {{ parlementaire.nom_complet }}<br>
{{ parlementaire.adresse|nl2br }}
</strong>
</div>
</td>
</tr>
</table>
<div class="headers">
<i>Par lettre recommandée avec avis de réception</i><br>
Objet : Demande d'accès aux dépenses de vos frais de mandat.
</div>
<div class="spacer">&nbsp;</div>
<div class="date">
Toulouse, le 15 mai 2017.
</div>
<div class="spacer">&nbsp;</div>
<div class="content">
<p>
{{ parlementaire|titre_parlementaire }},
</p>
<p>
Afin de faire face aux dépenses liées à votre activité de parlementaire, vous avez bénéficié d'une indemnité représentative de frais de mandat (IRFM). Cet argent public vous a été versé sur un compte bancaire dédié, l'usage de cet argent public étant encadré légalement &ndash; notamment par l'article 32bis du règlement de l'Assemblée nationale.
</p>
<p>
Comme l'autorise le livre III du code des relations entre le public et l'administration, nous souhaiterions avoir accès aux relevés bancaires de ce compte dédié à l'IRFM entre novembre 2016 et mai 2017, ainsi que la déclaration que vous avez faite parvenir au Bureau de l'Assemblée avant le 31 janvier 2017, comme le prévoit l'alinéa 3 de l'article 32 bis du règlement de l'Assemblée nationale.
</p>
<p>
Dans son avis n° 20061451-JCG du 30 mars 2006, la Commission d'Accès aux Documents Administratifs (CADA) considère en effet que les relevés bancaires peuvent être considérés comme des documents administratifs. Dans la mesure où ils constituent des pièces justificatives de la comptabilité des missions qui vous ont été confiées par le peuple français et qu'ils n'ont été ni produits, ni reçus par une assemblée parlementaire, nous sommes convaincus que vous ne pourrez qu'accéder à notre demande de communication.
</p>
<p>
Comme le reconnaissent nos droits constitutionnels et européens notamment via la déclaration des droits de l'Homme et du citoyen ainsi que la déclaration universelle des droits de l'Homme, tout citoyen à le droit d'accéder à l'information publique et donc au document justifiant des dépenses publiques. Nous souhaiterions donc que vous nous communiquiez les relevés bancaires de votre compte dédié à l'IRFM entre novembre 2016 et mai 2017 ainsi que l'attestation de bon usage de votre IRFM que vous avez faite parvenir au Bureau de l'Assemblée avant le 31 janvier 2017.
</p>
<p>
Sachant votre dévouement pour le bien commun et dans l'attente d'une réponse positive de votre part, nous vous prions d'agréer, {{ parlementaire|titre_parlementaire }}, l'expression de nos sincères salutations.
</p>
</div>
<div class="spacer">&nbsp;</div>
<div class="signature">
Regards Citoyens
</div>
</body>
</html>
......@@ -36,27 +36,10 @@
</div>
{% if parlementaire.etape.ordre == 10 %}
<div class="col-md-12" id="letter-container">
<button type="button" class="btn btn-primary btn-lg active" id="#print-button">Imprimer la demande</button>
<br><br>
<iframe name="demande" id="demande" src="{{ url_for('demande', id=parlementaire.id) }}">
<iframe name="demande" id="demande" src="{{ url_for('demande_pdf', id=parlementaire.id) }}">
</iframe>
</div>
{% else %}
WIIIIIII :)
...
{% endif %}
{% endblock %}
{% block scripts %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script>
$(document).ready(function () {
(function ($) {
$('#print-button').click(function() {
frames['demande'].print();
});
})(jQuery);
});
</script>
{% endblock %}
......@@ -6,5 +6,7 @@ flask-migrate==2.0.3
flask-script==2.0.5
flask-sqlalchemy==2.2
html5lib==0.999999999
nose==1.3.7
psycopg2==2.7.1
requests==2.13.0
xhtml2pdf==0.2b1
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