From f0220fa9fb9e051bfed9afb146439c0d152310f6 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Tue, 13 Oct 2020 11:40:20 +0100 Subject: [PATCH] Make a separate page for previous alerts Previous alerts are much less important than ones that are live or waiting for approval. Therefore we can make the dashboard more focused by moving previous alerts to their own page. --- app/main/views/broadcast.py | 11 +++++++ app/navigation.py | 6 ++++ app/templates/main_nav.html | 1 + .../views/broadcast/previous-broadcasts.html | 15 ++++++++++ tests/app/main/views/test_broadcast.py | 29 +++++++++++++++++++ tests/app/test_navigation.py | 1 + 6 files changed, 63 insertions(+) create mode 100644 app/templates/views/broadcast/previous-broadcasts.html diff --git a/app/main/views/broadcast.py b/app/main/views/broadcast.py index 4a0d2dcd3..afc539a4e 100644 --- a/app/main/views/broadcast.py +++ b/app/main/views/broadcast.py @@ -40,6 +40,17 @@ def broadcast_dashboard(service_id): ) +@main.route('/services//previous-alerts') +@user_has_permissions() +@service_has_permission('broadcast') +def broadcast_dashboard_previous(service_id): + return render_template( + 'views/broadcast/previous-broadcasts.html', + broadcasts=BroadcastMessages(service_id).with_status('cancelled', 'completed'), + empty_message='You do not have any previous alerts', + ) + + @main.route('/services//broadcast-dashboard.json') @user_has_permissions() @service_has_permission('broadcast') diff --git a/app/navigation.py b/app/navigation.py index e8a7f2719..a7fc488a5 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -358,6 +358,7 @@ class HeaderNavigation(Navigation): 'who_its_for', 'broadcast_tour', 'broadcast_dashboard', + 'broadcast_dashboard_previous', 'broadcast_dashboard_updates', 'broadcast', 'preview_broadcast_areas', @@ -394,6 +395,9 @@ class MainNavigation(Navigation): 'view_notification', 'view_notifications', }, + 'previous_broadcasts': { + 'broadcast_dashboard_previous', + }, 'templates': { 'action_blocked', 'add_service_template', @@ -716,6 +720,7 @@ class CaseworkNavigation(Navigation): 'dashboard': { 'broadcast_tour', 'broadcast_dashboard', + 'broadcast_dashboard_previous', 'broadcast_dashboard_updates', }, 'send-one-off': { @@ -1354,6 +1359,7 @@ class OrgNavigation(Navigation): 'who_its_for', 'broadcast_tour', 'broadcast_dashboard', + 'broadcast_dashboard_previous', 'broadcast_dashboard_updates', 'broadcast', 'preview_broadcast_areas', diff --git a/app/templates/main_nav.html b/app/templates/main_nav.html index cd134e308..ce2cfaa9d 100644 --- a/app/templates/main_nav.html +++ b/app/templates/main_nav.html @@ -6,6 +6,7 @@ {% if current_user.has_permissions() %} {% if current_service.has_permission('broadcast') %}
  • Dashboard
  • +
  • Previous alerts
  • {% elif current_user.has_permissions('view_activity') %}
  • Dashboard
  • {% endif %} diff --git a/app/templates/views/broadcast/previous-broadcasts.html b/app/templates/views/broadcast/previous-broadcasts.html new file mode 100644 index 000000000..a21ccf3a5 --- /dev/null +++ b/app/templates/views/broadcast/previous-broadcasts.html @@ -0,0 +1,15 @@ +{% from 'components/ajax-block.html' import ajax_block %} + +{% extends "withnav_template.html" %} + +{% block service_page_title %} + Previous alerts +{% endblock %} + +{% block maincolumn_content %} + +

    Previous alerts

    + + {% include('views/broadcast/partials/dashboard-table.html') %} + +{% endblock %} diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py index bba981f2f..2ab9bcf82 100644 --- a/tests/app/main/views/test_broadcast.py +++ b/tests/app/main/views/test_broadcast.py @@ -22,6 +22,10 @@ sample_uuid = sample_uuid() '.broadcast_dashboard_updates', {}, 403, 405, ), + ( + '.broadcast_dashboard_previous', {}, + 403, 405, + ), ( '.broadcast', {'template_id': sample_uuid}, @@ -348,6 +352,31 @@ def test_broadcast_dashboard_json( assert 'Finished yesterday at 8:20pm' in json_response['previous_broadcasts'] +@freeze_time('2020-02-20 02:20') +def test_previous_broadcasts_page( + client_request, + service_one, + mock_get_broadcast_messages, + mock_get_service_templates, +): + service_one['permissions'] += ['broadcast'] + page = client_request.get( + '.broadcast_dashboard_previous', + service_id=SERVICE_ONE_ID, + ) + + assert normalize_spaces(page.select_one('main h1').text) == ( + 'Previous alerts' + ) + assert len(page.select('table')) == 1 + assert [ + normalize_spaces(row.text) for row in page.select('table')[0].select('tbody tr') + ] == [ + 'Example template To England and Scotland Stopped 10 February at 2:20am', + 'Example template To England and Scotland Finished yesterday at 8:20pm', + ] + + def test_broadcast_page( client_request, service_one, diff --git a/tests/app/test_navigation.py b/tests/app/test_navigation.py index efd28c752..3f471fb9e 100644 --- a/tests/app/test_navigation.py +++ b/tests/app/test_navigation.py @@ -189,6 +189,7 @@ def test_navigation_for_services_with_broadcast_permission( a['href'] for a in page.select('.navigation a') ] == [ '/services/{}/broadcast-dashboard'.format(SERVICE_ONE_ID), + '/services/{}/previous-alerts'.format(SERVICE_ONE_ID), '/services/{}/templates'.format(SERVICE_ONE_ID), '/services/{}/users'.format(SERVICE_ONE_ID), '/services/{}/service-settings'.format(SERVICE_ONE_ID),