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),