mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-18 13:39:41 -04:00
Merge pull request #4071 from alphagov/downloadable-org-use-report
Add downloadable report for org usage
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from collections import OrderedDict
|
||||
from datetime import datetime
|
||||
from functools import partial
|
||||
|
||||
from flask import flash, redirect, render_template, request, session, url_for
|
||||
@@ -43,6 +44,7 @@ from app.main.views.dashboard import (
|
||||
from app.main.views.service_settings import get_branding_as_value_and_label
|
||||
from app.models.organisation import AllOrganisations, Organisation
|
||||
from app.models.user import InvitedOrgUser, User
|
||||
from app.utils.csv import Spreadsheet
|
||||
from app.utils.user import user_has_permissions, user_is_platform_admin
|
||||
|
||||
|
||||
@@ -156,10 +158,50 @@ def organisation_dashboard(org_id):
|
||||
**{
|
||||
f'total_{key}': sum(service[key] for service in services)
|
||||
for key in ('emails_sent', 'sms_cost', 'letter_cost')
|
||||
}
|
||||
},
|
||||
download_link=url_for(
|
||||
'.download_organisation_usage_report',
|
||||
org_id=org_id,
|
||||
selected_year=year
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@main.route("/organisations/<uuid:org_id>/download-usage-report.csv", methods=['GET'])
|
||||
@user_has_permissions()
|
||||
def download_organisation_usage_report(org_id):
|
||||
selected_year = request.args.get('selected_year')
|
||||
services_usage = current_organisation.services_and_usage(
|
||||
financial_year=selected_year
|
||||
)['services']
|
||||
|
||||
column_names = OrderedDict([
|
||||
('service_id', 'Service ID'),
|
||||
('service_name', 'Service Name'),
|
||||
('emails_sent', 'Emails sent'),
|
||||
('sms_remainder', 'Free text message allowance remaining'),
|
||||
('sms_cost', 'Spent on text messages (£)'),
|
||||
('letter_cost', 'Spent on letters (£)')
|
||||
])
|
||||
|
||||
org_usage_data = [[x for x in column_names.values()]]
|
||||
|
||||
for service in services_usage:
|
||||
org_usage_data.append([service[attribute] for attribute in column_names.keys()])
|
||||
|
||||
return Spreadsheet.from_rows(org_usage_data).as_csv_data, 200, {
|
||||
'Content-Type': 'text/csv; charset=utf-8',
|
||||
'Content-Disposition': (
|
||||
'inline;'
|
||||
'filename="{} organisation usage report for year {}'
|
||||
' - generated on {}.csv"'.format(
|
||||
current_organisation.name,
|
||||
selected_year,
|
||||
datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%fZ")
|
||||
))
|
||||
}
|
||||
|
||||
|
||||
@main.route("/organisations/<uuid:org_id>/trial-services", methods=['GET'])
|
||||
@user_is_platform_admin
|
||||
def organisation_trial_mode_services(org_id):
|
||||
|
||||
@@ -112,4 +112,10 @@
|
||||
<div class="keyline-block govuk-!-margin-top-2"></div>
|
||||
{% endif %}
|
||||
|
||||
<div class="js-stick-at-bottom-when-scrolling">
|
||||
<p class="govuk-!-margin-bottom-1">
|
||||
<a href="{{ download_link }}" download="download" class="govuk-link govuk-link--no-visited-state govuk-!-font-weight-bold">Download this report</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user