diff --git a/transport_accessibility/pt_map/views.py b/transport_accessibility/pt_map/views.py index 5e04c5b..5936db7 100644 --- a/transport_accessibility/pt_map/views.py +++ b/transport_accessibility/pt_map/views.py @@ -9,16 +9,30 @@ index(request) Home page """ from django.shortcuts import render -from django.http import HttpResponse +from django.http import HttpResponse, HttpRequest from .models import * from .forms import * import json +from datetime import datetime def print_r(r, s): if not len(r): print(s) return r +def get_timetable(r, trips, stop_sequences): + timetable = {"stop_sequence": stop_sequences[r.route_id]} + sts = {} + for stop in stop_sequences[r.route_id]: + times = [] + for t in trips[r.route_id]: + for st in StopTime.objects.filter(trip_id=t.trip_id): + times.append(st.departure_time.strftime("%H:%M")) + sts[stop] = times + timetable["stop_times"] = sts + return timetable + + def index(request): stops = [{name: getattr(s, name) for name in ['stop_id', 'stop_name', 'stop_lat', 'stop_lon']} for s in Stop.objects.all()] route_name = lambda r : r.route_short_name if r.route_short_name else r.route_long_name @@ -30,21 +44,14 @@ def index(request): t = trips[r["route_id"]] for s in StopTime.objects.filter(trip_id_id__exact=t[0].trip_id): seq.append(s) - stop_sequences[r["route_id"]] = sorted(seq, key=lambda st : st.stop_sequence) - timetables = {} - for r in routes: - timetable = {"stop_sequence": stop_sequences[r["route_id"]]} - sts = {} - for stop in stop_sequences[r["route_id"]]: - times = [] - for t in trips[r["route_id"]]: - for st in StopTime.objects.filter(trip_id=t.trip_id): - times.append(st.departure_time) - sts[stop.stop_id] = times - timetable["stop_times"] = sts - print(timetable) - timetables[r["route_id"]] = timetable - - context = {"data": json.dumps({"stops": stops, "routes": routes, "timetables": timetables})} + stop_sequences[r["route_id"]] = [s.stop_id.stop_id for s in sorted(seq, key=lambda st : st.stop_sequence)] + timetable = {} + if request.GET.get("timetable"): + try: + r = Route.objects.get(route_id=request.GET.get("timetable")) + timetable = get_timetable(r, trips, stop_sequences) + except Route.DoesNotExist: + print(f"Invalid request for Route with id {request.GET['timetable']}") + context = {"data": json.dumps({"stops": stops, "routes": routes, "timetable": timetable})} return render(request,"map.html", context)