Пример #1
0
 def geo_status(self, request, instance):
     req = request_pb2.Request()
     req.requested_api = type_pb2.geo_status
     resp = instance.send_and_receive(req)
     return resp
Пример #2
0
def create_pb_request(requested_type, request, dep_mode, arr_mode):
    """Parse the request dict and create the protobuf version"""
    # TODO: bench if the creation of the request each time is expensive
    req = request_pb2.Request()
    req.requested_api = requested_type
    req._current_datetime = date_to_timestamp(request['_current_datetime'])

    if "origin" in request and request["origin"]:
        if requested_type != type_pb2.NMPLANNER:
            origins, durations = ([request["origin"]], [0])
        else:
            # in the n-m query, we have several origin points, with their corresponding access duration
            origins, durations = (request["origin"],
                                  request["origin_access_duration"])
        for place, duration in zip(origins, durations):
            location = req.journeys.origin.add()
            location.place = place
            location.access_duration = duration
    if "destination" in request and request["destination"]:
        if requested_type != type_pb2.NMPLANNER:
            destinations, durations = ([request["destination"]], [0])
        else:
            destinations, durations = (request["destination"],
                                       request["destination_access_duration"])
        for place, duration in zip(destinations, durations):
            location = req.journeys.destination.add()
            location.place = place
            location.access_duration = duration

    req.journeys.datetimes.append(
        request["datetime"]
    )  # TODO remove this datetime list completly in another PR

    req.journeys.clockwise = request["clockwise"]
    sn_params = req.journeys.streetnetwork_params
    sn_params.max_walking_duration_to_pt = request[
        "max_walking_duration_to_pt"]
    sn_params.max_bike_duration_to_pt = request["max_bike_duration_to_pt"]
    sn_params.max_bss_duration_to_pt = request["max_bss_duration_to_pt"]
    sn_params.max_car_duration_to_pt = request["max_car_duration_to_pt"]
    sn_params.max_car_no_park_duration_to_pt = request[
        "max_car_no_park_duration_to_pt"]
    sn_params.walking_speed = request["walking_speed"]
    sn_params.bike_speed = request["bike_speed"]
    sn_params.car_speed = request["car_speed"]
    sn_params.bss_speed = request["bss_speed"]
    sn_params.car_no_park_speed = request["car_no_park_speed"]
    sn_params.origin_filter = request.get("origin_filter", "")
    sn_params.destination_filter = request.get("destination_filter", "")
    # we always want direct path, even for car
    sn_params.enable_direct_path = True

    # settings fallback modes
    sn_params.origin_mode = dep_mode
    sn_params.destination_mode = arr_mode

    req.journeys.max_duration = request["max_duration"]
    req.journeys.max_transfers = request["max_transfers"]
    if request["max_extra_second_pass"]:
        req.journeys.max_extra_second_pass = request["max_extra_second_pass"]
    req.journeys.wheelchair = request[
        "wheelchair"] or False  # default value is no wheelchair
    req.journeys.realtime_level = get_pb_data_freshness(request)

    if "details" in request and request["details"]:
        req.journeys.details = request["details"]

    req.journeys.walking_transfer_penalty = request[
        '_walking_transfer_penalty']

    for forbidden_uri in get_or_default(request, "forbidden_uris[]", []):
        req.journeys.forbidden_uris.append(forbidden_uri)
    for allowed_id in get_or_default(request, "allowed_id[]", []):
        req.journeys.allowed_id.append(allowed_id)

    req.journeys.bike_in_pt = (dep_mode == 'bike') and (arr_mode == 'bike')

    if request["free_radius_from"]:
        req.journeys.free_radius_from = request["free_radius_from"]
    if request["free_radius_to"]:
        req.journeys.free_radius_to = request["free_radius_to"]

    if request["min_nb_journeys"]:
        req.journeys.min_nb_journeys = request["min_nb_journeys"]

    req.journeys.night_bus_filter_max_factor = request[
        '_night_bus_filter_max_factor']
    req.journeys.night_bus_filter_base_factor = request[
        '_night_bus_filter_base_factor']

    if request['timeframe_duration']:
        req.journeys.timeframe_duration = int(request['timeframe_duration'])

    req.journeys.depth = request['depth']

    return req
