def runTest(self): """Test the data_retrieval of the latest stations.""" RealTimeProcessing.update_stations([s for s in self.stations_multiple if s['number'] in [1, 2, 3]]) bikes_static = DublinBikesStation.objects.all() latest_bikes = [] for bike_static in bikes_static: bikes_real = bike_static.dublinbikesstationrealtimeupdate_set.all() max_latest_update = datetime.datetime.utcfromtimestamp(0).replace( tzinfo=datetime.timezone.utc) latest_bikes_real = None for bike_real in bikes_real: if bike_real.station_last_update > max_latest_update: max_latest_update = bike_real.station_last_update latest_bikes_real = bike_real latest_bikes.append({ "station_number": bike_static.station_number, "latitude": bike_static.position.coords[1], "longitude": bike_static.position.coords[0], "name": bike_static.name, "status": latest_bikes_real.status, "timestamp": latest_bikes_real.timestamp, "station_last_update": latest_bikes_real.station_last_update.replace( tzinfo=datetime.timezone.utc ), "available_bikes": float(latest_bikes_real.available_bikes), "available_bike_stands": float(latest_bikes_real.available_bike_stands), "bike_stands": float(latest_bikes_real.bike_stands) }) ground_truth_bike = sorted(latest_bikes, key=lambda x: x["station_number"]) ground_truth_bike = [ d[k] for d in ground_truth_bike for k in sorted(d.keys()) ] latest_bikes = sorted(RealTimeProcessing.getLatestStationsFromDB(), key=lambda x: x["station_number"]) latest_bikes = [ d[k] for d in latest_bikes for k in sorted(d.keys()) ] # print(latest_bikes) self.assertEqual(ground_truth_bike, latest_bikes)
def getLatestStationJSON(): """ Get the json formatted last station updates. In realtime update, so only with delta_s = 60 @:return json of the stations updates """ format = "%Y-%m-%d %H:%M" latestStations = RealTimeProcessing.getLatestStationsFromDB() date_list = HistoricAnalysis.getBikesDistinctTimes(delta_s=60) times = [d.strftime(format) for d in date_list] data = {'nbIntervals': len(times), 'dateTimeOfIndex': times} data = json.dumps({ "rtstations": convertToGeoJson(latestStations), 'timerange': data }) return data
def runTest(self): """Get dynamic and static data.""" RealTimeProcessing.update_stations(self.stations[:10]) # TODO: Implement! RealTimeProcessing.getLatestStationsFromDB()