palvelu.py

changeset 0
fc48613c73e5
child 2
48efa8ca14dd
equal deleted inserted replaced
-1:000000000000 0:fc48613c73e5
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)

mercurial