Skip to content
Snippets Groups Projects
Commit b0fda605 authored by Martin Mareš's avatar Martin Mareš
Browse files

Export seznamu škol

parent 37f39264
No related branches found
No related tags found
No related merge requests found
from flask import render_template, g, redirect, url_for
from flask import render_template, g, redirect, url_for, request
from sqlalchemy.orm import aliased
import mo.db as db
from mo.web.table import Table, Column
from mo.web import app
@app.route('/org/')
def org_index():
return render_template('org_index.html')
school_export_columns = (
Column(key='code', name='kod'),
Column(key='name', name='nazev'),
Column(key='town_code', name='kod_obce'),
Column(key='town', name='obec'),
Column(key='red_izo', name='red_izo'),
Column(key='ico', name='ico'),
Column(key='official_name', name='ofic_nazev'),
Column(key='address', name='adresa'),
Column(key='is_zs', name='typ_zs'),
Column(key='is_ss', name='typ_ss'),
)
@app.route('/org/export/skoly')
def org_export_skoly():
sess = db.get_session()
format = request.args.get('format', 'csv')
def gen_rows():
town = aliased(db.Place)
for p, s, t in (
sess.query(db.Place, db.School, town)
.filter(db.Place.type == db.PlaceType.school)
.filter(db.Place.place_id == db.School.place_id)
.filter(db.Place.parent == town.place_id)
.yield_per(100)):
yield {
'code': p.get_code(),
'name': p.name,
'red_izo': s.red_izo,
'ico': s.ico,
'official_name': s.official_name,
'address': s.address,
'is_zs': int(s.is_zs),
'is_ss': int(s.is_ss),
'town_code': t.get_code(),
'town': t.name,
}
table = Table(school_export_columns, gen_rows(), 'skoly')
return table.send_as(format, streaming=True)
......@@ -4,6 +4,8 @@
{% if g.user.is_org or g.user.is_admin %}
<p><a href='{{ url_for('org_place_root') }}'>Hierarchie míst</a>
<p>Export všech škol: <a href='{{ url_for('org_export_skoly', format='csv') }}'>CSV</a>,
<a href='{{ url_for('org_export_skoly', format='tsv') }}'>TSV</a>
{% endif %}
<h3>Práva</h3>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment