From 6ce0a46cdfe4fba76b4e0a77829705654d8a3d5c Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Fri, 19 Jun 2020 02:50:01 -0400 Subject: [PATCH] Add example for API pagination --- CTFd/api/v1/users.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/CTFd/api/v1/users.py b/CTFd/api/v1/users.py index 0ec2edf0..496b4bc2 100644 --- a/CTFd/api/v1/users.py +++ b/CTFd/api/v1/users.py @@ -33,16 +33,31 @@ class UserList(Resource): @check_account_visibility def get(self): if is_admin() and request.args.get("view") == "admin": - users = Users.query.filter_by() + users = Users.query.filter_by().paginate(max_per_page=50) else: - users = Users.query.filter_by(banned=False, hidden=False) + users = Users.query.filter_by(banned=False, hidden=False).paginate( + max_per_page=50 + ) - response = UserSchema(view="user", many=True).dump(users) + response = UserSchema(view="user", many=True).dump(users.items) if response.errors: return {"success": False, "errors": response.errors}, 400 - return {"success": True, "data": response.data} + return { + "meta": { + "pagination": { + "page": users.page, + "next": users.next_num, + "prev": users.prev_num, + "pages": users.pages, + "per_page": users.per_page, + "total": users.total, + } + }, + "success": True, + "data": response.data, + } @users_namespace.doc( params={