Refine stop trips with timing to improve performance
[busui.git] / schedule_viewer.py
blob:a/schedule_viewer.py -> blob:b/schedule_viewer.py
--- a/schedule_viewer.py
+++ b/schedule_viewer.py
@@ -286,7 +286,7 @@
     schedule = self.server.schedule
     route = schedule.GetRoute(params.get('route', None))
     return [transitfeed.Route._FIELD_NAMES, route.GetFieldValuesTuple()]
-    
+  
   def handle_json_GET_routetrips(self, params):
     """ Get a trip for a route_id (preferablly the next one) """
     schedule = self.server.schedule
@@ -294,7 +294,12 @@
     result = []
     for t in schedule.GetTripList():
       if t.route_id == query:
-        result.append ( (t.GetStartTime(), t.trip_id) )
+        try:
+          starttime = t.GetStartTime()  
+        except:
+          print "Error for GetStartTime of trip #" + t.trip_id + sys.exc_info()[0]
+        else:
+            result.append ( (starttime, t.trip_id) )
     return sorted(result, key=lambda trip: trip[0])
   
   def handle_json_GET_triprows(self, params):
@@ -421,6 +426,18 @@
       if s.stop_id.lower() == query:
         return StopToTuple(s)
     return []
+  def handle_json_GET_stoproutes(self, params):
+    """Given a stop_id return all routes to visit the stop."""
+    schedule = self.server.schedule
+    stop = schedule.GetStop(params.get('stop', None))
+    service_period = params.get('service_period', None)
+    trips = stop.GetTrips(schedule)
+    result = {}
+    for trip in trips:
+      route = schedule.GetRoute(trip.route_id)
+      if not trip.route_short_name+route.route_long_name in result:
+        result[trip.route_short_name+route.route_long_name] = (route.route_id, route.route_short_name, route.route_long_name, trip.trip_id)
+    return result
     
   def handle_json_GET_stopalltrips(self, params):
     """Given a stop_id return all trips to visit the stop."""