palvelu.py

changeset 4
312c432bb9e6
parent 3
ca2df60215ff
child 5
a65b680f1774
equal deleted inserted replaced
3:ca2df60215ff 4:312c432bb9e6
1 #!/usr/bin/env python3 1 #!/usr/bin/env python3
2 from flask import Flask, render_template, abort 2 from flask import Flask, render_template, abort
3 from datetime import datetime, date, time, timedelta 3 from datetime import datetime, date, time, timedelta
4 from misc import *
4 import locale 5 import locale
5 6
6 app = Flask(__name__) 7 app = Flask(__name__)
7 locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) 8 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 9
20 @app.route('/pysäkki/<tunniste>') 10 @app.route('/pysäkki/<tunniste>')
21 def pysäkkiaikataulu(tunniste): 11 def pysäkkiaikataulu(tunniste):
22 from bussit import pysäkit 12 from bussit import pysäkit
23 aikataulu = [] 13 aikataulu = []
29 aikataulu.append({ 19 aikataulu.append({
30 'aika': muotoile_aika(aika), 20 'aika': muotoile_aika(aika),
31 'linja': pysähdys.ajo.linja.viite, 21 'linja': pysähdys.ajo.linja.viite,
32 'kyltti': pysähdys.ajo.kyltti, 22 'kyltti': pysähdys.ajo.kyltti,
33 'ajovuoro': pysähdys.ajo.nimi, 23 'ajovuoro': pysähdys.ajo.nimi,
24 'yö': yö(aika),
34 }) 25 })
35 return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi) 26 return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi)
36 27
37 @app.route('/ajovuoro/<int:numero>') 28 @app.route('/ajovuoro/<numero>')
38 def ajoreitti(numero): 29 def ajoreitti(numero):
39 from flask import request 30 from flask import request
40 from bussit import ajot 31 from bussit import ajot
41 try: 32 try:
42 ajovuoro = ajot[numero] 33 ajovuoro = ajot[numero]
45 suppea = request.args.get('suppea') is not None 36 suppea = request.args.get('suppea') is not None
46 reitti = [] 37 reitti = []
47 suppea_reitti = [] 38 suppea_reitti = []
48 käydyt_alueet = set() 39 käydyt_alueet = set()
49 for pysähdys in ajovuoro.reitti: 40 for pysähdys in ajovuoro.reitti:
50 aika = datetime.combine(date.today(), time()) + pysähdys.saapumisaika 41 aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika
51 muotoiltu_aika = muotoile_aika(aika, suhteellinen = False) 42 muotoiltu_aika = muotoile_aika(aika)
52 reitti.append({ 43 reitti.append({
53 'aika': muotoiltu_aika, 44 'aika': muotoiltu_aika,
54 'tunniste': pysähdys.pysäkki.tunniste, 45 'tunniste': pysähdys.pysäkki.tunniste,
55 'alue': pysähdys.pysäkki.alue, 46 'alue': pysähdys.pysäkki.alue,
56 'nimi': pysähdys.pysäkki.nimi, 47 'nimi': pysähdys.pysäkki.nimi,
63 'alue': alue 54 'alue': alue
64 }) 55 })
65 käydyt_alueet.add(alue) 56 käydyt_alueet.add(alue)
66 sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' 57 sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html'
67 return render_template(sivu, reitti = reitti, suppea_reitti = suppea_reitti, 58 return render_template(sivu, reitti = reitti, suppea_reitti = suppea_reitti,
68 numero = numero, linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti) 59 numero = numero, linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti,
60 yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika))
69 61
70 if __name__ == '__main__': 62 if __name__ == '__main__':
71 from argparse import ArgumentParser 63 from argparse import ArgumentParser
72 parser = ArgumentParser() 64 parser = ArgumentParser()
73 parser.add_argument('-p', '--port', type = int, default = 5000) 65 parser.add_argument('-p', '--port', type = int, default = 5000)

mercurial