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