""" Views ===== Views reacting to Http Requests by interfacing between backend and frontend. Functions --------- index(request) Home page """ from django.shortcuts import render from django.http import HttpResponse from .models import * def print_r(r, s): if not len(r): print(s) return r 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 routes = [{"route_id": r.route_id, "route_type": r.route_type, "route_name": route_name(r), "agency_id": r.agency_id.agency_id} for r in Route.objects.all()] trips = {r["route_id"]: [t for t in Trip.objects.filter(route_id_id=r["route_id"])] for r in routes} #stop_sequence = {} #for r in routes: # seq = [] # for s in StopTime.objects.filter(trip_id_id__exact=trips[r["route_id"]][0].trip_id) # stop_sequence[r["route_id"]] = [s for s in StopTime.objects.filter(trip_id_id__exact=trips[r["route_id"]].get(0).trip_id) if len(trips[r["route_id"]])] #print(stop_sequences) #print(trips[routes[0]["route_id"]][0]) #timetables = {r["route_id"]: {"stop_sequence": stop_sequences[r["route_id"]], "stop_times": {stop: sorted([st.departure_time for st in [StopTime.objects.filter(trip_id=t.trip_id.trip_id) for t in trips[r["route_id"]]]]) for stop in stop_sequences[r["route_id"]]}} for r in routes} context = {"stops": stops, "routes": routes, }#"timetables": timetables} return render(request,"map.html", context)