From e3a0adc293aed90d535cc83161895215a75bb55a Mon Sep 17 00:00:00 2001 From: Alexey Bezhan Date: Mon, 13 Aug 2018 17:07:49 +0100 Subject: [PATCH] Use per-service data retention period to display notifications page Uses the configured service data retention page to display retention period length, notification counts and fetch notifications from the API on the notifications page. --- app/main/views/jobs.py | 17 ++++++++++++++--- app/templates/views/activity/notifications.html | 2 +- app/templates/views/notifications.html | 2 +- tests/app/main/views/test_activity.py | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 10c8a91e4..9d0b22ab0 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -216,6 +216,11 @@ def get_notifications(service_id, message_type, status_override=None): abort(404) filter_args = parse_filter_args(request.args) filter_args['status'] = set_status_filters(filter_args) + + service_data_retention_days = service_api_client.get_service_data_retention_by_notification_type( + service_id, message_type + ).get('days_of_retention', current_app.config['ACTIVITY_STATS_LIMIT_DAYS']) + if request.path.endswith('csv') and current_user.has_permissions('view_activity'): return Response( generate_notifications_csv( @@ -224,7 +229,7 @@ def get_notifications(service_id, message_type, status_override=None): page_size=5000, template_type=[message_type], status=filter_args.get('status'), - limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS'] + limit_days=service_data_retention_days ), mimetype='text/csv', headers={ @@ -235,7 +240,7 @@ def get_notifications(service_id, message_type, status_override=None): page=page, template_type=[message_type] if message_type else [], status=filter_args.get('status'), - limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS'], + limit_days=service_data_retention_days, to=request.form.get('to', ''), ) url_args = { @@ -262,13 +267,18 @@ def get_notifications(service_id, message_type, status_override=None): download_link = None return { + 'service_data_retention_days': service_data_retention_days, 'counts': render_template( 'views/activity/counts.html', status=request.args.get('status'), status_filters=get_status_filters( current_service, message_type, - service_api_client.get_service_statistics(service_id, today_only=False) + service_api_client.get_service_statistics( + service_id, + today_only=False, + limit_days=service_data_retention_days + ) ) ), 'notifications': render_template( @@ -277,6 +287,7 @@ def get_notifications(service_id, message_type, status_override=None): notifications['notifications'] )), page=page, + limit_days=service_data_retention_days, prev_page=prev_page, next_page=next_page, status=request.args.get('status'), diff --git a/app/templates/views/activity/notifications.html b/app/templates/views/activity/notifications.html index a4bc2a3c8..d2b8e3465 100644 --- a/app/templates/views/activity/notifications.html +++ b/app/templates/views/activity/notifications.html @@ -11,7 +11,7 @@ notifications, caption="Recent activity", caption_visible=False, - empty_message='No messages found  (messages are kept for 7 days)'|safe, + empty_message='No messages found  (messages are kept for {} days)'.format(limit_days)|safe, field_headings=['Recipient', 'Status'], field_headings_visible=False ) %} diff --git a/app/templates/views/notifications.html b/app/templates/views/notifications.html index 6f361d708..41c89b5d6 100644 --- a/app/templates/views/notifications.html +++ b/app/templates/views/notifications.html @@ -58,7 +58,7 @@

Download this report   - Data available for 7 days + Data available for {{ partials.service_data_retention_days }} days

{% endif %} diff --git a/tests/app/main/views/test_activity.py b/tests/app/main/views/test_activity.py index 5a0c2e397..2dfc2a198 100644 --- a/tests/app/main/views/test_activity.py +++ b/tests/app/main/views/test_activity.py @@ -145,7 +145,7 @@ def test_can_show_notifications( **extra_args )) json_content = json.loads(json_response.get_data(as_text=True)) - assert json_content.keys() == {'counts', 'notifications'} + assert json_content.keys() == {'counts', 'notifications', 'service_data_retention_days'} @pytest.mark.parametrize('user, query_parameters, expected_download_link', [