From ee10b3a6c2c5ec94aed5361121377c0e8668420b Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Wed, 20 Jul 2016 15:19:58 +0100 Subject: [PATCH] use detailed service endpoint in notification summary page to help get rid of notification statistics tables, move over the job page. fortunately its required data format is almost identical to the return value of the detailed service endpoint, so little work is required - only to add a sending column --- app/main/views/jobs.py | 57 +++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index a1d579ef1..f043ddfca 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- - import time import dateutil from datetime import datetime, timedelta, timezone @@ -21,7 +20,6 @@ from app import ( job_api_client, notification_api_client, service_api_client, - statistics_api_client, current_service, format_datetime_short) from app.main import main @@ -30,7 +28,7 @@ from app.utils import ( generate_previous_next_dict, user_has_permissions, generate_notifications_csv) -from app.statistics_utils import sum_of_statistics, statistics_by_state, add_rate_to_jobs +from app.statistics_utils import add_rate_to_jobs from app.utils import get_help_argument @@ -171,9 +169,6 @@ def view_notifications(service_id, message_type): template_type=[message_type], status=filter_args.get('status'), limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS']) - service_statistics_by_state = statistics_by_state(sum_of_statistics( - statistics_api_client.get_statistics_for_service(service_id, limit_days=7)['data'] - )) view_dict = dict( message_type=message_type, status=request.args.get('status') @@ -223,23 +218,11 @@ def view_notifications(service_id, message_type): message_type=message_type, status=request.args.get('status') ), - status_filters=[ - [ - item[0], item[1], - url_for( - '.view_notifications', - service_id=current_service['id'], - message_type=message_type, - status=item[1] - ), - service_statistics_by_state[message_type][item[0]] - ] for item in [ - ['processed', 'sending,delivered,failed'], - ['sending', 'sending'], - ['delivered', 'delivered'], - ['failed', 'failed'], - ] - ] + status_filters=get_status_filters( + current_service, + message_type, + service_api_client.get_detailed_service(service_id)['data']['statistics'] + ) ) @@ -261,6 +244,34 @@ def view_notification(service_id, job_id, notification_id): ) +def get_status_filters(service, message_type, statistics): + stats = statistics[message_type] + stats['sending'] = stats['requested'] - stats['delivered'] - stats['failed'] + + filters = [ + # key, label, option + ('requested', 'processed', 'sending,delivered,failed'), + ('sending', 'sending', 'sending'), + ('delivered', 'delivered', 'delivered'), + ('failed', 'failed', 'failed'), + ] + return [ + # return list containing label, option, link, count + ( + label, + option, + url_for( + '.view_notifications', + service_id=service['id'], + message_type=message_type, + status=option + ), + stats[key] + ) + for key, label, option in filters + ] + + def _get_job_counts(job, help_argument): return [ (