56 else: |
56 else: |
57 return 'fi' |
57 return 'fi' |
58 |
58 |
59 def sign(schedule_entry): |
59 def sign(schedule_entry): |
60 from math import ceil |
60 from math import ceil |
61 sign = supista_reitti(schedule_entry['trip'].suppea_reitti(schedule_entry['stop'])) |
61 ajomatka = schedule_entry['trip'].length - schedule_entry['stop'].ajettu_matka |
|
62 sign = supista_reitti(schedule_entry['trip'].suppea_reitti(schedule_entry['stop']), ajomatka = ajomatka) |
62 sign = [tr(paikka, 'paikat') for paikka in sign] |
63 sign = [tr(paikka, 'paikat') for paikka in sign] |
63 sign_representation = ' - '.join(sign) |
64 sign_representation = ' - '.join(sign) |
64 #if len(sign_representation) > 25: |
65 #if len(sign_representation) > 25: |
65 # k = ceil(len(sign) / 2) |
66 # k = ceil(len(sign) / 2) |
66 # sign_representation = ' - '.join(sign[:k]) + '\n' + ' - '.join(sign[k:]) |
67 # sign_representation = ' - '.join(sign[:k]) + '\n' + ' - '.join(sign[k:]) |
80 'linja': schedule_entry['trip'].linja.viite, |
81 'linja': schedule_entry['trip'].linja.viite, |
81 'kyltti': sign(schedule_entry), |
82 'kyltti': sign(schedule_entry), |
82 'ajovuoro': schedule_entry['stop'].ajo.nimi, |
83 'ajovuoro': schedule_entry['stop'].ajo.nimi, |
83 'yö': is_night_time(schedule_entry['time']), |
84 'yö': is_night_time(schedule_entry['time']), |
84 }) |
85 }) |
|
86 from os import path |
|
87 tausta = path.join('static', 'tausta-' + (pysäkki.alue or 'pysäkki').lower().replace(' ', '-') + '.png') |
|
88 if not path.isfile(tausta): |
|
89 tausta = None |
85 return render_template( |
90 return render_template( |
86 'pysäkki.html', |
91 'pysäkki.html', |
87 aikataulu = aikataulu, |
92 aikataulu = aikataulu, |
88 nimi = tunniste + ' ' + tr(pysäkki.nimi, 'pysäkit'), |
93 nimi = tunniste + ' ' + tr(pysäkki.nimi, 'pysäkit'), |
89 linkki_karttaan = pysäkki.sijainti.link_to_map, |
94 linkki_karttaan = pysäkki.sijainti.link_to_map, |
90 alue = pysäkki.alue, |
95 alue = pysäkki.alue, |
91 sijainti = pysäkki.sijainti, |
96 sijainti = pysäkki.sijainti, |
92 cluster = pysäkki.cluster.url_name if len(pysäkki.cluster.stops) > 1 else None, |
97 cluster = pysäkki.cluster.url_name if len(pysäkki.cluster.stops) > 1 else None, |
93 tr = tr, |
98 tr = tr, |
|
99 tausta = tausta, |
94 ) |
100 ) |
95 |
101 |
96 def time_representation(aika, suhteellinen = True): |
102 def time_representation(aika, suhteellinen = True): |
97 erotus = aika - nyt() |
103 erotus = aika - nyt() |
98 if suhteellinen and erotus > timedelta(0) and erotus < timedelta(minutes = 1): |
104 if suhteellinen and erotus > timedelta(0) and erotus < timedelta(minutes = 1): |
148 from buses import ajot |
154 from buses import ajot |
149 try: |
155 try: |
150 ajovuoro = ajot[numero] |
156 ajovuoro = ajot[numero] |
151 except KeyError: |
157 except KeyError: |
152 abort(404) |
158 abort(404) |
153 suppea = request.args.get('suppea') is not None |
|
154 reitti = [] |
159 reitti = [] |
155 suppea_reitti = [] |
160 suppea_reitti = [] |
156 käydyt_alueet = set() |
161 käydyt_alueet = set() |
157 for pysähdys in ajovuoro.reitti: |
162 for pysähdys in ajovuoro.reitti: |
158 aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika |
163 aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika |
166 alue = pysähdys.pysäkki.alue |
171 alue = pysähdys.pysäkki.alue |
167 if alue: |
172 if alue: |
168 if alue not in käydyt_alueet: |
173 if alue not in käydyt_alueet: |
169 suppea_reitti.append({ |
174 suppea_reitti.append({ |
170 'aika': muotoiltu_aika, |
175 'aika': muotoiltu_aika, |
171 'alue': tr(alue or '', 'paikat'), |
176 'alue': alue or '', |
172 }) |
177 }) |
173 käydyt_alueet.add(alue) |
178 käydyt_alueet.add(alue) |
174 kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True) |
179 kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True, ajomatka = ajovuoro.length) |
175 kyltti = [kyltti[0], kyltti[-1]] |
180 kyltti = [kyltti[0], kyltti[-1]] |
176 sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' |
181 for entry in suppea_reitti: |
177 return render_template(sivu, |
182 entry['alue'] = tr(entry['alue'], 'paikat') |
|
183 return render_template('ajovuoro.html', |
178 reitti = reitti, |
184 reitti = reitti, |
179 suppea_reitti = suppea_reitti, |
185 suppea_reitti = suppea_reitti, |
180 numero = numero, |
186 numero = numero, |
181 linja = ajovuoro.linja.viite, |
187 linja = ajovuoro.linja.viite, |
182 selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti), |
188 selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti), |
183 yö = is_night_time(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), |
189 yö = is_night_time(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), |
184 tr = tr, |
190 tr = tr, |
|
191 length = ajovuoro.length / 1000 |
185 ) |
192 ) |
186 |
193 |
187 @app.route('/static/<path:path>') |
194 @app.route('/static/<path:path>') |
188 def static_file(path): |
195 def static_file(path): |
189 return send_from_directory(path.join('static', path)) |
196 return send_from_directory(path.join('static', path)) |