diff --git a/source/jormungandr/jormungandr/interfaces/v1/journey_common.py b/source/jormungandr/jormungandr/interfaces/v1/journey_common.py index a14ecaad32..67c47b8ffa 100644 --- a/source/jormungandr/jormungandr/interfaces/v1/journey_common.py +++ b/source/jormungandr/jormungandr/interfaces/v1/journey_common.py @@ -57,8 +57,9 @@ FloatRange, KeyValueType, PositiveFloat, + PositiveInteger, ) -from navitiacommon import type_pb2 +from navitiacommon import type_pb2, default_values BICYCLE_TYPES = [t for t, _ in type_pb2.BicycleType.items()] @@ -881,6 +882,21 @@ def __init__(self, output_type_serializer): hidden=True, help="whether or not to use predicted/historical traffic data for routing, it affects only car/car_no_park mode in Asgard", ) + parser_get.add_argument( + "_use_zonal_odt", + type=BooleanType(), + default=False, + hidden=True, + help="only available for Loki: " "Use zonal ODT in fallback.", + ) + parser_get.add_argument( + "_max_waiting_duration_odt", + type=PositiveInteger(), + default=default_values.max_waiting_duration_odt, + hidden=True, + help='A journey containing a waiting section between TC and Zonal ODT with a duration greater to max_waiting_duration_odt ' + 'will be discarded. Units : seconds. Must be > 0. Default value : 30 minutes', + ) def parse_args(self, region=None, uri=None): args = self.parsers['get'].parse_args() diff --git a/source/jormungandr/jormungandr/pt_planners/pt_planner.py b/source/jormungandr/jormungandr/pt_planners/pt_planner.py index e606404b63..c256485caa 100644 --- a/source/jormungandr/jormungandr/pt_planners/pt_planner.py +++ b/source/jormungandr/jormungandr/pt_planners/pt_planner.py @@ -79,6 +79,8 @@ def __init__( departure_coord=None, arrival_coord=None, global_max_speed=None, + use_zonal_odt=False, + max_waiting_duration_odt=default_values.max_waiting_duration_odt, ): self.max_duration = max_duration @@ -106,6 +108,8 @@ def __init__( self.departure_coord = departure_coord self.arrival_coord = arrival_coord self.global_max_speed = global_max_speed + self.use_zonal_odt = use_zonal_odt + self.max_waiting_duration_odt = max_waiting_duration_odt # Needed for GraphicalIsochrones diff --git a/source/jormungandr/jormungandr/scenarios/helper_classes/pt_journey.py b/source/jormungandr/jormungandr/scenarios/helper_classes/pt_journey.py index d1100aa92f..247fac5b32 100644 --- a/source/jormungandr/jormungandr/scenarios/helper_classes/pt_journey.py +++ b/source/jormungandr/jormungandr/scenarios/helper_classes/pt_journey.py @@ -344,6 +344,8 @@ def _create_parameters( if self._requested_dest_obj else None, global_max_speed=request["_global_max_speed"], + use_zonal_odt=request["_use_zonal_odt"], + max_waiting_duration_odt=request["_max_waiting_duration_odt"], ) def _async_request(self): diff --git a/source/jormungandr/jormungandr/utils.py b/source/jormungandr/jormungandr/utils.py index eeef4df700..1e76ec4f94 100644 --- a/source/jormungandr/jormungandr/utils.py +++ b/source/jormungandr/jormungandr/utils.py @@ -1094,6 +1094,8 @@ def _set_arrival_attractivity(stop_point_id, location): ) ) req.journeys.global_max_speed = journey_parameters.global_max_speed + req.journeys.use_zonal_odt = journey_parameters.use_zonal_odt + req.journeys.max_waiting_duration_odt = journey_parameters.max_waiting_duration_odt #################### return req diff --git a/source/navitia-proto b/source/navitia-proto index bbb31a948b..dc551b9b75 160000 --- a/source/navitia-proto +++ b/source/navitia-proto @@ -1 +1 @@ -Subproject commit bbb31a948b969e295e9607cf5208376fda42eb00 +Subproject commit dc551b9b754d0582ea2a2b22a646aa7f4eaba9e1 diff --git a/source/navitiacommon/navitiacommon/default_values.py b/source/navitiacommon/navitiacommon/default_values.py index 628faef3b7..1c33b54cb1 100644 --- a/source/navitiacommon/navitiacommon/default_values.py +++ b/source/navitiacommon/navitiacommon/default_values.py @@ -235,6 +235,8 @@ additional_parameters = False +max_waiting_duration_odt = 30 * 60 # 30 minutes + ghost_words = [] # type: List[str] # {