def trains(self): station_codes = [i.station_code for i in self.api.stations.all.values() if i == self] if not self.api.timestamp: data = self.api.get_json(build_url(Service.rail_predictions, "GetPrediction/%s" % ",".join(station_codes)), nocache=True)["Trains"] return [MetrorailTrainPrediction( self.api.lines[i["Line"]], self.api.stations[i["DestinationCode"]], self, i["Min"], i["Car"], int(i["Group"]) ) for i in data if ( i["DestinationCode"] is not None and MetrorailLines._line_valid(i["Line"]) and i["Car"] is not None )] else: data = list(HistoricalTrainPosition.select().where(HistoricalTrainPosition.timestamp == self.api.timestamp, HistoricalTrainPosition.next_station << station_codes)) return [MetrorailTrainPrediction( self.api.lines[prediction.line_code], self.api.stations[prediction.dest_station], self, str(prediction.time), str(prediction.cars), prediction.trackgroup ) for prediction in data]
def all_trains(self): if not self.api.timestamp: data = self.api.get_json(build_url(Service.rail_predictions, "GetPrediction/All"), nocache=True)["Trains"] result = {} for prediction in data: if prediction["LocationCode"] is None or prediction["DestinationCode"] is None or prediction["Car"] is None: continue if self.api.stations[prediction["LocationCode"]] not in result: result[self.api.stations[prediction["LocationCode"]]] = [] result[self.api.stations[prediction["LocationCode"]]].append( MetrorailTrainPrediction( self.api.lines[prediction["Line"]], self.api.stations[prediction["DestinationCode"]], self.api.stations[prediction["LocationCode"]], prediction["Min"], prediction["Car"], prediction["Group"] ) ) all_stations = self.api.stations.all for station in all_stations: st = all_stations[station] if st not in result: result[st] = [] return result else: data = list(HistoricalTrainPosition.select().where(HistoricalTrainPosition.timestamp == self.api.timestamp)) predictions = [MetrorailTrainPrediction( self.api.lines[prediction.line_code], self.api.stations[prediction.dest_station], self.api.stations[prediction.next_station], str(prediction.time), str(prediction.cars), prediction.trackgroup ) for prediction in data] d = {} for p in predictions: if p.station not in d: d[p.station] = [] d[p.station].append(p) return d
from models import HistoricalTrainPosition pos = list(HistoricalTrainPosition.select()) dels = [] for p in pos: if p.timestamp.microsecond == 0: dels.append(p.id) print(HistoricalTrainPosition.delete().where(HistoricalTrainPosition.id << dels).execute())