Commit 5d9c6bb4 authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout import adresses depuis l'AN

parent ce72886e
......@@ -24,6 +24,7 @@ $ cd /path/to/irfm
$ workon irfm
$ irfm import_etapes
$ irfm import_nd
$ irfm import_adresses
```
## Mise à jour
......
......@@ -3,8 +3,9 @@
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from .importers.nosdeputes import NosDeputesImporter
from .importers.adresses import AdressesImporter
from .importers.etapes import EtapesImporter
from .importers.nosdeputes import NosDeputesImporter
from .irfm import app
from .models import db
......@@ -34,3 +35,9 @@ def import_nd():
"""Importe les députés depuis NosDéputés.fr"""
app.config.update(SQLALCHEMY_ECHO=False)
NosDeputesImporter(app).run()
@manager.command
def import_adresses():
"""Importe adresses postales des parlementaires"""
app.config.update(SQLALCHEMY_ECHO=False)
AdressesImporter(app).run()
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requests
from .base import BaseImporter
from ..models import db, Parlementaire
class AdressesImporter(BaseImporter):
def import_adresse(self, parl):
if not 'assemblee-nationale' in parl.url_off:
return
soup = BeautifulSoup(requests.get(parl.url_off).text, 'html5lib')
adrs = [a for a in soup.select('dl.adr')
if 'Assemblée nationale' in a.text
or 'En circonscription' in a.text]
if not len(adrs):
return
adr = adrs[-1]
try:
lines = [e.text.strip() for e in adr.select('.street-address')] + [
'%s %s' % (adr.select('.postal-code')[0].text.strip(),
adr.select('.locality')[0].text.strip())
]
except Exception as e:
self.error('Erreur sur %s: %s' % (parl.url_off, e))
return
parl.adresse = '\n'.join(lines);
db.session.commit()
def run(self):
self.info('Début import adresses')
qs = Parlementaire.query.filter_by(adresse=None).all()
self.info('%s parlementaires sans adresse' % len(qs))
for parl in qs:
self.import_adresse(parl)
self.info('Import adresses terminé')
......@@ -49,7 +49,6 @@ class EtapesImporter(BaseImporter):
updated += 1
db.session.commit()
db.session.flush()
self.info('Import étapes terminé: %s créées, %s mises à jour'
% (created, updated))
......@@ -130,7 +130,6 @@ class NosDeputesImporter(BaseImporter):
updated += 1
db.session.commit()
db.session.flush()
self.info('Import députés terminé: %s créés, %s mis à jour'
% (created, updated))
......@@ -188,7 +187,6 @@ class NosDeputesImporter(BaseImporter):
updated += 1
db.session.commit()
db.session.flush()
self.info('Import groupes terminé: %s créés, %s mis à jour'
% (created, updated))
......
......@@ -56,7 +56,6 @@ th.col-right {
background-image: url(hemicycle.jpg);
background-size: cover;
background-position: center;
}
.jumbotron h1 {
......
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