Fri, 19 May 2017 21:15:12 +0300
Äää
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 |
6 | ||
7 | app = Flask(__name__) | |
8 | locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) | |
9 | ||
10 | @app.route('/pysäkki/<tunniste>') | |
11 | def pysäkkiaikataulu(tunniste): | |
12 | from bussit import pysäkit | |
13 | aikataulu = [] | |
3 | 14 | try: |
15 | pysäkki = pysäkit[tunniste] | |
16 | except KeyError: | |
17 | abort(404) | |
0 | 18 | for (aika, pysähdys) in pysäkki.aikataulu(100): |
19 | aikataulu.append({ | |
20 | 'aika': muotoile_aika(aika), | |
21 | 'linja': pysähdys.ajo.linja.viite, | |
22 | 'kyltti': pysähdys.ajo.kyltti, | |
23 | 'ajovuoro': pysähdys.ajo.nimi, | |
4 | 24 | 'yö': yö(aika), |
0 | 25 | }) |
26 | return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi) | |
27 | ||
4 | 28 | @app.route('/ajovuoro/<numero>') |
0 | 29 | def ajoreitti(numero): |
2 | 30 | from flask import request |
0 | 31 | from bussit import ajot |
3 | 32 | try: |
33 | ajovuoro = ajot[numero] | |
34 | except KeyError: | |
35 | abort(404) | |
2 | 36 | suppea = request.args.get('suppea') is not None |
0 | 37 | reitti = [] |
2 | 38 | suppea_reitti = [] |
39 | käydyt_alueet = set() | |
0 | 40 | for pysähdys in ajovuoro.reitti: |
4 | 41 | aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika |
42 | muotoiltu_aika = muotoile_aika(aika) | |
0 | 43 | reitti.append({ |
2 | 44 | 'aika': muotoiltu_aika, |
0 | 45 | 'tunniste': pysähdys.pysäkki.tunniste, |
2 | 46 | 'alue': pysähdys.pysäkki.alue, |
0 | 47 | 'nimi': pysähdys.pysäkki.nimi, |
48 | }) | |
2 | 49 | alue = pysähdys.pysäkki.alue |
50 | if alue: | |
51 | if alue not in käydyt_alueet: | |
52 | suppea_reitti.append({ | |
53 | 'aika': muotoiltu_aika, | |
54 | 'alue': alue | |
55 | }) | |
56 | käydyt_alueet.add(alue) | |
57 | sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' | |
58 | return render_template(sivu, reitti = reitti, suppea_reitti = suppea_reitti, | |
4 | 59 | numero = numero, linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti, |
60 | yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika)) | |
0 | 61 | |
62 | if __name__ == '__main__': | |
2 | 63 | from argparse import ArgumentParser |
64 | parser = ArgumentParser() | |
65 | parser.add_argument('-p', '--port', type = int, default = 5000) | |
66 | args = parser.parse_args() | |
3 | 67 | app.run(debug = True, port = args.port) |