--- a/palvelu.py Sat Jun 10 16:36:36 2017 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -#!/usr/bin/env python3 -from flask import Flask, render_template, abort -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': kylttiesitys, - 'ajovuoro': pysähdys.ajo.nimi, - 'yö': yö(aika), - }) - 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): - from flask import request - from bussit import ajot - try: - ajovuoro = ajot[numero] - except KeyError: - abort(404) - suppea = request.args.get('suppea') is not None - reitti = [] - suppea_reitti = [] - käydyt_alueet = set() - for pysähdys in ajovuoro.reitti: - aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika - muotoiltu_aika = muotoile_aika(aika) - reitti.append({ - 'aika': muotoiltu_aika, - 'tunniste': pysähdys.pysäkki.tunniste, - '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, - }) - 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 = ' - '.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 - parser = ArgumentParser() - parser.add_argument('-p', '--port', type = int, default = 5000) - args = parser.parse_args() - app.run(debug = True, port = args.port)