Exemplo n.º 1
0
    def __init__(self, endpoint, *args, **kwargs):
        ResourceUri.__init__(self, *args, **kwargs)
        ResourceUtc.__init__(self)
        self.endpoint = endpoint
        self.parsers["get"] = reqparse.RequestParser(argument_class=ArgumentDoc)
        parser_get = self.parsers["get"]
        parser_get.add_argument("filter", type=six.text_type)
        parser_get.add_argument("from_datetime", type=DateTimeFormat(), default=None,
                                help="The datetime from which you want the schedules")
        parser_get.add_argument("until_datetime", type=DateTimeFormat(), default=None,
                                help="The datetime until which you want the schedules")
        parser_get.add_argument("duration", type=int, default=3600 * 24,
                                help="Maximum duration between datetime and the retrieved stop time")
        parser_get.add_argument("depth", type=depth_argument, default=2)
        parser_get.add_argument("count", type=default_count_arg_type, default=10,
                                help="Number of schedules per page")
        parser_get.add_argument("start_page", type=int, default=0,
                                help="The current page")
        parser_get.add_argument("max_date_times", type=UnsignedInteger(), deprecated=True,
                                help="DEPRECATED, replaced by `items_per_schedule`")
        parser_get.add_argument("forbidden_id[]", type=six.text_type, deprecated=True,
                                help="DEPRECATED, replaced by `forbidden_uris[]`",
                                dest="__temporary_forbidden_id[]",
                                default=[],
                                action='append',
                                schema_metadata={'format': 'pt-object'})
        parser_get.add_argument("forbidden_uris[]", type=six.text_type,
                                help="forbidden uris",
                                dest="forbidden_uris[]",
                                default=[],
                                action='append',
                                schema_metadata={'format': 'pt-object'})
        parser_get.add_argument("calendar", type=six.text_type,
                                help="Id of the calendar")
        parser_get.add_argument("distance", type=int, default=200,
                                help="Distance range of the query. Used only if a coord is in the query")
        parser_get.add_argument("show_codes", type=BooleanType(), default=False,
                                help="show more identification codes")
        #Note: no default param for data freshness, the default depends on the API
        parser_get.add_argument("data_freshness",
                                help='freshness of the data. '
                                     'base_schedule is the long term planned schedule. '
                                     'adapted_schedule is for planned ahead disruptions (strikes, '
                                     'maintenances, ...). '
                                     'realtime is to have the freshest possible data',
                                type=OptionValue(['base_schedule', 'adapted_schedule', 'realtime']))
        parser_get.add_argument("_current_datetime", type=DateTimeFormat(),
                                schema_metadata={'default': 'now'}, hidden=True,
                                default=datetime.utcnow(),
                                help='The datetime considered as "now". Used for debug, default is '
                                     'the moment of the request. It will mainly change the output '
                                     'of the disruptions.')
        parser_get.add_argument("items_per_schedule", type=UnsignedInteger(), default=10000,
                                help="maximum number of date_times per schedule")
        parser_get.add_argument("disable_geojson", type=BooleanType(), default=False,
                                help="remove geojson from the response")

        self.get_decorators.insert(0, ManageError())
        self.get_decorators.insert(1, get_obj_serializer(self))
        self.get_decorators.append(complete_links(self))
 def __init__(self):
     super(
         GraphicalIsochrone,
         self).__init__(output_type_serializer=GraphicalIsrochoneSerializer)
     parser_get = self.parsers["get"]
     parser_get.add_argument("min_duration",
                             type=UnsignedInteger(),
                             default=0)
     parser_get.add_argument("boundary_duration[]",
                             type=UnsignedInteger(),
                             action="append")
Exemplo n.º 3
0
 def __init__(self):
     super(GraphicalIsochrone,
           self).__init__(output_type_serializer=None
                          )  #TODO implement and change to a real one
     parser_get = self.parsers["get"]
     parser_get.add_argument("min_duration",
                             type=UnsignedInteger(),
                             default=0)
     parser_get.add_argument("boundary_duration[]",
                             type=UnsignedInteger(),
                             action="append")
Exemplo n.º 4
0
def get_valid_unsigned_int(str):
    assert str != ""
    try:
        return UnsignedInteger()(str)
    except ValueError:
        assert False
Exemplo n.º 5
0
 def __init__(self):
     super(HeatMap, self).__init__(output_type_serializer=HeatMapSerializer)
     parser_get = self.parsers["get"]
     parser_get.add_argument("resolution", type=UnsignedInteger(), default=500)
