From a627cf90029c9a27339cac89aca4827c73be9c30 Mon Sep 17 00:00:00 2001 From: Adam Shimali Date: Thu, 28 Apr 2016 15:50:05 +0100 Subject: [PATCH] Change activity to view to request 7 days data. Cleaned up filters a bit so that if you want both templates email and sms is passed. Added mock assertion to test. --- app/main/views/jobs.py | 19 +++-- app/notify_client/notification_api_client.py | 6 +- app/templates/main_nav.html | 2 +- app/templates/views/notifications.html | 2 +- config.py | 1 + tests/app/main/views/test_jobs.py | 77 ++++++++++++++++++-- tests/conftest.py | 6 +- 7 files changed, 94 insertions(+), 19 deletions(-) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 11f5d8df1..b541ffa32 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -1,14 +1,14 @@ # -*- coding: utf-8 -*- import time -import itertools from flask import ( render_template, abort, jsonify, request, - url_for + url_for, + current_app ) from flask_login import login_required from werkzeug.datastructures import MultiDict @@ -28,7 +28,6 @@ from app.utils import ( def _parse_filter_args(filter_dict): - if not isinstance(filter_dict, MultiDict): filter_dict = MultiDict(filter_dict) @@ -114,12 +113,15 @@ def view_notifications(service_id): page = get_page_from_request() if page is None: abort(404, "Invalid page argument ({}) reverting to page 1.".format(request.args['page'], None)) + filter_args = _parse_filter_args(request.args) + notifications = notification_api_client.get_notifications_for_service( service_id=service_id, page=page, - template_type=filter_args.getlist('template_type') if 'template_type' in filter_args else None, - status=filter_args.getlist('status') if 'status' in filter_args else ['delivered', 'failed']) + template_type=filter_args.get('template_type') if 'template_type' in filter_args else ['email', 'sms'], + status=filter_args.get('status') if 'status' in filter_args else ['delivered', 'failed'], + limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS']) view_dict = MultiDict(request.args) prev_page = None if notifications['links'].get('prev', None): @@ -147,7 +149,8 @@ def view_notifications(service_id): page_size=notifications['total'], template_type=filter_args.getlist('template_type') if 'template_type' in filter_args else None, status=filter_args.getlist('status') - if 'status' in filter_args else ['delivered', 'failed'])['notifications']) + if 'status' in filter_args else ['delivered', 'failed'], + limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS'])['notifications']) return csv_content, 200, { 'Content-Type': 'text/csv; charset=utf-8', 'Content-Disposition': 'inline; filename="notifications.csv"' @@ -168,14 +171,14 @@ def view_notifications(service_id): )] for item in [ ['Emails', 'email'], ['Text messages', 'sms'], - ['Both', ''] + ['Both', 'email,sms'] ] ], status_filters=[ [item[0], item[1], url_for( '.view_notifications', service_id=current_service['id'], - template_type=request.args.get('template_type', ''), + template_type=request.args.get('template_type', 'email,sms'), status=item[1] )] for item in [ ['Successful', 'delivered'], diff --git a/app/notify_client/notification_api_client.py b/app/notify_client/notification_api_client.py index d6ffc302f..3fc6c18a1 100644 --- a/app/notify_client/notification_api_client.py +++ b/app/notify_client/notification_api_client.py @@ -27,7 +27,8 @@ class NotificationApiClient(BaseAPIClient): template_type=None, status=None, page=None, - page_size=None): + page_size=None, + limit_days=None): params = {} if page is not None: params['page'] = page @@ -43,6 +44,9 @@ class NotificationApiClient(BaseAPIClient): params=params ) else: + if limit_days is not None: + params['limit_days'] = limit_days + return self.get( url='/service/{}/notifications'.format(service_id), params=params diff --git a/app/templates/main_nav.html b/app/templates/main_nav.html index 901a4ad7f..c0f687a27 100644 --- a/app/templates/main_nav.html +++ b/app/templates/main_nav.html @@ -4,7 +4,7 @@