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.
This commit is contained in:
Chris Hill-Scott
2020-10-13 11:40:20 +01:00
parent 65b2dbc031
commit f0220fa9fb
6 changed files with 63 additions and 0 deletions

View File

@@ -40,6 +40,17 @@ def broadcast_dashboard(service_id):
)
@main.route('/services/<uuid:service_id>/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/<uuid:service_id>/broadcast-dashboard.json')
@user_has_permissions()
@service_has_permission('broadcast')

View File

@@ -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',

View File

@@ -6,6 +6,7 @@
{% if current_user.has_permissions() %}
{% if current_service.has_permission('broadcast') %}
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('dashboard') }}" href="{{ url_for('.broadcast_dashboard', service_id=current_service.id) }}">Dashboard</a></li>
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('previous_broadcasts') }}" href="{{ url_for('.broadcast_dashboard_previous', service_id=current_service.id) }}">Previous alerts</a></li>
{% elif current_user.has_permissions('view_activity') %}
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('dashboard') }}" href="{{ url_for('.service_dashboard', service_id=current_service.id) }}">Dashboard</a></li>
{% endif %}

View File

@@ -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 %}
<h1 class="heading-medium govuk-!-margin-bottom-2">Previous alerts</h1>
{% include('views/broadcast/partials/dashboard-table.html') %}
{% endblock %}

View File

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

View File

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