Exemplo n.º 6
0
    def __init__(self, output_type_serializer):
        ResourceUri.__init__(self,
                             authentication=False,
                             output_type_serializer=output_type_serializer)
        ResourceUtc.__init__(self)

        modes = ["walking", "car", "bike", "bss"]
        types = {
            "all": "All types",
            "best": "The best journey",
            "rapid":
            "A good trade off between duration, changes and constraint respect",
            'no_train': "Journey without train",
            'comfort': "A journey with less changes and walking",
            'car': "A journey with car to get to the public transport",
            'less_fallback_walk': "A journey with less walking",
            'less_fallback_bike': "A journey with less biking",
            'less_fallback_bss': "A journey with less bss",
            'fastest': "A journey with minimum duration",
            'non_pt_walk': "A journey without public transport, only walking",
            'non_pt_bike': "A journey without public transport, only biking",
            'non_pt_bss':
            "A journey without public transport, only bike sharing",
        }
        data_freshnesses = {
            'base_schedule':
            'Use theoric schedule information',
            'realtime':
            'Use all realtime information',
            'adapted_schedule':
            'Use of adapted schedule information (like strike adjusting, etc.). '
            'Prefer `realtime` for traveler information as it will also contain '
            'adapted information schedule.'
        }
        parser_get = self.parsers["get"]

        parser_get.add_argument(
            "from",
            type=six.text_type,
            dest="origin",
            help='The id of the departure of your journey. '
            'If not provided an isochrone is computed.')
        parser_get.add_argument("to",
                                type=six.text_type,
                                dest="destination",
                                help='The id of the arrival of your journey. '
                                'If not provided an isochrone is computed.')
        parser_get.add_argument(
            "datetime",
            type=DateTimeFormat(),
            help='Date and time to go/arrive (see `datetime_represents`).\n'
            'Note: the datetime must be in the coverage’s publication period.')
        parser_get.add_argument(
            "datetime_represents",
            dest="clockwise",
            type=DatetimeRepresents(),
            default=True,
            help="Determine how datetime is handled.\n\n"
            "Possible values:\n"
            " * 'departure' - Compute journeys starting after datetime\n"
            " * 'arrival' - Compute journeys arriving before datetime")
        parser_get.add_argument("max_transfers",
                                type=int,
                                default=42,
                                hidden=True,
                                deprecated=True)
        parser_get.add_argument(
            "max_nb_transfers",
            type=int,
            dest="max_transfers",
            help='Maximum number of transfers in each journey')
        parser_get.add_argument(
            "min_nb_transfers",
            type=int,
            default=0,
            help='Minimum number of transfers in each journey')
        parser_get.add_argument(
            "first_section_mode[]",
            type=OptionValue(modes),
            dest="origin_mode",
            action="append",
            help='Force the first section mode '
            'if the first section is not a public transport one.\n'
            '`bss` stands for bike sharing system.\n'
            'Note 1: It’s an array, you can give multiple modes.\n'
            'Note 2: Choosing `bss` implicitly allows the walking mode since '
            'you might have to walk to the bss station.\n'
            'Note 3: The parameter is inclusive, not exclusive, '
            'so if you want to forbid a mode, you need to add all the other modes. '
            'Eg: If you never want to use a car, you need: '
            '`first_section_mode[]=walking&first_section_mode[]=bss&'
            'first_section_mode[]=bike&last_section_mode[]=walking&'
            'last_section_mode[]=bss&last_section_mode[]=bike`')
        parser_get.add_argument(
            "last_section_mode[]",
            type=OptionValue(modes),
            dest="destination_mode",
            action="append",
            help='Same as first_section_mode but for the last section.')
        # for retrocompatibility purpose, we duplicate (without []):
        parser_get.add_argument("first_section_mode",
                                hidden=True,
                                deprecated=True,
                                type=OptionValue(modes),
                                action="append")
        parser_get.add_argument("last_section_mode",
                                hidden=True,
                                deprecated=True,
                                type=OptionValue(modes),
                                action="append")

        parser_get.add_argument(
            "max_duration_to_pt",
            type=int,
            help="Maximal duration of non public transport in second")
        parser_get.add_argument(
            "max_walking_duration_to_pt",
            type=int,
            help="Maximal duration of walking on public transport in second")
        parser_get.add_argument(
            "max_bike_duration_to_pt",
            type=int,
            help="Maximal duration of bike on public transport in second")
        parser_get.add_argument(
            "max_bss_duration_to_pt",
            type=int,
            help="Maximal duration of bss on public transport in second")
        parser_get.add_argument(
            "max_car_duration_to_pt",
            type=int,
            help="Maximal duration of car on public transport in second")

        parser_get.add_argument(
            "walking_speed",
            type=float_gt_0,
            help='Walking speed for the fallback sections.\n'
            'Speed unit must be in meter/second')
        parser_get.add_argument(
            "bike_speed",
            type=float_gt_0,
            help='Biking speed for the fallback sections.\n'
            'Speed unit must be in meter/second')
        parser_get.add_argument(
            "bss_speed",
            type=float_gt_0,
            help='Speed while using a bike from a bike sharing system for the '
            'fallback sections.\n'
            'Speed unit must be in meter/second')
        parser_get.add_argument(
            "car_speed",
            type=float_gt_0,
            help='Driving speed for the fallback sections.\n'
            'Speed unit must be in meter/second')
        parser_get.add_argument(
            "forbidden_uris[]",
            type=six.text_type,
            action="append",
            help='If you want to avoid lines, modes, networks, etc.\n'
            'Note: the forbidden_uris[] concern only the public transport objects. '
            'You can’t for example forbid the use of the bike with them, '
            'you have to set the fallback modes for this '
            '(first_section_mode[] and last_section_mode[])')
        parser_get.add_argument(
            "allowed_id[]",
            type=six.text_type,
            action="append",
            help='If you want to use only a small subset of '
            'the public transport objects in your solution.\n'
            'Note: The constraint intersects with forbidden_uris[]. '
            'For example, if you ask for '
            '`allowed_id[]=line:A&forbidden_uris[]=physical_mode:Bus`, '
            'only vehicles of the line A that are not buses will be used.')
        parser_get.add_argument("type",
                                type=DescribedOptionValue(types),
                                default="all",
                                deprecated=True,
                                help='DEPRECATED, desired type of journey.',
                                hidden=True)
        parser_get.add_argument(
            "disruption_active",
            type=BooleanType(),
            default=False,
            deprecated=True,
            help='DEPRECATED, replaced by `data_freshness`.\n'
            'If true the algorithm takes the disruptions into account, '
            'and thus avoid disrupted public transport.\n'
            'Nota: `disruption_active=true` <=> `data_freshness=realtime`')
        # no default value for data_freshness because we need to maintain retrocomp with disruption_active
        parser_get.add_argument(
            "data_freshness",
            type=DescribedOptionValue(data_freshnesses),
            help="Define the freshness of data to use to compute journeys.\n"
            "When using the following parameter `&data_freshness=base_schedule` "
            "you can get disrupted journeys in the response. "
            "You can then display the disruption message to the traveler and "
            "make a `realtime` request to get a new undisrupted solution.")
        parser_get.add_argument(
            "max_duration",
            type=UnsignedInteger(),
            help='Maximum duration of journeys in secondes.\n'
            'Really useful when computing an isochrone.')
        parser_get.add_argument(
            "wheelchair",
            type=BooleanType(),
            default=None,
            help='If true the traveler is considered to be using a wheelchair, '
            'thus only accessible public transport are used.\n'
            'Be warned: many data are currently too faint to provide '
            'acceptable answers with this parameter on.')
        parser_get.add_argument(
            "traveler_type",
            type=OptionValue(acceptable_traveler_types),
            help=
            'Define speeds and accessibility values for different kind of people.\n'
            'Each profile also automatically determines appropriate first and '
            'last section modes to the covered area.\n'
            'Note: this means that you might get car, bike, etc. fallback routes '
            'even if you set `forbidden_uris[]`!\n'
            'You can overload all parameters '
            '(especially speeds, distances, first and last modes) by setting '
            'all of them specifically.\n'
            'We advise that you don’t rely on the traveler_type’s fallback modes '
            '(`first_section_mode[]` and `last_section_mode[]`) '
            'and set them yourself.')
        parser_get.add_argument(
            "_current_datetime",
            hidden=True,
            type=DateTimeFormat(),
            default=datetime.utcnow(),
            help="The datetime used to consider the state of the pt object.\n"
            "Default is the current date and it is used for debug.\n"
            "Note: it will mainly change the disruptions that concern "
            "the object. The timezone should be specified in the format, "
            "else we consider it as UTC")
        parser_get.add_argument(
            "direct_path",
            type=OptionValue(['indifferent', 'only', 'none']),
            default='indifferent',
            help="Specify if direct path should be suggested")
Exemplo n.º 7
0
 def __init__(self):
     super(HeatMap, self).__init__(output_type_serializer=None) #TODO implement and change to a real one
     parser_get = self.parsers["get"]
     parser_get.add_argument("resolution", type=UnsignedInteger(), default=500)