palvelu.py

changeset 5
a65b680f1774
parent 4
312c432bb9e6
--- a/palvelu.py	Fri May 19 21:15:12 2017 +0300
+++ b/palvelu.py	Thu May 25 16:41:21 2017 +0300
@@ -3,27 +3,71 @@
 from datetime import datetime, date, time, timedelta
 from misc import *
 import locale
+from bussireitti import supista_reitti
+from configparser import ConfigParser
 
 app = Flask(__name__)
 locale.setlocale(locale.LC_ALL, locale.getdefaultlocale())
 
+kielet = ['fi', 'sv', 'en', 'ru']
+kieli_ini = {}
+for kieli in kielet:
+	ini = ConfigParser()
+	ini.read(kieli + '.ini')
+	kieli_ini[kieli] = ini
+
+def käännä(nimi, osio):
+	kieli = sivun_kieli()
+	try:
+		return kieli_ini[kieli][osio][nimi]
+	except KeyError:
+		return nimi
+
+def sivun_kieli():
+	from flask import request
+	if request.args.get('sv') is not None:
+		return 'sv'
+	elif request.args.get('en') is not None:
+		return 'en'
+	elif request.args.get('ru') is not None:
+		return 'ru'
+	elif request.args.get('kääntämätön') is None:
+		return 'fi'
+	else:
+		return None
+
 @app.route('/pysäkki/<tunniste>')
 def pysäkkiaikataulu(tunniste):
 	from bussit import pysäkit
+	from math import ceil
 	aikataulu = []
 	try:
 		pysäkki = pysäkit[tunniste]
 	except KeyError:
 		abort(404)
 	for (aika, pysähdys) in pysäkki.aikataulu(100):
+		kyltti = supista_reitti(pysähdys.ajo.suppea_reitti(pysähdys))
+		kyltti = [käännä(paikka, 'paikat') for paikka in kyltti]
+		kylttiesitys = ' - '.join(kyltti)
+		if len(kylttiesitys) > 25:
+			k = ceil(len(kyltti) / 2)
+			kylttiesitys = ' - '.join(kyltti[:k]) + '\n' + ' - '.join(kyltti[k:])
 		aikataulu.append({
 			'aika': muotoile_aika(aika),
 			'linja': pysähdys.ajo.linja.viite,
-			'kyltti': pysähdys.ajo.kyltti,
+			'kyltti': kylttiesitys,
 			'ajovuoro': pysähdys.ajo.nimi,
 			'yö': yö(aika),
 		})
-	return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi)
+	return render_template(
+		'pysäkki.html',
+		aikataulu = aikataulu,
+		viite = tunniste,
+		nimi = käännä(pysäkki.nimi, 'pysäkit'),
+		linkki_karttaan = pysäkki.linkki_karttaan,
+		alue = pysäkki.alue,
+		sijainti = pysäkki.sijainti,
+	)
 
 @app.route('/ajovuoro/<numero>')
 def ajoreitti(numero):
@@ -43,21 +87,24 @@
 		reitti.append({
 			'aika': muotoiltu_aika,
 			'tunniste': pysähdys.pysäkki.tunniste,
-			'alue': pysähdys.pysäkki.alue,
-			'nimi': pysähdys.pysäkki.nimi,
+			'alue': käännä(pysähdys.pysäkki.alue or '', 'paikat'),
+			'nimi': käännä(pysähdys.pysäkki.nimi, 'pysäkit'),
 		})
 		alue = pysähdys.pysäkki.alue
 		if alue:
 			if alue not in käydyt_alueet:
 				suppea_reitti.append({
 					'aika': muotoiltu_aika,
-					'alue': alue
+					'alue': alue,
 				})
 				käydyt_alueet.add(alue)
+	kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True)
 	sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html'
 	return render_template(sivu, reitti = reitti, suppea_reitti = suppea_reitti,
-						numero = numero, linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti,
-						yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika))
+						numero = numero, linja = ajovuoro.linja.viite,
+						selite = ' - '.join(käännä(paikka, 'paikat') for paikka in kyltti),
+						yö = yö(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika),
+						)
 
 if __name__ == '__main__':
 	from argparse import ArgumentParser

mercurial