palvelu.py

changeset 0
fc48613c73e5
child 2
48efa8ca14dd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/palvelu.py	Mon Apr 17 14:51:22 2017 +0300
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+from flask import Flask, render_template
+from datetime import datetime, date, time, timedelta
+import locale
+
+app = Flask(__name__)
+locale.setlocale(locale.LC_ALL, locale.getdefaultlocale())
+
+def muotoile_aika(aika, suhteellinen = True):
+	erotus = aika - datetime.now()
+	if suhteellinen and erotus < timedelta(minutes = 30):
+		return '%dm' % round(erotus.seconds / 60)
+	elif aika.day == datetime.now().day:
+		return '%d:%02d' % (aika.hour, aika.minute)
+	elif erotus < timedelta(7):
+		return aika.strftime('%-a %H:%M')
+	else:
+		return aika.strftime('%-d.%-m. %H:%M')
+
+@app.route('/pysäkki/<tunniste>')
+def pysäkkiaikataulu(tunniste):
+	from bussit import pysäkit
+	aikataulu = []
+	pysäkki = pysäkit[tunniste]
+	for (aika, pysähdys) in pysäkki.aikataulu(100):
+		aikataulu.append({
+			'aika': muotoile_aika(aika),
+			'linja': pysähdys.ajo.linja.viite,
+			'kyltti': pysähdys.ajo.kyltti,
+			'ajovuoro': pysähdys.ajo.nimi,
+		})
+	return render_template('pysäkki.html', aikataulu = aikataulu, viite = tunniste, nimi = pysäkki.nimi)
+
+@app.route('/ajovuoro/<int:numero>')
+def ajoreitti(numero):
+	from bussit import ajot
+	ajovuoro = ajot[numero]
+	reitti = []
+	for pysähdys in ajovuoro.reitti:
+		aika = datetime.combine(date.today(), time()) + pysähdys.saapumisaika
+		reitti.append({
+			'aika': muotoile_aika(aika, suhteellinen = False),
+			'tunniste': pysähdys.pysäkki.tunniste,
+			'nimi': pysähdys.pysäkki.nimi,
+		})
+	return render_template('ajovuoro.html', reitti = reitti, numero = numero,
+						linja = ajovuoro.linja.viite, selite = ajovuoro.kyltti)
+
+if __name__ == '__main__':
+	app.run(debug = True)
\ No newline at end of file

mercurial