diff --git a/wetter/utils.py b/wetter/utils.py new file mode 100644 index 0000000..e59ea25 --- /dev/null +++ b/wetter/utils.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 + +from datetime import datetime + +def fromisoformat(str): + return datetime.strptime(str, '%Y-%m-%d').date() diff --git a/wetter/views.py b/wetter/views.py index 1435a1d..4f33632 100644 --- a/wetter/views.py +++ b/wetter/views.py @@ -2,6 +2,7 @@ from wetter import app from wetter.models import Stations, Climate +from wetter.utils import fromisoformat from flask import request, make_response, render_template from datetime import datetime @@ -33,38 +34,38 @@ def export(dwd_id): @app.route('/station//export/target/') def export_target(dwd_id): - fr = request.args.get('from') - to = request.args.get('to') + fr = fromisoformat(request.args.get('from')) + to = fromisoformat(request.args.get('to')) station = Stations.query.filter_by(dwd_id=dwd_id).first_or_404() - return render_template('target.html', station=station, fr=fr, to=to) + return render_template('target.html', station=station, fr=fr.isoformat(), to=to.isoformat()) @app.route('/station//export/target/ce.csv/') def export_target_ce_csv_render(dwd_id): - fr = request.args.get('from') - to = request.args.get('to') + fr = fromisoformat(request.args.get('from')) + to = fromisoformat(request.args.get('to')) station = Stations.query.filter_by(dwd_id=dwd_id).first_or_404() - climate = Climate.query.filter_by(station=station.id).filter(Climate.date >= fr, Climate.date <= to).order_by(Climate.date.asc()) + climate = Climate.query.filter_by(station=station.id).filter(Climate.date >= fr.isoformat(), Climate.date <= to.isoformat()).order_by(Climate.date.asc()) r = make_response(render_template('export/ce.csv', climate=climate)) r.headers['Content-Type'] = 'text/csv; charset=utf-8' - r.headers['Content-Disposition'] = 'attachment; filename="wetter_' +station.dwd_id +'_' + fr + '_' + to +'_ce.csv' + r.headers['Content-Disposition'] = 'attachment; filename="wetter_' +station.dwd_id +'_' + fr.isoformat() + '_' + to.isoformat() +'_ce.csv' return r @app.route('/station//export/target/dwd.txt/') def export_target_dwd_txt_render(dwd_id): - fr = request.args.get('from') - to = request.args.get('to') + fr = fromisoformat(request.args.get('from')) + to = fromisoformat(request.args.get('to')) station = Stations.query.filter_by(dwd_id=dwd_id).first_or_404() - climate = Climate.query.filter_by(station=station.id).filter(Climate.date >= fr, Climate.date <= to).order_by(Climate.date.asc()) + climate = Climate.query.filter_by(station=station.id).filter(Climate.date >= fr.isoformat(), Climate.date <= to.isoformat()).order_by(Climate.date.asc()) r = make_response(render_template('export/dwd.txt', station=station, climate=climate)) r.headers['Content-Type'] = 'text/txt; charset=utf-8' - r.headers['Content-Disposition'] = 'attachment; filename="wetter_' + station.dwd_id +'_' + fr + '_' + to +'_dwd.txt' + r.headers['Content-Disposition'] = 'attachment; filename="wetter_' + station.dwd_id +'_' + fr.isoformat() + '_' + to.isoformat() +'_dwd.txt' return r