Merge pull request #1929 from alphagov/paginate-complaints

Paginate complaints
This commit is contained in:
Katie Smith
2018-07-04 15:34:46 +01:00
committed by GitHub
5 changed files with 80 additions and 15 deletions

View File

@@ -1,13 +1,12 @@
from datetime import datetime
from flask import Blueprint, jsonify, request
from sqlalchemy import desc
from app.complaint.complaint_schema import complaint_count_request
from app.dao.complaint_dao import fetch_count_of_complaints
from app.dao.complaint_dao import fetch_count_of_complaints, fetch_paginated_complaints
from app.errors import register_errors
from app.models import Complaint
from app.schema_validation import validate
from app.utils import pagination_links
complaint_blueprint = Blueprint('complaint', __name__, url_prefix='/complaint')
@@ -16,9 +15,17 @@ register_errors(complaint_blueprint)
@complaint_blueprint.route('', methods=['GET'])
def get_all_complaints():
complaints = Complaint.query.order_by(desc(Complaint.created_at)).all()
page = int(request.args.get('page', 1))
pagination = fetch_paginated_complaints(page=page)
return jsonify([x.serialize() for x in complaints]), 200
return jsonify(
complaints=[x.serialize() for x in pagination.items],
links=pagination_links(
pagination,
'.get_all_complaints',
**request.args.to_dict()
)
), 200
@complaint_blueprint.route('/count-by-date-range', methods=['GET'])

View File

@@ -1,5 +1,6 @@
from datetime import timedelta
from flask import current_app
from sqlalchemy import desc
from app import db
@@ -13,6 +14,15 @@ def save_complaint(complaint):
db.session.add(complaint)
def fetch_paginated_complaints(page=1):
return Complaint.query.order_by(
desc(Complaint.created_at)
).paginate(
page=page,
per_page=current_app.config['PAGE_SIZE']
)
def fetch_complaints_by_service(service_id):
return Complaint.query.filter_by(service_id=service_id).order_by(desc(Complaint.created_at)).all()