Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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))