palvelu.py

Fri, 19 May 2017 21:15:12 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Fri, 19 May 2017 21:15:12 +0300
changeset 4
312c432bb9e6
parent 3
ca2df60215ff
child 5
a65b680f1774
permissions
-rwxr-xr-x

Äää

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

mercurial