pagination improved

This commit is contained in:
Martin
2016-09-02 12:51:14 +02:00
parent 298d213e76
commit bb2e2abad0
4 changed files with 33 additions and 41 deletions
+12
View File
@@ -15,3 +15,15 @@ def check_api_key():
response, 401,
{'WWW-Authenticate': 'Basic realm="Login Required"'}
)
def pagination_to_dict(pagination):
return {
'page': pagination.page,
'pages': pagination.pages,
'next_num': pagination.next_num,
'per_page': pagination.per_page,
'has_next': pagination.has_next,
'has_prev': pagination.has_prev,
'total': pagination.total
}
+4 -5
View File
@@ -1,6 +1,7 @@
from flask import Blueprint, request, jsonify
from api import db, tasks
from api.models import Category
from api.helpers import pagination_to_dict
mod = Blueprint('categories', __name__, url_prefix='/categories')
@@ -9,15 +10,13 @@ mod = Blueprint('categories', __name__, url_prefix='/categories')
def list():
page = request.args.get('page', 1, type=int)
per_page = request.args.get('per_page', 10, type=int)
categories = Category.query.paginate(page=page, per_page=per_page).items
pagination = Category.query.paginate(page=page, per_page=per_page)
j = {
'page': page,
'per_page': per_page,
'data': [c.to_json() for c in categories]
'pagination': pagination_to_dict(pagination),
'data': [item.to_json() for item in pagination.items]
}
return jsonify(j)
@mod.route("/<int:id>", methods=["GET"])
def show(id):
category = Category.query.get_or_404(id)
+4 -4
View File
@@ -2,6 +2,7 @@ from flask import Blueprint, request, jsonify
from api import db, tasks
from api.models import Designer
from api.validators import validate_keys_exists
from api.helpers import pagination_to_dict
mod = Blueprint('designers', __name__, url_prefix='/designers')
@@ -11,11 +12,10 @@ mod = Blueprint('designers', __name__, url_prefix='/designers')
def list():
page = request.args.get('page', 1, type=int)
per_page = request.args.get('per_page', 10, type=int)
designers = Designer.query.paginate(page=page, per_page=per_page).items
pagination = Designer.query.paginate(page=page, per_page=per_page)
j = {
'page': page,
'per_page': per_page,
'data': [d.to_json() for d in designers]
'pagination': pagination_to_dict(pagination),
'data': [item.to_json() for item in pagination.items]
}
return jsonify(j)