def fill_section(self, stat_section, resp_section, previous_section): tz = utils.get_timezone() if 'departure_date_time' in resp_section: stat_section.departure_date_time = tz_str_to_utc_timestamp(resp_section['departure_date_time'], tz) if 'arrival_date_time' in resp_section: stat_section.arrival_date_time = tz_str_to_utc_timestamp(resp_section['arrival_date_time'], tz) if 'duration' in resp_section: stat_section.duration = resp_section['duration'] if 'mode' in resp_section: stat_section.mode = get_mode(resp_section['mode'], previous_section) if 'type' in resp_section: stat_section.type = resp_section['type'] if 'from' in resp_section: section_from = resp_section['from'] self.fill_section_from(stat_section, section_from) if 'to' in resp_section: section_to = resp_section['to'] self.fill_section_to(stat_section, section_to) stat_section.vehicle_journey_id = self.get_section_link(resp_section, 'vehicle_journey') stat_section.line_id = self.get_section_link(resp_section, 'line') stat_section.route_id = self.get_section_link(resp_section, 'route') stat_section.network_id = self.get_section_link(resp_section, 'network') stat_section.physical_mode_id = self.get_section_link(resp_section, 'physical_mode') stat_section.commercial_mode_id = self.get_section_link(resp_section, 'commercial_mode') self.fill_section_display_informations(stat_section, resp_section)
def fill_journeys(self, stat_request, call_result): """ Fill journeys and sections for each journey (datetimes are all UTC) """ journey_request = stat_request.journey_request if hasattr(g, 'stat_interpreted_parameters' ) and g.stat_interpreted_parameters['original_datetime']: tz = utils.get_timezone() dt = g.stat_interpreted_parameters['original_datetime'] if dt.tzinfo is None: dt = tz.normalize(tz.localize(dt)) journey_request.requested_date_time = utils.date_to_timestamp( dt.astimezone(pytz.utc)) journey_request.clockwise = g.stat_interpreted_parameters[ 'clockwise'] if 'journeys' in call_result[0] and call_result[0]['journeys']: first_journey = call_result[0]['journeys'][0] origin = find_origin_admin(first_journey) if origin[0]: journey_request.departure_admin = origin[0] if origin[1]: journey_request.departure_insee = origin[1] if origin[2]: journey_request.departure_admin_name = origin[2] destination = find_destination_admin(first_journey) if destination[0]: journey_request.arrival_admin = destination[0] if destination[1]: journey_request.arrival_insee = destination[1] if destination[2]: journey_request.arrival_admin_name = destination[2] for resp_journey in call_result[0]['journeys']: stat_journey = stat_request.journeys.add() self.fill_journey(stat_journey, resp_journey) self.fill_sections(stat_journey, resp_journey)
def fill_journey(self, stat_journey, resp_journey): """" Fill journey and all sections from resp_journey. resp_journey is a OrderedDict and contains information of the node journeys in the result. """ init_journey(stat_journey) tz = utils.get_timezone() if 'requested_date_time' in resp_journey: stat_journey.requested_date_time = tz_str_to_utc_timestamp(resp_journey['requested_date_time'], tz) if 'departure_date_time' in resp_journey: stat_journey.departure_date_time = tz_str_to_utc_timestamp(resp_journey['departure_date_time'], tz) if 'arrival_date_time' in resp_journey: stat_journey.arrival_date_time = tz_str_to_utc_timestamp(resp_journey['arrival_date_time'], tz) if 'duration' in resp_journey: stat_journey.duration = resp_journey['duration'] if 'nb_transfers' in resp_journey: stat_journey.nb_transfers = resp_journey['nb_transfers'] if 'type' in resp_journey: stat_journey.type = resp_journey['type'] first_pt_section = None last_pt_section = None for section in resp_journey.get('sections', []): if 'type' in section and section['type'] == 'public_transport': if not first_pt_section: first_pt_section = section last_pt_section = section if first_pt_section and last_pt_section: stat_journey.first_pt_id = first_pt_section['from']['id'] stat_journey.first_pt_name = first_pt_section['from']['name'] self.fill_coord(stat_journey.first_pt_coord, first_pt_section['from'][first_pt_section['from']['embedded_type']]['coord']) admin = find_admin(first_pt_section['from']) if admin[0]: stat_journey.first_pt_admin_id = admin[0] if admin[1]: stat_journey.first_pt_admin_insee = admin[1] if admin[2]: stat_journey.first_pt_admin_name = admin[2] stat_journey.last_pt_id = last_pt_section['to']['id'] stat_journey.last_pt_name = last_pt_section['to']['name'] self.fill_coord(stat_journey.last_pt_coord, last_pt_section['to'][last_pt_section['to']['embedded_type']]['coord']) admin = find_admin(last_pt_section['to']) if admin[0]: stat_journey.last_pt_admin_id = admin[0] if admin[1]: stat_journey.last_pt_admin_insee = admin[1] if admin[2]: stat_journey.last_pt_admin_name = admin[2]