107 # jos tämä ajovuoro ajetaan tänä päivänä |
107 # jos tämä ajovuoro ajetaan tänä päivänä |
108 if trip.ajetaan_päivänä(date): |
108 if trip.ajetaan_päivänä(date): |
109 # ja jos tämä ajo pysähtyy tällä pysäkillä, ei kuitenkaan saapuen |
109 # ja jos tämä ajo pysähtyy tällä pysäkillä, ei kuitenkaan saapuen |
110 # päätepysäkille, |
110 # päätepysäkille, |
111 stop = trip.pysäkkiReitillä(self) |
111 stop = trip.pysäkkiReitillä(self) |
112 if stop and not stop.isArrival(): # stop is not trip.reitti[-1]: |
112 if stop and not stop.isArrival: # stop is not trip.reitti[-1]: |
113 # ja jos tämä pysähdys on tulevaisuudessa, |
113 # ja jos tämä pysähdys on tulevaisuudessa, |
114 stop_time = datetime.combine(date, time()) + stop.saapumisaika |
114 stop_time = datetime.combine(date, time()) + stop.saapumisaika |
115 if stop_time >= nyt(): |
115 if stop_time >= nyt(): |
116 # lisää pysähdys listaan. |
116 # lisää pysähdys listaan. |
117 result.append({ |
117 result.append({ |
126 class Pysähdys: |
126 class Pysähdys: |
127 def __init__(self, saapumisaika, lähtöaika, pysäkki, ajo, ajettu_matka): |
127 def __init__(self, saapumisaika, lähtöaika, pysäkki, ajo, ajettu_matka): |
128 self.saapumisaika, self.lähtöaika, self.pysäkki, self.ajo = saapumisaika, lähtöaika, \ |
128 self.saapumisaika, self.lähtöaika, self.pysäkki, self.ajo = saapumisaika, lähtöaika, \ |
129 pysäkki, ajo |
129 pysäkki, ajo |
130 self.ajettu_matka = ajettu_matka |
130 self.ajettu_matka = ajettu_matka |
|
131 self._isArrival = None |
|
132 @property |
131 def isArrival(self): |
133 def isArrival(self): |
132 iterator = iter(self.ajo.reitti) |
134 if self._isArrival is None: |
133 stop = next(iterator) |
135 iterator = iter(self.ajo.reitti) |
134 while stop is not self: |
|
135 stop = next(iterator) |
136 stop = next(iterator) |
136 for stop in iterator: |
137 while stop is not self: |
137 if stop.pysäkki.alue != self.pysäkki.alue: |
138 stop = next(iterator) |
138 return False |
139 for stop in iterator: |
139 return True |
140 if stop.pysäkki.alue != self.pysäkki.alue: |
|
141 self._isArrival = False |
|
142 break |
|
143 else: |
|
144 self._isArrival = True |
|
145 return self._isArrival |
140 def __repr__(self): |
146 def __repr__(self): |
141 return 'Pysähdys(%r, %r, %r, %r)' % (self.saapumisaika, self.lähtöaika, self.pysäkki, self.ajo) |
147 return 'Pysähdys(%r, %r, %r, %r)' % (self.saapumisaika, self.lähtöaika, self.pysäkki, self.ajo) |
142 |
148 |
143 linjat = {} |
149 linjat = {} |
144 linjat_per_tunniste = {} |
150 linjat_per_tunniste = {} |