mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 14:29:51 -04:00
Show template usage for all time on it’s own page
> We show the last weeks template usage on the dashboard, which is > great, but if you're looking for longer term trends, you're out of > luck... > So, let's let you see more on a more detailed page (linked from the > dashboard). Initially this should just show you all templates that you > have used ever and the count for each. Order same as dashboard, most > popular first. https://www.pivotaltracker.com/story/show/117614585
This commit is contained in:
@@ -54,6 +54,18 @@ def service_dashboard_updates(service_id):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@main.route("/services/<service_id>/template-activity")
|
||||||
|
@login_required
|
||||||
|
@user_has_permissions('view_activity', admin_override=True)
|
||||||
|
def template_history(service_id):
|
||||||
|
return render_template(
|
||||||
|
'views/dashboard/all-template-statistics.html',
|
||||||
|
template_statistics=aggregate_usage(
|
||||||
|
template_statistics_client.get_template_statistics_for_service(service_id)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def add_rates_to(delivery_statistics):
|
def add_rates_to(delivery_statistics):
|
||||||
|
|
||||||
if not delivery_statistics or not delivery_statistics[0]:
|
if not delivery_statistics or not delivery_statistics[0]:
|
||||||
@@ -125,4 +137,4 @@ def get_dashboard_statistics_for_service(service_id):
|
|||||||
'template_statistics': aggregate_usage(
|
'template_statistics': aggregate_usage(
|
||||||
template_statistics_client.get_template_statistics_for_service(service_id, limit_days=7)
|
template_statistics_client.get_template_statistics_for_service(service_id, limit_days=7)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
17
app/templates/views/dashboard/all-template-statistics.html
Normal file
17
app/templates/views/dashboard/all-template-statistics.html
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{% extends "withnav_template.html" %}
|
||||||
|
|
||||||
|
{% block page_title %}
|
||||||
|
{{ current_service.name }} – GOV.UK Notify
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block maincolumn_content %}
|
||||||
|
<h1 class='heading-large'>
|
||||||
|
Templates used this year
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
1 April 2016 to date
|
||||||
|
</p>
|
||||||
|
{% with period = "" %}
|
||||||
|
{% include 'views/dashboard/template-statistics.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endblock %}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
template_statistics,
|
template_statistics,
|
||||||
caption="By template",
|
caption="By template",
|
||||||
caption_visible=False,
|
caption_visible=False,
|
||||||
empty_message='You haven’t set up any templates yet',
|
empty_message='You haven’t used any templates {}'.format(period),
|
||||||
field_headings=['Template', hidden_field_heading('Type'), right_aligned_field_heading('Messages processed')]
|
field_headings=['Template', hidden_field_heading('Type'), right_aligned_field_heading('Messages processed')]
|
||||||
) %}
|
) %}
|
||||||
{% call field() %}
|
{% call field() %}
|
||||||
|
|||||||
@@ -25,5 +25,9 @@
|
|||||||
) }}
|
) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% with period = "in the last 7 days" %}
|
||||||
{% include 'views/dashboard/template-statistics.html' %}
|
{% include 'views/dashboard/template-statistics.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
<p class='table-show-more-link'>
|
||||||
|
<a href="{{ url_for('.template_history', service_id=current_service.id) }}">See all templates used this year</a>
|
||||||
|
</p>
|
||||||
|
|||||||
@@ -101,6 +101,49 @@ def test_should_show_recent_templates_on_dashboard(app_,
|
|||||||
assert table_data[2].text.strip() == '13'
|
assert table_data[2].text.strip() == '13'
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_show_all_templates_on_template_statistics_page(
|
||||||
|
app_,
|
||||||
|
mocker,
|
||||||
|
api_user_active,
|
||||||
|
mock_get_service,
|
||||||
|
mock_get_service_templates,
|
||||||
|
mock_get_service_statistics,
|
||||||
|
mock_get_user,
|
||||||
|
mock_get_user_by_email,
|
||||||
|
mock_login,
|
||||||
|
mock_get_jobs,
|
||||||
|
mock_has_permissions
|
||||||
|
):
|
||||||
|
|
||||||
|
mock_template_stats = mocker.patch('app.template_statistics_client.get_template_statistics_for_service',
|
||||||
|
return_value=copy.deepcopy(stub_template_stats))
|
||||||
|
|
||||||
|
with app_.test_request_context():
|
||||||
|
with app_.test_client() as client:
|
||||||
|
client.login(api_user_active)
|
||||||
|
response = client.get(url_for('main.template_history', service_id=SERVICE_ONE_ID))
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
response.get_data(as_text=True)
|
||||||
|
mock_template_stats.assert_called_once_with(SERVICE_ONE_ID)
|
||||||
|
|
||||||
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
|
headers = [header.text.strip() for header in page.find_all('h2')]
|
||||||
|
table_rows = page.tbody.find_all('tr')
|
||||||
|
|
||||||
|
assert len(table_rows) == 2
|
||||||
|
|
||||||
|
first_row = page.tbody.find_all('tr')[0]
|
||||||
|
table_data = first_row.find_all('td')
|
||||||
|
assert len(table_data) == 3
|
||||||
|
assert table_data[2].text.strip() == '206'
|
||||||
|
|
||||||
|
second_row = page.tbody.find_all('tr')[1]
|
||||||
|
table_data = second_row.find_all('td')
|
||||||
|
assert len(table_data) == 3
|
||||||
|
assert table_data[2].text.strip() == '13'
|
||||||
|
|
||||||
|
|
||||||
def _test_dashboard_menu(mocker, app_, usr, service, permissions):
|
def _test_dashboard_menu(mocker, app_, usr, service, permissions):
|
||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
with app_.test_client() as client:
|
with app_.test_client() as client:
|
||||||
|
|||||||
Reference in New Issue
Block a user