Commit 16c563af authored by Nicolas Joyard's avatar Nicolas Joyard

Refacto routes

parent 9cbf6aeb
# -*- coding: utf-8 -*-
from .context_processors import setup as setup_cp
from .filters import setup as setup_filters
from .home import setup_routes as setup_home
from .parlementaires import setup_routes as setup_parl
def setup_routes(app):
setup_cp(app)
setup_filters(app)
setup_home(app)
setup_parl(app)
# -*- coding: utf-8 -*-
from flask import url_for
def setup(app):
@app.context_processor
def inject_piwik():
piwik = None
if app.config['PIWIK_HOST']:
piwik = {
'host': app.config['PIWIK_HOST'],
'id': app.config['PIWIK_ID']
}
return {'piwik':piwik}
@app.context_processor
def inject_menu():
return {
'menu': [
{
'url': url_for('home'),
'label': 'Accueil',
'endpoint': 'home',
},
{
'url': url_for('parlementaires'),
'label': 'Liste des parlementaires',
'endpoint': 'parlementaires',
},
]
}
# -*- coding: utf-8 -*-
def setup(app):
@app.template_filter('titre_parlementaire')
def titre_parlementaire(parl):
if parl.sexe == 'F':
return 'Madame la %s' % ('Sénatrice' if parl.chambre == 'SEN'
else 'Députée')
else:
return 'Monsieur le %s' % ('Sénateur' if parl.chambre == 'SEN'
else 'Député')
@app.template_filter('fonc_parlementaire')
def fonc_parlementaire(parl):
if parl.sexe == 'F':
return 'Sénatrice' if parl.chambre == 'SEN' else 'Députée'
else:
return 'Sénateur' if parl.chambre == 'SEN' else 'Député'
@app.template_filter('label_groupe')
def label_groupe(groupe):
return '<span title="%s" class="label" ' \
'style="background-color: %s;">%s</span>' % (
groupe.nom, groupe.couleur, groupe.sigle
)
# -*- coding: utf-8 -*-
from flask import render_template
from sqlalchemy.orm import joinedload
from sqlalchemy.sql.expression import func
from ..models import db, Etape, Parlementaire
def setup_routes(app):
@app.route('/', endpoint='home')
def home():
pqs = Parlementaire.query.options(joinedload(Parlementaire.etape)) \
.filter(Etape.label == 'À envoyer') \
.order_by(func.random())
eqs = db.session.query(Etape) \
.outerjoin(Etape.parlementaires) \
.add_columns(func.count(Parlementaire.id)
.label('nb')) \
.filter(Etape.ordre > 0) \
.group_by(Etape) \
.order_by(Etape.ordre) \
.all()
return render_template(
'index.html.j2',
parlementaire=pqs.first(),
etapes=[e.Etape for e in eqs],
etapes_data={
'labels': [e.Etape.label for e in eqs],
'datasets': [{
'data': [e.nb for e in eqs],
'backgroundColor': [e.Etape.couleur for e in eqs]
}]
}
)
# -*- coding: utf-8 -*-
from flask import abort, render_template, url_for
from flask import abort, render_template
from sqlalchemy.orm import joinedload, contains_eager
from sqlalchemy.sql.expression import func
from .models import db, Etape, Parlementaire
from ..models import Etape, Parlementaire
def setup_routes(app):
@app.context_processor
def inject_piwik():
piwik = None
if app.config['PIWIK_HOST']:
piwik = {
'host': app.config['PIWIK_HOST'],
'id': app.config['PIWIK_ID']
}
return {'piwik':piwik}
@app.context_processor
def inject_menu():
return {
'menu': [
{
'url': url_for('home'),
'label': 'Accueil',
'endpoint': 'home',
},
{
'url': url_for('parlementaires'),
'label': 'Liste des parlementaires',
'endpoint': 'parlementaires',
},
]
}
@app.template_filter('titre_parlementaire')
def titre_parlementaire(parl):
if parl.sexe == 'F':
return 'Madame la %s' % ('Sénatrice' if parl.chambre == 'SEN'
else 'Députée')
else:
return 'Monsieur le %s' % ('Sénateur' if parl.chambre == 'SEN'
else 'Député')
@app.template_filter('fonc_parlementaire')
def fonc_parlementaire(parl):
if parl.sexe == 'F':
return 'Sénatrice' if parl.chambre == 'SEN' else 'Députée'
else:
return 'Sénateur' if parl.chambre == 'SEN' else 'Député'
@app.template_filter('label_groupe')
def label_groupe(groupe):
return '<span title="%s" class="label" ' \
'style="background-color: %s;">%s</span>' % (
groupe.nom, groupe.couleur, groupe.sigle
)
@app.route('/', endpoint='home')
def home():
pqs = Parlementaire.query.options(joinedload(Parlementaire.etape)) \
.filter(Etape.label == 'À envoyer') \
.order_by(func.random())
eqs = db.session.query(Etape) \
.outerjoin(Etape.parlementaires) \
.add_columns(func.count(Parlementaire.id)
.label('nb')) \
.filter(Etape.ordre > 0) \
.group_by(Etape) \
.order_by(Etape.ordre) \
.all()
return render_template(
'index.html.j2',
parlementaire=pqs.first(),
etapes=[e.Etape for e in eqs],
etapes_data={
'labels': [e.Etape.label for e in eqs],
'datasets': [{
'data': [e.nb for e in eqs],
'backgroundColor': [e.Etape.couleur for e in eqs]
}]
}
)
@app.route('/parlementaires', endpoint='parlementaires')
def parlementaires():
qs = Parlementaire.query.join(Parlementaire.etape) \
......
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