Processing GET requests to pass timetables for specific route_ids
This commit is contained in:
parent
0031646016
commit
9f674f345b
|
|
@ -9,16 +9,30 @@ index(request)
|
||||||
Home page
|
Home page
|
||||||
"""
|
"""
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse, HttpRequest
|
||||||
from .models import *
|
from .models import *
|
||||||
from .forms import *
|
from .forms import *
|
||||||
import json
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
def print_r(r, s):
|
def print_r(r, s):
|
||||||
if not len(r):
|
if not len(r):
|
||||||
print(s)
|
print(s)
|
||||||
return r
|
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):
|
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()]
|
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
|
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"]]
|
t = trips[r["route_id"]]
|
||||||
for s in StopTime.objects.filter(trip_id_id__exact=t[0].trip_id):
|
for s in StopTime.objects.filter(trip_id_id__exact=t[0].trip_id):
|
||||||
seq.append(s)
|
seq.append(s)
|
||||||
stop_sequences[r["route_id"]] = sorted(seq, key=lambda st : st.stop_sequence)
|
stop_sequences[r["route_id"]] = [s.stop_id.stop_id for s in sorted(seq, key=lambda st : st.stop_sequence)]
|
||||||
timetables = {}
|
timetable = {}
|
||||||
for r in routes:
|
if request.GET.get("timetable"):
|
||||||
timetable = {"stop_sequence": stop_sequences[r["route_id"]]}
|
try:
|
||||||
sts = {}
|
r = Route.objects.get(route_id=request.GET.get("timetable"))
|
||||||
for stop in stop_sequences[r["route_id"]]:
|
timetable = get_timetable(r, trips, stop_sequences)
|
||||||
times = []
|
except Route.DoesNotExist:
|
||||||
for t in trips[r["route_id"]]:
|
print(f"Invalid request for Route with id {request.GET['timetable']}")
|
||||||
for st in StopTime.objects.filter(trip_id=t.trip_id):
|
context = {"data": json.dumps({"stops": stops, "routes": routes, "timetable": timetable})}
|
||||||
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})}
|
|
||||||
return render(request,"map.html", context)
|
return render(request,"map.html", context)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user