|
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) |