def _requires_url_attribute_check(self, request, *args, **kwargs): if param in kwargs: return fn(self, request, *args, **kwargs) else: return api_error( "{0} requests to {1} should contain {2} in the url".format( fn.__name__, request.build_absolute_uri(), param))
def _check(self, request, *args, **kwargs): for param, type_ in types.items(): try: kwargs[param] = type_(kwargs[param]) if type_ == bool: if kwargs[param].lower() == "true": kwargs[param] = True elif kwargs[param].lower() == "false": kwargs[param] = False else: kwargs[param] = type_(param) except KeyError: # If there isn't a parameter to type check we assume # that the default was declared as a default parameter # to the function pass except ValueError: return api_error( "{0} parameter must be of type {1}".format( param, type_ ) ) return fn(self, request, *args, **kwargs)
def _check(self, request, *args, **kwargs): if param in kwargs and not func(kwargs[param]): return api_error( "{0} {1}".format(param, description), "Parameter Error" ) else: return fn(self, request, *args, **kwargs)
def _requires_parameters_check(self, request, *args, **kwargs): if set(params) <= set(request.REQUEST): return fn(self, request, *args, **kwargs) else: return api_error( "{0} reqs to {1} should contain the {2} parameter".format( fn.__name__, request.build_absolute_uri(), set(params) - set(request.REQUEST)))
def _transform(self, request, *args, **kwargs): if param in kwargs: try: kwargs[param] = func(kwargs[param]) except: return api_error( "the {0} parameter could not be parsed".format(param), "Parameter Error") return fn(self, request, *args, **kwargs)
def _transform(self, request, *args, **kwargs): if param in kwargs: try: kwargs[param] = func(kwargs[param]) except: return api_error( "the {0} parameter could not be parsed".format(param), "Parameter Error" ) return fn(self, request, *args, **kwargs)
def _check(self, request, *args, **kwargs): if param in kwargs: return fn(self, request, *args, **kwargs) else: return api_error( "{0} requests to {1} should contain {2} in the url".format( fn.__name__, request.build_absolute_uri(), param ) )
def _check(self, request, *args, **kwargs): if set(params) <= set(request.REQUEST): return fn(self, request, *args, **kwargs) else: return api_error( "{0} reqs to {1} should contain the {2} parameter".format( fn.__name__, request.build_absolute_uri(), set(params) - set(request.REQUEST) ) )
def _check(self, request, *args, **kwargs): if "If-Range" in request.META: newest_id = request.META["If-Range"] elif "_if_range" in request.REQUEST: newest_id = request.REQUEST["_if_range"] else: return fn(self, request, *args, **kwargs) # Force newest_id to be a string newest_id = str(newest_id) # Call the underlying function and get the response response = fn(self, request, *args, **kwargs) # Convert to JSON response = json.loads(response.content) # Grab the full list of elements out of the response if "error" in response: return api_error( response["error"]["message"], error_type=response["error"]["type"]) elements = value_for_keypath(response, keypath) meta_info = { k: v for k, v in response.items() if k != "data" } # Get the index of the element which is the "newest" # element (newest) is passed in, in the list so we # can slice the list and only return elements newer # than that idx = find( newest_id, [ str(elm[element_key]) for elm in elements ] )[0] set_value_for_keypath(response, keypath, elements[:idx]) return api_out(response["data"], meta_info)