def wrapper(*args, **kwargs): objects = f(*args, **kwargs) if objects[1] != 200: return objects #self is the first parameter, so the ressources region = i_manager.instances[args[0].region] if region and hasattr(region.scenario, 'extremes') and callable( region.scenario.extremes): datetime_before, datetime_after = region.scenario.extremes( objects[0]) else: datetime_before, datetime_after = self.extremes(objects[0]) if datetime_before and datetime_after: if not "links" in objects[0]: objects[0]["links"] = [] args = dict(deepcopy(request.args)) args["datetime"] = datetime_before.strftime(f_datetime) args["datetime_represents"] = "arrival" if "region" in kwargs: args["region"] = kwargs["region"] # Note, it's not the right thing to do, the rel should be 'next' and # the type 'journey' but for compatibility reason we cannot change before the v2 objects[0]["links"].append( create_external_link("v1.journeys", rel='prev', _type='prev', **args)) args["datetime"] = datetime_after.strftime(f_datetime) args["datetime_represents"] = "departure" objects[0]["links"].append( create_external_link("v1.journeys", rel='next', _type='next', **args)) datetime_first, datetime_last = self.first_and_last(objects[0]) if datetime_first and datetime_last: if not "links" in objects[0]: objects[0]["links"] = [] args = dict(deepcopy(request.args)) args["datetime"] = datetime_first.strftime(f_datetime) args["datetime_represents"] = "departure" if "region" in kwargs: args["region"] = kwargs["region"] objects[0]["links"].append( create_external_link("v1.journeys", rel='first', _type='first', **args)) args["datetime"] = datetime_last.strftime(f_datetime) args["datetime_represents"] = "arrival" objects[0]["links"].append( create_external_link("v1.journeys", rel='last', _type='last', **args)) return objects
def wrapper(*args, **kwargs): objects = f(*args, **kwargs) if objects[1] != 200: return objects if not "journeys" in objects[0].keys(): return objects if "region" in kwargs.keys(): del kwargs["region"] if "uri" in kwargs.keys(): kwargs["from"] = kwargs["uri"].split("/")[-1] del kwargs["uri"] if "lon" in kwargs.keys() and "lat" in kwargs.keys(): if not "from" in kwargs.keys(): kwargs["from"] = kwargs["lon"] + ';' + kwargs["lat"] del kwargs["lon"] del kwargs["lat"] for journey in objects[0]['journeys']: if not "sections" in journey.keys(): kwargs["datetime"] = journey["requested_date_time"] kwargs["to"] = journey["to"]["id"] journey['links'] = [ create_external_link("v1.journeys", rel="journeys", **kwargs) ] return objects
def wrapper(*args, **kwargs): response, status, other = f(*args, **kwargs) api = "departures" if "departures" in response else "arrivals" if "arrivals" in response else None if not api: return response, status, other passages = response[api] max_dt = "19000101T000000" min_dt = "29991231T235959" time_field = "arrival_date_time" if api == "arrivals" else "departure_date_time" for passage_ in passages: dt = passage_["stop_date_time"][time_field] if min_dt > dt: min_dt = dt if max_dt < dt: max_dt = dt if "links" not in response: response["links"] = [] kwargs_links = dict(deepcopy(request.args)) if "region" in kwargs: kwargs_links["region"] = kwargs["region"] if "uri" in kwargs: kwargs_links["uri"] = kwargs["uri"] if 'from_datetime' in kwargs_links: kwargs_links.pop('from_datetime') delta = datetime.timedelta(seconds=1) dt = datetime.datetime.strptime(min_dt, "%Y%m%dT%H%M%S") kwargs_links['until_datetime'] = (dt - delta).strftime("%Y%m%dT%H%M%S") response["links"].append( create_external_link("v1." + api, rel="prev", _type=api, **kwargs_links)) kwargs_links.pop('until_datetime') kwargs_links['from_datetime'] = ( datetime.datetime.strptime(max_dt, "%Y%m%dT%H%M%S") + delta).strftime("%Y%m%dT%H%M%S") response["links"].append( create_external_link("v1." + api, rel="next", _type=api, **kwargs_links)) return response, status, other