From dbe44004418da5fe62d3c70a7b60e4e24c310357 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Mon, 10 Oct 2016 14:50:59 +0100 Subject: [PATCH] paginate jobs page (only views/jobs/jobs.html, which is the drill-down page, not the dashboard view) --- app/main/views/jobs.py | 54 ++++++++++--------- app/notify_client/job_api_client.py | 4 +- .../components/previous-next-navigation.html | 4 +- app/templates/views/jobs/jobs.html | 2 + 4 files changed, 35 insertions(+), 29 deletions(-) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 90e12d26e..d47cf124b 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- import ago -import time import dateutil -import json from orderedset import OrderedSet from datetime import datetime, timedelta, timezone from itertools import chain @@ -29,7 +27,8 @@ from app import ( from app.main import main from app.utils import ( get_page_from_request, - generate_previous_next_dict, + generate_next_dict, + generate_previous_dict, user_has_permissions, generate_notifications_csv, get_help_argument @@ -66,6 +65,7 @@ def _set_status_filters(filter_args): @login_required @user_has_permissions('view_activity', admin_override=True) def view_jobs(service_id): + page = int(request.args.get('page', 1)) # all but scheduled and cancelled statuses_to_display = [ 'pending', @@ -73,12 +73,26 @@ def view_jobs(service_id): 'finished', 'sending limits exceeded', ] + jobs_response = job_api_client.get_jobs(service_id, statuses=statuses_to_display, page=page) + jobs = [ + add_rate_to_job(job) for job in jobs_response['data'] + if job['original_file_name'] != current_app.config['TEST_MESSAGE_FILENAME'] + ] + + + prev_page = None + if jobs_response['links'].get('prev', None): + prev_page = generate_previous_dict('main.view_jobs', service_id, page=page - 1) + next_page = None + if jobs_response['links'].get('next', None): + next_page = generate_next_dict('main.view_jobs', service_id, page=page + 1) + return render_template( 'views/jobs/jobs.html', - jobs=[ - add_rate_to_job(job) for job in job_api_client.get_jobs(service_id, statuses=statuses_to_display)['data'] - if job['original_file_name'] != current_app.config['TEST_MESSAGE_FILENAME'] - ] + jobs=jobs, + page=page, + prev_page=prev_page, + next_page=next_page, ) @@ -213,28 +227,18 @@ def get_notifications(service_id, message_type, status_override=None): template_type=[message_type], status=filter_args.get('status'), limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS']) - view_dict = dict( - message_type=message_type, - status=request.args.get('status') - ) + + url_args = { + 'message_type': message_type, + 'status': request.args.get('status') + } prev_page = None if notifications['links'].get('prev', None): - prev_page = generate_previous_next_dict( - 'main.view_notifications', - service_id, - view_dict, - page - 1, - 'Previous page', - 'page {}'.format(page - 1)) + prev_page = generate_previous_dict('main.view_notifications', service_id, page - 1, url_args=url_args) next_page = None if notifications['links'].get('next', None): - next_page = generate_previous_next_dict( - 'main.view_notifications', - service_id, - view_dict, - page + 1, - 'Next page', - 'page {}'.format(page + 1)) + next_page = generate_next_dict('main.view_notifications', service_id, page + 1, url_args) + if request.path.endswith('csv'): csv_content = generate_notifications_csv( notification_api_client.get_notifications_for_service( diff --git a/app/notify_client/job_api_client.py b/app/notify_client/job_api_client.py index e04d18937..0d0874bd6 100644 --- a/app/notify_client/job_api_client.py +++ b/app/notify_client/job_api_client.py @@ -38,8 +38,8 @@ class JobApiClient(BaseAPIClient): return job - def get_jobs(self, service_id, limit_days=None, statuses=None): - params = {} + def get_jobs(self, service_id, limit_days=None, statuses=None, page=1): + params = {'page': page} if limit_days is not None: params['limit_days'] = limit_days if statuses is not None: diff --git a/app/templates/components/previous-next-navigation.html b/app/templates/components/previous-next-navigation.html index 9704ea939..525555396 100644 --- a/app/templates/components/previous-next-navigation.html +++ b/app/templates/components/previous-next-navigation.html @@ -8,7 +8,7 @@ {{previous_page['label']}} - {% endif %} + {% endif %} {% if next_page %}