def get(self, region=None, lon=None, lat=None, uri=None, id=None): self.region = i_manager.get_region(region, lon, lat) args = self.parsers["get"].parse_args() # for retrocompatibility purpose for forbid_id in args['__temporary_forbidden_id[]']: args['forbidden_uris[]'].append(forbid_id) if id: args["filter"] = "calendar.uri=" + id elif uri: # Calendars of line args["filter"] = self.get_filter(split_uri(uri), args) else: args["filter"] = "" # change dt to utc args['_current_datetime'] = self.convert_to_utc( args['_current_datetime']) self._register_interpreted_parameters(args) response = i_manager.dispatch(args, "calendars", instance_name=self.region) return response
def get(self, region=None, lon=None, lat=None, uri=None): self.region = i_manager.get_region(region, lon, lat) timezone.set_request_timezone(self.region) args = self.parsers["get"].parse_args() if args['disable_geojson']: g.disable_geojson = True args["filter"] = self.get_filter(split_uri(uri), args) # change dt to utc args['_current_datetime'] = self.convert_to_utc( args['_current_datetime']) if args['since']: args['since'] = date_to_timestamp( self.convert_to_utc(args['since'])) if args['until']: args['until'] = date_to_timestamp( self.convert_to_utc(args['until'])) response = i_manager.dispatch(args, "line_reports", instance_name=self.region) return response
def get(self, region=None, lon=None, lat=None, uri=None): self.region = i_manager.get_region(region, lon, lat) timezone.set_request_timezone(self.region) args = self.parsers["get"].parse_args() if args['disable_geojson']: g.disable_geojson = True # for retrocompatibility purpose for forbid_id in args['__temporary_forbidden_id[]']: args['forbidden_uris[]'].append(forbid_id) args["filter"] = self.get_filter(split_uri(uri), args) since = args.get('since') until = args.get('until') if since and until and since > until: abort(400, message='until must be >= since') if since: args['since'] = date_to_timestamp(self.convert_to_utc(since)) if until: args['until'] = date_to_timestamp(self.convert_to_utc(until)) response = i_manager.dispatch(args, "traffic_reports", instance_name=self.region) return response
def get(self, region=None, lon=None, lat=None, uri=None): self.region = i_manager.get_region(region, lon, lat) timezone.set_request_timezone(self.region) args = self.parsers["get"].parse_args() instance = i_manager.instances.get(self.region) args["filter"] = self.get_filter(split_uri(uri), args) response = i_manager.dispatch(args, "vehicle_positions", instance_name=self.region) instance.external_service_provider_manager.manage_vehicle_positions( instance, response.vehicle_positions, **args) return response
def get(self, region=None, lon=None, lat=None, uri=None): self.region = i_manager.get_region(region, lon, lat) timezone.set_request_timezone(self.region) args = self.parsers["get"].parse_args() instance = i_manager.instances.get(self.region) args["filter"] = self.get_filter(split_uri(uri), args) # create filter if args["filter"] != "": args["filter"] += " and " + self._create_filter_equipment(instance) else: args["filter"] = self._create_filter_equipment(instance) logging.getLogger(__name__).debug("equipment provider filter: {}".format(args["filter"])) response = i_manager.dispatch(args, "equipment_reports", instance_name=self.region) return instance.equipment_provider_manager.manage_equipments_for_equipment_reports(response)
def get(self, region=None, lon=None, lat=None, uri=None): self.region = i_manager.get_region(region, lon, lat) timezone.set_request_timezone(self.region) args = self.parsers["get"].parse_args() if args['disable_geojson']: g.disable_geojson = True # for retrocompatibility purpose for forbid_id in args['__temporary_forbidden_id[]']: args['forbidden_uris[]'].append(forbid_id) args["filter"] = self.get_filter(split_uri(uri), args) response = i_manager.dispatch(args, "traffic_reports", instance_name=self.region) return response
def get(self, region=None, lon=None, lat=None, uri=None, id=None): args = self.parsers["get"].parse_args() if args['disable_geojson']: g.disable_geojson = True # for retrocompatibility purpose for forbid_id in args['__temporary_forbidden_id[]']: args['forbidden_uris[]'].append(forbid_id) if "odt_level" in args and args[ "odt_level"] != "all" and "lines" not in self.collection: abort(404, message= "bad request: odt_level filter can only be applied to lines") if args.get("external_code") is not None: type_ = collections_to_resource_type[self.collection] if all(obj is None for obj in (region, lat, lon)): for instance in i_manager.get_regions(): res = i_manager.instances[instance].has_external_code( type_, args["external_code"]) if res: region = instance id = res break if not region: abort(404, message= "Unable to find an object for the external_code %s" % args["external_code"]) else: id = i_manager.instances[region].has_external_code( type_, args["external_code"]) if id == None: abort(404, message= "Unable to find an object for the external_code %s" % args["external_code"]) self.region = i_manager.get_region(region, lon, lat) # we store the region in the 'g' object, which is local to a request set_request_timezone(self.region) # change dt to utc args['_current_datetime'] = self.convert_to_utc( args['_current_datetime']) if args['since']: args['_original_since'] = args['since'] args['since'] = date_to_timestamp( self.convert_to_utc(args['since'])) if args['until']: args['_original_until'] = args['until'] args['until'] = date_to_timestamp( self.convert_to_utc(args['until'])) if not self.region: return {"error": "No region"}, 404 uris = [] if uri: uris = split_uri(uri) if self.collection is None: self.collection = uris[-1] if len(uris) % 2 != 0 else uris[-2] args["filter"] = self.get_filter(uris, args) if self.collection and id: f = u'{o}.uri={v}'.format( o=collections_to_resource_type[self.collection], v=protect(id)) if args.get("filter"): args["filter"] = '({}) and {}'.format(args["filter"], f) else: args["filter"] = f response = i_manager.dispatch(args, self.collection, instance_name=self.region) return response
def get(self, uri=None, region=None, lon=None, lat=None): args = self.parsers["get"].parse_args() # for retrocompatibility purpose for forbid_id in args['__temporary_forbidden_id[]']: args['forbidden_uris[]'].append(forbid_id) args["nb_stoptimes"] = args["count"] if args['disable_geojson']: g.disable_geojson = True # retrocompatibility if args['max_date_times'] is not None: args['items_per_schedule'] = args['max_date_times'] if uri is None: if not args['filter']: raise InvalidArguments('filter') first_filter = args["filter"].lower().split("and")[0].strip() parts = first_filter.lower().split("=") if len(parts) != 2: error = "Unable to parse filter {filter}" return {"error": error.format(filter=args["filter"])}, 503 else: self.region = i_manager.get_region(object_id=parts[1].strip()) else: self.collection = 'schedules' args["filter"] = self.get_filter(split_uri(uri), args) self.region = i_manager.get_region(region, lon, lat) timezone.set_request_timezone(self.region) # create direction type filter if args['direction_type']: args['filter'] = self._add_direction_type_filter( args['direction_type'], args['filter']) logging.getLogger(__name__).debug("Schedule filter: %s", args["filter"]) if not args["from_datetime"] and not args["until_datetime"]: # no datetime given, default is the current time, and we activate the realtime args['from_datetime'] = args['_current_datetime'] if args["calendar"]: # if we have a calendar, the dt is only used for sorting, so 00:00 is fine args['from_datetime'] = args['from_datetime'].replace(hour=0, minute=0) elif not args.get('calendar'): # if a calendar is given all times will be given in local (because the calendar might span over dst) if args['from_datetime']: args['from_datetime'] = self.convert_to_utc( args['from_datetime']) if args['until_datetime']: args['until_datetime'] = self.convert_to_utc( args['until_datetime']) # we save the original datetime for debugging purpose args['original_datetime'] = args['from_datetime'] if args['from_datetime']: args['from_datetime'] = utils.date_to_timestamp( args['from_datetime']) if args['until_datetime']: args['until_datetime'] = utils.date_to_timestamp( args['until_datetime']) if not args['data_freshness']: args['data_freshness'] = self._get_default_freshness() if not args["from_datetime"] and args[ "until_datetime"] and self.endpoint[:4] == "next": self.endpoint = "previous" + self.endpoint[4:] # Add timezone in request for availability in greenlet args['timezone'] = timezone.get_timezone() self._register_interpreted_parameters(args) return i_manager.dispatch(args, self.endpoint, instance_name=self.region)