示例#1
0
    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)
示例#2
0
 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)
示例#3
0
    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]