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 |