1 #!/usr/bin/env python3 |
1 #!/usr/bin/env python3 |
2 from flask import Flask, render_template, abort, send_from_directory |
2 from flask import Flask, render_template, abort, send_from_directory, redirect |
3 from datetime import datetime, date, time, timedelta |
3 from datetime import datetime, date, time, timedelta |
4 from os import path, listdir |
4 from os import path, listdir |
5 from configparser import ConfigParser |
5 from configparser import ConfigParser |
6 import locale |
6 import locale |
7 |
7 |
75 return schedule_entry['trip'].schedule[-1].stop.name |
75 return schedule_entry['trip'].schedule[-1].stop.name |
76 |
76 |
77 def imminent(schedule_entry): |
77 def imminent(schedule_entry): |
78 return (schedule_entry['time'] - now()) <= timedelta(minutes = 3) |
78 return (schedule_entry['time'] - now()) <= timedelta(minutes = 3) |
79 |
79 |
80 @app.route('/pysäkki/<reference>') |
80 @app.route('/stop/<reference>') |
81 def bus_stop_schedule(reference): |
81 def bus_stop_schedule(reference): |
82 from buses import bus_stops |
82 from buses import bus_stops |
83 schedule = [] |
83 schedule = [] |
84 try: |
84 try: |
85 bus_stop = bus_stops[reference] |
85 bus_stop = bus_stops[reference] |
118 return time.strftime('%-a %H:%M').replace(' ', '\xa0') |
118 return time.strftime('%-a %H:%M').replace(' ', '\xa0') |
119 else: |
119 else: |
120 with activate_locale(): |
120 with activate_locale(): |
121 return time.strftime('%-d.%-m. %H:%M').replace(' ', '\xa0') |
121 return time.strftime('%-d.%-m. %H:%M').replace(' ', '\xa0') |
122 |
122 |
123 @app.route('/pysäkkiryhmä/<cluster_name>') |
123 @app.route('/stop_cluster/<cluster_name>') |
124 def cluster_schedule(cluster_name): |
124 def cluster_schedule(cluster_name): |
125 from buses import bus_stops, clusters_by_name |
125 from buses import bus_stops, clusters_by_name |
126 schedule = [] |
126 schedule = [] |
127 try: |
127 try: |
128 cluster = clusters_by_name[cluster_name] |
128 cluster = clusters_by_name[cluster_name] |
157 stops_in_cluster = stops_in_cluster, |
157 stops_in_cluster = stops_in_cluster, |
158 amount_of_stops_in_cluster = len(stops_in_cluster), |
158 amount_of_stops_in_cluster = len(stops_in_cluster), |
159 tr = tr, |
159 tr = tr, |
160 ) |
160 ) |
161 |
161 |
162 @app.route('/ajovuoro/<trip_reference>') |
162 @app.route('/trip/<trip_reference>') |
163 def trip(trip_reference): |
163 def trip(trip_reference): |
164 from flask import request |
164 from flask import request |
165 from buses import all_trips |
165 from buses import all_trips |
166 from busroute import simplify_name |
166 from busroute import simplify_name |
167 try: |
167 try: |
203 night = is_night_time(datetime.combine(today(), time()) + trip.schedule[-1].arrival_time), |
203 night = is_night_time(datetime.combine(today(), time()) + trip.schedule[-1].arrival_time), |
204 tr = tr, |
204 tr = tr, |
205 length = trip.length / 1000, |
205 length = trip.length / 1000, |
206 ) |
206 ) |
207 |
207 |
208 @app.route('/linja/<name>') |
208 @app.route('/route/<name>') |
209 def route_page(name): |
209 def route_page(name): |
210 from buses import routes |
210 from buses import routes |
211 route = routes[name.upper()] |
211 route = routes[name.upper()] |
212 schedule = [] |
212 schedule = [] |
213 for trip in route.trips: |
213 for trip in route.trips: |
222 name = route.reference + ' ' + route.description, |
222 name = route.reference + ' ' + route.description, |
223 tr = tr, |
223 tr = tr, |
224 schedule = schedule, |
224 schedule = schedule, |
225 ) |
225 ) |
226 |
226 |
|
227 @app.route('/') |
|
228 def index(): |
|
229 return redirect('/stop_cluster/kauppatori') |
|
230 |
|
231 @app.route('/pysäkki/<reference>') |
|
232 def redirect_pysäkki(reference): |
|
233 return redirect('/stop/' + str(reference)) |
|
234 |
|
235 @app.route('/pysäkkiryhmä/<reference>') |
|
236 def redirect_pysäkkiryhmä(reference): |
|
237 return redirect('/stop_cluster/' + str(reference)) |
|
238 |
|
239 @app.route('/ajovuoro/<reference>') |
|
240 def redirect_ajovuoro(reference): |
|
241 return redirect('/trip/' + str(reference)) |
|
242 |
227 @app.route('/static/<path:path>') |
243 @app.route('/static/<path:path>') |
228 def static_file(path): |
244 def static_file(path): |
229 return send_from_directory(path.join('static', path)) |
245 return send_from_directory(path.join('static', path)) |
230 |
246 |
231 from argparse import ArgumentParser |
247 from argparse import ArgumentParser |