Sat, 10 Jun 2017 16:48:15 +0300
Siirretty käännöstiedostot uuteen tr/ hakemistoon
0 | 1 | #!/usr/bin/env python3 |
3 | 2 | from flask import Flask, render_template, abort |
0 | 3 | from datetime import datetime, date, time, timedelta |
4 | 4 | from misc import * |
0 | 5 | import locale |
7
f3791dccfd03
Käännetty tiedostojen nimet englanniksi
Teemu Piippo <teemu@hecknology.net>
parents:
5
diff
changeset
|
6 | from busroute import supista_reitti |
5 | 7 | from configparser import ConfigParser |
9
f95892def64e
Siirretty käännöstiedostot uuteen tr/ hakemistoon
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
8 | from os import path |
0 | 9 | |
10 | app = Flask(__name__) | |
11 | locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) | |
12 | ||
5 | 13 | kielet = ['fi', 'sv', 'en', 'ru'] |
14 | kieli_ini = {} | |
15 | for kieli in kielet: | |
16 | ini = ConfigParser() | |
9
f95892def64e
Siirretty käännöstiedostot uuteen tr/ hakemistoon
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
17 | ini.read(path.join('tr', kieli + '.ini')) |
5 | 18 | kieli_ini[kieli] = ini |
19 | ||
20 | def käännä(nimi, osio): | |
21 | kieli = sivun_kieli() | |
22 | try: | |
23 | return kieli_ini[kieli][osio][nimi] | |
24 | except KeyError: | |
25 | return nimi | |
26 | ||
27 | def sivun_kieli(): | |
28 | from flask import request | |
29 | if request.args.get('sv') is not None: | |
30 | return 'sv' | |
31 | elif request.args.get('en') is not None: | |
32 | return 'en' | |
33 | elif request.args.get('ru') is not None: | |
34 | return 'ru' | |
35 | elif request.args.get('kääntämätön') is None: | |
36 | return 'fi' | |
37 | else: | |
38 | return None | |
39 | ||
0 | 40 | @app.route('/pysäkki/<tunniste>') |
41 | def pysäkkiaikataulu(tunniste): | |
7
f3791dccfd03
Käännetty tiedostojen nimet englanniksi
Teemu Piippo <teemu@hecknology.net>
parents:
5
diff
changeset
|
42 | from buses import pysäkit |
5 | 43 | from math import ceil |
0 | 44 | aikataulu = [] |
3 | 45 | try: |
46 | pysäkki = pysäkit[tunniste] | |
47 | except KeyError: | |
48 | abort(404) | |
0 | 49 | for (aika, pysähdys) in pysäkki.aikataulu(100): |
5 | 50 | kyltti = supista_reitti(pysähdys.ajo.suppea_reitti(pysähdys)) |
51 | kyltti = [käännä(paikka, 'paikat') for paikka in kyltti] | |
52 | kylttiesitys = ' - '.join(kyltti) | |
53 | if len(kylttiesitys) > 25: | |
54 | k = ceil(len(kyltti) / 2) | |
55 | kylttiesitys = ' - '.join(kyltti[:k]) + '\n' + ' - '.join(kyltti[k:]) | |
0 | 56 | aikataulu.append({ |
57 | 'aika': muotoile_aika(aika), | |
58 | 'linja': pysähdys.ajo.linja.viite, | |
5 | 59 | 'kyltti': kylttiesitys, |
0 | 60 | 'ajovuoro': pysähdys.ajo.nimi, |
4 | 61 | 'yö': yö(aika), |
0 | 62 | }) |
5 | 63 | return render_template( |
64 | 'pysäkki.html', | |
65 | aikataulu = aikataulu, | |
66 | viite = tunniste, | |
67 | nimi = käännä(pysäkki.nimi, 'pysäkit'), | |
68 | linkki_karttaan = pysäkki.linkki_karttaan, | |
69 | alue = pysäkki.alue, | |
70 | sijainti = pysäkki.sijainti, | |
71 | ) | |
0 | 72 | |
4 | 73 | @app.route('/ajovuoro/<numero>') |
0 | 74 | def ajoreitti(numero): |
2 | 75 | from flask import request |
7
f3791dccfd03
Käännetty tiedostojen nimet englanniksi
Teemu Piippo <teemu@hecknology.net>
parents:
5
diff
changeset
|
76 | from buses import ajot |
3 | 77 | try: |
78 | ajovuoro = ajot[numero] | |
79 | except KeyError: | |
80 | abort(404) | |
2 | 81 | suppea = request.args.get('suppea') is not None |
0 | 82 | reitti = [] |
2 | 83 | suppea_reitti = [] |
84 | käydyt_alueet = set() | |
0 | 85 | for pysähdys in ajovuoro.reitti: |
4 | 86 | aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika |
87 | muotoiltu_aika = muotoile_aika(aika) | |
0 | 88 | reitti.append({ |
2 | 89 | 'aika': muotoiltu_aika, |
0 | 90 | 'tunniste': pysähdys.pysäkki.tunniste, |
5 | 91 | 'alue': käännä(pysähdys.pysäkki.alue or '', 'paikat'), |
92 | 'nimi': käännä(pysähdys.pysäkki.nimi, 'pysäkit'), | |
0 | 93 | }) |
2 | 94 | alue = pysähdys.pysäkki.alue |
95 | if alue: | |
96 | if alue not in käydyt_alueet: | |
97 | suppea_reitti.append({ | |
98 | 'aika': muotoiltu_aika, | |
5 | 99 | 'alue': alue, |
2 | 100 | }) |
101 | käydyt_alueet.add(alue) | |
5 | 102 | kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True) |
2 | 103 | sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' |
104 | return render_template(sivu, reitti = reitti, suppea_reitti = suppea_reitti, | |
5 | 105 | numero = numero, linja = ajovuoro.linja.viite, |
106 | selite = ' - '.join(käännä(paikka, 'paikat') for paikka in kyltti), | |
107 | yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), | |
108 | ) | |
0 | 109 | |
110 | if __name__ == '__main__': | |
2 | 111 | from argparse import ArgumentParser |
112 | parser = ArgumentParser() | |
113 | parser.add_argument('-p', '--port', type = int, default = 5000) | |
114 | args = parser.parse_args() | |
3 | 115 | app.run(debug = True, port = args.port) |