Пример #3
0
 def metadatas(self, request, instance):
     req = request_pb2.Request()
     req.requested_api = type_pb2.METADATAS
     resp = instance.send_and_receive(req)
     return resp
Пример #4
0
 def place_uri(self, request, instance):
     req = request_pb2.Request()
     req.requested_api = type_pb2.place_uri
     req.place_uri.uri = request["uri"]
     req._current_datetime = date_to_timestamp(request['_current_datetime'])
     return instance.send_and_receive(req)
Пример #5
0
def create_pb_request(requested_type, request, dep_mode, arr_mode):
    """Parse the request dict and create the protobuf version"""
    #TODO: bench if the creation of the request each time is expensive
    req = request_pb2.Request()
    req.requested_api = requested_type

    if "origin" in request and request["origin"]:
        if requested_type != type_pb2.NMPLANNER:
            origins, durations = ([request["origin"]], [0])
        else:
            # in the n-m query, we have several origin points, with their corresponding access duration
            origins, durations = (request["origin"],
                                  request["origin_access_duration"])
        for place, duration in zip(origins, durations):
            location = req.journeys.origin.add()
            location.place = place
            location.access_duration = duration
    if "destination" in request and request["destination"]:
        if requested_type != type_pb2.NMPLANNER:
            destinations, durations = ([request["destination"]], [0])
        else:
            destinations, durations = (request["destination"],
                                       request["destination_access_duration"])
        for place, duration in zip(destinations, durations):
            location = req.journeys.destination.add()
            location.place = place
            location.access_duration = duration

    req.journeys.datetimes.append(
        request["datetime"]
    )  #TODO remove this datetime list completly in another PR

    req.journeys.clockwise = request["clockwise"]
    sn_params = req.journeys.streetnetwork_params
    sn_params.max_walking_duration_to_pt = request[
        "max_walking_duration_to_pt"]
    sn_params.max_bike_duration_to_pt = request["max_bike_duration_to_pt"]
    sn_params.max_bss_duration_to_pt = request["max_bss_duration_to_pt"]
    sn_params.max_car_duration_to_pt = request["max_car_duration_to_pt"]
    sn_params.walking_speed = request["walking_speed"]
    sn_params.bike_speed = request["bike_speed"]
    sn_params.car_speed = request["car_speed"]
    sn_params.bss_speed = request["bss_speed"]
    sn_params.origin_filter = request.get("origin_filter", "")
    sn_params.destination_filter = request.get("destination_filter", "")

    #settings fallback modes
    sn_params.origin_mode = dep_mode
    sn_params.destination_mode = arr_mode

    req.journeys.max_duration = request["max_duration"]
    req.journeys.max_transfers = request["max_transfers"]
    req.journeys.wheelchair = request["wheelchair"]
    req.journeys.disruption_active = request["disruption_active"]
    req.journeys.show_codes = request["show_codes"]

    if "details" in request and request["details"]:
        req.journeys.details = request["details"]

    for forbidden_uri in get_or_default(request, "forbidden_uris[]", []):
        req.journeys.forbidden_uris.append(forbidden_uri)

    return req
Пример #6
0
 def get_odt_stop_points(self, coord):
     req = request_pb2.Request()
     req.requested_api = type_pb2.odt_stop_points
     req.coord.lon = coord.lon
     req.coord.lat = coord.lat
     return self.instance.send_and_receive(req).stop_points
