service.py

changeset 19
16fa9fb20b32
parent 18
1c8ff93fbfac
child 20
3199e289ae62
equal deleted inserted replaced
18:1c8ff93fbfac 19:16fa9fb20b32
42 if request.args.get(language_name) is not None: 42 if request.args.get(language_name) is not None:
43 return language_name 43 return language_name
44 else: 44 else:
45 return 'fi' 45 return 'fi'
46 46
47 def sign(schedule_entry):
48 from math import ceil
49 sign = supista_reitti(schedule_entry['trip'].suppea_reitti(schedule_entry['stop']))
50 sign = [tr(paikka, 'paikat') for paikka in sign]
51 sign_representation = ' - '.join(sign)
52 if len(sign_representation) > 25:
53 k = ceil(len(sign) / 2)
54 sign_representation = ' - '.join(sign[:k]) + '\n' + ' - '.join(sign[k:])
55 return sign_representation
56
47 @app.route('/pysäkki/<tunniste>') 57 @app.route('/pysäkki/<tunniste>')
48 def pysäkkiaikataulu(tunniste): 58 def pysäkkiaikataulu(tunniste):
49 from buses import pysäkit 59 from buses import pysäkit
50 from math import ceil
51 aikataulu = [] 60 aikataulu = []
52 try: 61 try:
53 pysäkki = pysäkit[tunniste] 62 pysäkki = pysäkit[tunniste]
54 except KeyError: 63 except KeyError:
55 abort(404) 64 abort(404)
56 for schedule_entry in pysäkki.schedule(100): 65 for schedule_entry in pysäkki.schedule(100):
57 sign = supista_reitti(schedule_entry['trip'].suppea_reitti(schedule_entry['stop']))
58 sign = [tr(paikka, 'paikat') for paikka in sign]
59 sign_representation = ' - '.join(sign)
60 if len(sign_representation) > 25:
61 k = ceil(len(sign) / 2)
62 sign_representation = ' - '.join(sign[:k]) + '\n' + ' - '.join(sign[k:])
63 aikataulu.append({ 66 aikataulu.append({
64 'aika': time_representation(schedule_entry['time']), 67 'aika': time_representation(schedule_entry['time']),
65 'linja': schedule_entry['trip'].linja.viite, 68 'linja': schedule_entry['trip'].linja.viite,
66 'kyltti': sign_representation, 69 'kyltti': sign(schedule_entry),
67 'ajovuoro': schedule_entry['stop'].ajo.nimi, 70 'ajovuoro': schedule_entry['stop'].ajo.nimi,
68 'yö': is_night_time(schedule_entry['time']), 71 'yö': is_night_time(schedule_entry['time']),
69 }) 72 })
70 return render_template( 73 return render_template(
71 'pysäkki.html', 74 'pysäkki.html',
72 aikataulu = aikataulu, 75 aikataulu = aikataulu,
73 viite = tunniste, 76 nimi = tunniste + ' ' + tr(pysäkki.nimi, 'pysäkit'),
74 nimi = tr(pysäkki.nimi, 'pysäkit'), 77 linkki_karttaan = pysäkki.sijainti.link_to_map,
75 linkki_karttaan = pysäkki.linkki_karttaan,
76 alue = pysäkki.alue, 78 alue = pysäkki.alue,
77 sijainti = pysäkki.sijainti, 79 sijainti = pysäkki.sijainti,
80 cluster = pysäkki.cluster.name,
81 )
82
83 @app.route('/pysäkkiryhmä/<cluster_name>')
84 def cluster_schedule(cluster_name):
85 from buses import pysäkit, clusters_by_name
86 aikataulu = []
87 try:
88 cluster = clusters_by_name[cluster_name]
89 except KeyError:
90 abort(404)
91 for schedule_entry in cluster.schedule(100):
92 aikataulu.append({
93 'aika': time_representation(schedule_entry['time']),
94 'linja': schedule_entry['trip'].linja.viite,
95 'kyltti': sign(schedule_entry),
96 'ajovuoro': schedule_entry['stop'].ajo.nimi,
97 'yö': is_night_time(schedule_entry['time']),
98 'stop_id': schedule_entry['stop'].pysäkki.tunniste,
99 'stop_name': tr(schedule_entry['stop'].pysäkki.nimi, 'pysäkit'),
100 })
101 return render_template(
102 'cluster.html',
103 aikataulu = aikataulu,
104 nimi = 'Yhdistetty pysäkkiaikataulu ' + cluster_name,
105 linkki_karttaan = cluster.center.link_to_map,
106 sijainti = cluster.center,
107 stops_in_cluster = sorted(
108 ({
109 'id': stop.tunniste,
110 'name': tr(stop.nimi, 'pysäkit'),
111 } for stop in cluster.stops),
112 key = lambda stop: (len(stop['id']), stop['id'])
113 )
78 ) 114 )
79 115
80 @app.route('/ajovuoro/<numero>') 116 @app.route('/ajovuoro/<numero>')
81 def ajoreitti(numero): 117 def ajoreitti(numero):
82 from flask import request 118 from flask import request

mercurial