Mon, 17 Apr 2017 22:56:39 +0300
Aluemuotoja
0 | 1 | #!/usr/bin/env python3 |
2 | from flask import Flask, render_template | |
3 | from datetime import datetime, date, time, timedelta | |
4 | import locale | |
5 | ||
6 | app = Flask(__name__) | |
7 | locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) | |
8 | ||
9 | def muotoile_aika(aika, suhteellinen = True): | |
10 | erotus = aika - datetime.now() | |
11 | if suhteellinen and erotus < timedelta(minutes = 30): | |
12 | return '%dm' % round(erotus.seconds / 60) | |
13 | elif aika.day == datetime.now().day: | |
14 | return '%d:%02d' % (aika.hour, aika.minute) | |
15 | elif erotus < timedelta(7): | |
16 | return aika.strftime('%-a %H:%M') | |
17 | else: | |
18 | return aika.strftime('%-d.%-m. %H:%M') | |
19 | ||
20 | @app.route('/pysäkki/<tunniste>') | |
21 | def pysäkkiaikataulu(tunniste): | |
22 | from bussit import pysäkit | |
23 | aikataulu = [] | |
24 | pysäkki = pysäkit[tunniste] | |
25 | for (aika, pysähdys) in pysäkki.aikataulu(100): | |
26 | aikataulu.append({ | |
27 | 'aika': muotoile_aika(aika), | |
28 | 'linja': pysähdys.ajo.linja.viite, | |
29 | 'kyltti': pysähdys.ajo.kyltti, | |
30 | 'ajovuoro': pysähdys.ajo.nimi, | |
31 | }) | |
32 | return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi) | |
33 | ||
34 | @app.route('/ajovuoro/<int:numero>') | |
35 | def ajoreitti(numero): | |
36 | from bussit import ajot | |
37 | ajovuoro = ajot[numero] | |
38 | reitti = [] | |
39 | for pysähdys in ajovuoro.reitti: | |
40 | aika = datetime.combine(date.today(), time()) + pysähdys.saapumisaika | |
41 | reitti.append({ | |
42 | 'aika': muotoile_aika(aika, suhteellinen = False), | |
43 | 'tunniste': pysähdys.pysäkki.tunniste, | |
44 | 'nimi': pysähdys.pysäkki.nimi, | |
45 | }) | |
46 | return render_template('ajovuoro.html', reitti = reitti, numero = numero, | |
47 | linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti) | |
48 | ||
49 | if __name__ == '__main__': | |
50 | app.run(debug = True) |