--- a/palvelu.py Fri May 19 21:15:12 2017 +0300 +++ b/palvelu.py Thu May 25 16:41:21 2017 +0300 @@ -3,27 +3,71 @@ from datetime import datetime, date, time, timedelta from misc import * import locale +from bussireitti import supista_reitti +from configparser import ConfigParser app = Flask(__name__) locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) +kielet = ['fi', 'sv', 'en', 'ru'] +kieli_ini = {} +for kieli in kielet: + ini = ConfigParser() + ini.read(kieli + '.ini') + kieli_ini[kieli] = ini + +def käännä(nimi, osio): + kieli = sivun_kieli() + try: + return kieli_ini[kieli][osio][nimi] + except KeyError: + return nimi + +def sivun_kieli(): + from flask import request + if request.args.get('sv') is not None: + return 'sv' + elif request.args.get('en') is not None: + return 'en' + elif request.args.get('ru') is not None: + return 'ru' + elif request.args.get('kääntämätön') is None: + return 'fi' + else: + return None + @app.route('/pysäkki/<tunniste>') def pysäkkiaikataulu(tunniste): from bussit import pysäkit + from math import ceil aikataulu = [] try: pysäkki = pysäkit[tunniste] except KeyError: abort(404) for (aika, pysähdys) in pysäkki.aikataulu(100): + kyltti = supista_reitti(pysähdys.ajo.suppea_reitti(pysähdys)) + kyltti = [käännä(paikka, 'paikat') for paikka in kyltti] + kylttiesitys = ' - '.join(kyltti) + if len(kylttiesitys) > 25: + k = ceil(len(kyltti) / 2) + kylttiesitys = ' - '.join(kyltti[:k]) + '\n' + ' - '.join(kyltti[k:]) aikataulu.append({ 'aika': muotoile_aika(aika), 'linja': pysähdys.ajo.linja.viite, - 'kyltti': pysähdys.ajo.kyltti, + 'kyltti': kylttiesitys, 'ajovuoro': pysähdys.ajo.nimi, 'yö': yö(aika), }) - return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi) + return render_template( + 'pysäkki.html', + aikataulu = aikataulu, + viite = tunniste, + nimi = käännä(pysäkki.nimi, 'pysäkit'), + linkki_karttaan = pysäkki.linkki_karttaan, + alue = pysäkki.alue, + sijainti = pysäkki.sijainti, + ) @app.route('/ajovuoro/<numero>') def ajoreitti(numero): @@ -43,21 +87,24 @@ reitti.append({ 'aika': muotoiltu_aika, 'tunniste': pysähdys.pysäkki.tunniste, - 'alue': pysähdys.pysäkki.alue, - 'nimi': pysähdys.pysäkki.nimi, + 'alue': käännä(pysähdys.pysäkki.alue or '', 'paikat'), + 'nimi': käännä(pysähdys.pysäkki.nimi, 'pysäkit'), }) alue = pysähdys.pysäkki.alue if alue: if alue not in käydyt_alueet: suppea_reitti.append({ 'aika': muotoiltu_aika, - 'alue': alue + 'alue': alue, }) käydyt_alueet.add(alue) + kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True) sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' return render_template(sivu, reitti = reitti, suppea_reitti = suppea_reitti, - numero = numero, linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti, - yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika)) + numero = numero, linja = ajovuoro.linja.viite, + selite = ' - '.join(käännä(paikka, 'paikat') for paikka in kyltti), + yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), + ) if __name__ == '__main__': from argparse import ArgumentParser