service.py

changeset 22
3d094a804af8
parent 21
6a0394d5a159
child 24
e6bdb9c54096
equal deleted inserted replaced
21:6a0394d5a159 22:3d094a804af8
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))

mercurial