Пример #7
0
    def parse_journey_request(self, requested_type, request):
        """Parse the request dict and create the protobuf version"""
        req = request_pb2.Request()
        req.requested_api = requested_type
        if "origin" in request and request["origin"]:
            if requested_type != type_pb2.NMPLANNER:
                origins = ([request["origin"]], [0])
            else:
                origins = (request["origin"],
                           request["origin_access_duration"])
            for i in range(0, len(origins[0])):
                location = req.journeys.origin.add()
                location.place = origins[0][i]
                location.access_duration = origins[1][i]
        if "destination" in request and request["destination"]:
            if requested_type != type_pb2.NMPLANNER:
                destinations = ([request["destination"]], [0])
            else:
                destinations = (request["destination"],
                                request["destination_access_duration"])
            for i in range(0, len(destinations[0])):
                location = req.journeys.destination.add()
                location.place = destinations[0][i]
                location.access_duration = destinations[1][i]
            self.destination_modes = request["destination_mode"]
        else:
            self.destination_modes = ["walking"]
        if "datetime" in request and request["datetime"]:
            if isinstance(request["datetime"], int):
                request["datetime"] = [request["datetime"]]
            for dte in request["datetime"]:
                req.journeys.datetimes.append(dte)
        req.journeys.clockwise = request["clockwise"]
        sn_params = req.journeys.streetnetwork_params
        sn_params.max_walking_duration_to_pt = request[
            "max_walking_duration_to_pt"]
        sn_params.max_bike_duration_to_pt = request["max_bike_duration_to_pt"]
        sn_params.max_bss_duration_to_pt = request["max_bss_duration_to_pt"]
        sn_params.max_car_duration_to_pt = request["max_car_duration_to_pt"]
        sn_params.walking_speed = request["walking_speed"]
        sn_params.bike_speed = request["bike_speed"]
        sn_params.car_speed = request["car_speed"]
        sn_params.bss_speed = request["bss_speed"]
        if "origin_filter" in request:
            sn_params.origin_filter = request["origin_filter"]
        else:
            sn_params.origin_filter = ""
        if "destination_filter" in request:
            sn_params.destination_filter = request["destination_filter"]
        else:
            sn_params.destination_filter = ""
        req.journeys.max_duration = request["max_duration"]
        req.journeys.max_transfers = request["max_transfers"]
        if request["max_extra_second_pass"]:
            req.journeys.max_extra_second_pass = request[
                "max_extra_second_pass"]
        req.journeys.wheelchair = request[
            "wheelchair"] or False  # default value is no wheelchair

        if request['data_freshness'] == 'realtime':
            req.journeys.realtime_level = request_pb2.REAL_TIME
        elif request['data_freshness'] == 'adapted_schedule':
            req.journeys.realtime_level = request_pb2.ADAPTED
        else:
            req.journeys.realtime_level = request_pb2.BASE

        req.journeys.show_codes = request["show_codes"]
        if "details" in request and request["details"]:
            req.journeys.details = request["details"]

        self.origin_modes = request["origin_mode"]

        if req.journeys.streetnetwork_params.origin_mode == "bike_rental":
            req.journeys.streetnetwork_params.origin_mode = "bss"
        if req.journeys.streetnetwork_params.destination_mode == "bike_rental":
            req.journeys.streetnetwork_params.destination_mode = "bss"
        if "forbidden_uris[]" in request and request["forbidden_uris[]"]:
            for forbidden_uri in request["forbidden_uris[]"]:
                req.journeys.forbidden_uris.append(forbidden_uri)
        if not "type" in request:
            request["type"] = "all"  #why ?

        #for the default scenario, we filter the walking if we have walking + bss

        # Technically, bss mode enable walking (if it is better than bss)
        # so if the user ask for walking and bss, we only keep bss
        for fallback_modes in self.origin_modes, self.destination_modes:
            if 'walking' in fallback_modes and 'bss' in fallback_modes:
                fallback_modes.remove('walking')

        return req
Пример #8
0
 def place(self, place):
     req = request_pb2.Request()
     req.requested_api = type_pb2.place_uri
     req.place_uri.uri = place
     response = self.instance.send_and_receive(req)
     return response.places[0]
Пример #9
0
 def get_uri(self, uri, instance=None, current_datetime=None):
     req = request_pb2.Request()
     req.requested_api = type_pb2.place_uri
     req.place_uri.uri = uri
     req._current_datetime = date_to_timestamp(current_datetime)
     return instance.send_and_receive(req)
Пример #10
0
 def place_uri(self, request, instance):
     req = request_pb2.Request()
     req.requested_api = type_pb2.place_uri
     req.place_uri.uri = request["uri"]
     return instance.send_and_receive(req)
Пример #11
0
 def load(self, request, instance, format):
     req = request_pb2.Request()
     req.requested_api = type_pb2.LOAD
     resp = instance.send_and_receive(req)
     return render_from_protobuf(resp, format,
                                 request.arguments.get('callback'))