def dispatch_request(self): limit_str = request.args.get(PaginationKeys.limit, None) max_limit = current_app.config['MAX_QUERY_LIMIT'] if not limit_str: limit = current_app.config['DEFAULT_QUERY_LIMIT'] else: try: limit = int(limit_str) except ValueError: raise InvalidQueryString( querystring_key=PaginationKeys.limit, querystring_value=limit_str, reason="Please supply an integer-valued row-limit.") if limit > max_limit: raise LimitMaxExceeded(limit, max_limit) q = self.get_query() q = apply_filters(q, request.args) q = self.set_ordering(q) q = q.limit(limit) q = q.offset(request.args.get(PaginationKeys.offset)) result = self.process_query(q) resultdict = make_response_dict(result) # Also return the query limit-value for ListView # This is useful if no limit specified in query, so default applies. resultdict[ResultKeys.limit] = limit return jsonify(resultdict)
def dispatch_request(self): q = self.get_query() q = apply_filters(q, request.args) result = self.process_query(q) return jsonify(make_response_dict(result))