palvelu.py

Mon, 17 Apr 2017 22:56:39 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Mon, 17 Apr 2017 22:56:39 +0300
changeset 1
22c22ff63e66
parent 0
fc48613c73e5
child 2
48efa8ca14dd
permissions
-rwxr-xr-x

Aluemuotoja

#!/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)

mercurial