def _add_prev_link(self, resp, params, clockwise): journeys = self.filter_journeys(resp.journeys) if not journeys: return None next_journey = max(journeys, key=lambda j: j.arrival_date_time) params['datetime'] = timestamp_to_str(next_journey.arrival_date_time - 60) params['datetime_represents'] = 'arrival' add_link(resp, rel='prev', **params)
def _add_next_link(self, resp, params, clockwise): journeys = self.filter_journeys(resp.journeys) if not journeys: return None next_journey = max(journeys, key=lambda j: j.departure_date_time) params['datetime'] = timestamp_to_str( next_journey.departure_date_time + 60) params['datetime_represents'] = 'departure' add_link(resp, rel='next', **params)
def _add_bypass_disruptions_link(self, resp, params): # find first impact with a NO_SERVICE severity if 'realtime' in params.get('data_freshness', []): return found = next((True for impact in resp.impacts if impact.severity.effect == Severity.NO_SERVICE), False) if found: cloned_params = copy.deepcopy(params) cloned_params['data_freshness'] = 'realtime' add_link(resp, rel='bypass_disruptions', **cloned_params)
def _add_first_last_links(self, resp, params): soonest_departure_ts = min(j.departure_date_time for j in resp.journeys) soonest_departure = timestamp_to_datetime(soonest_departure_ts) if soonest_departure: soonest_departure = soonest_departure.replace(hour=0, minute=0, second=0) params['datetime'] = dt_to_str(soonest_departure) params['datetime_represents'] = 'departure' add_link(resp, rel='first', **params) tardiest_arrival_ts = max(j.arrival_date_time for j in resp.journeys) tardiest_arrival = timestamp_to_datetime(tardiest_arrival_ts) if tardiest_arrival: tardiest_arrival = tardiest_arrival.replace(hour=23, minute=59, second=59) params['datetime'] = dt_to_str(tardiest_arrival) params['datetime_represents'] = 'arrival' add_link(resp, rel='last', **params)
def _add_next_link(self, resp, params, clockwise): next_dt = self.next_journey_datetime(resp.journeys, clockwise) if next_dt is not None: params['datetime'] = timestamp_to_str(next_dt) params['datetime_represents'] = 'departure' add_link(resp, rel='next', **params)
def _add_prev_link(self, resp, params, clockwise): prev_dt = self.previous_journey_datetime(resp.journeys, clockwise) if prev_dt is not None: params['datetime'] = timestamp_to_str(prev_dt) params['datetime_represents'] = 'arrival' add_link(resp, rel='prev', **params)
def _add_ridesharing_link(self, resp, params, instance): req = request.args.to_dict(flat=False) req['partner_services[]'] = 'ridesharing' req['datetime'] = dt_to_str(params.original_datetime) req['region'] = instance.name add_link(resp, rel='ridesharing_journeys', **req)