mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-05-28 01:50:12 -04:00
Added returned-letter-summary page.
This page displays a list of available reports, a report is a set of returned lettters that have been reported on the same day. Each line of the page is a link that can download the report. I'm not sure the format of the csv is right. The data might be confusing especially if the service has a mix of precompiled templates and jobs. Units tests are still to come.
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
from flask import render_template, request
|
||||
from collections import OrderedDict
|
||||
|
||||
from flask import render_template
|
||||
|
||||
from app import service_api_client
|
||||
from app.main import main
|
||||
from app.utils import user_has_permissions
|
||||
from app.utils import Spreadsheet, user_has_permissions
|
||||
|
||||
|
||||
@main.route("/services/<uuid:service_id>/returned-letter-summary", methods=["GET", "POST"])
|
||||
@user_has_permissions('manage_service')
|
||||
@user_has_permissions('view_activity')
|
||||
def returned_letter_summary(service_id):
|
||||
summary = service_api_client.get_returned_letter_summary(service_id)
|
||||
return render_template(
|
||||
@@ -16,7 +18,27 @@ def returned_letter_summary(service_id):
|
||||
|
||||
|
||||
@main.route("/services/<uuid:service_id>/returned-letters-csv/<reported_at>", methods=["GET", "POST"])
|
||||
@user_has_permissions('manage_service')
|
||||
@user_has_permissions('view_activity')
|
||||
def returned_letters_report(service_id, reported_at):
|
||||
returned_letters = service_api_client.get_returned_letters(service_id, reported_at)
|
||||
column_names = OrderedDict([
|
||||
('client_reference', 'Reference'),
|
||||
('created_at', 'Date sent'),
|
||||
('notification_id', 'Notification ID'),
|
||||
('template_name', 'Template name'),
|
||||
('template_id', 'Template ID'),
|
||||
('template_version', 'Template version'),
|
||||
('original_file_name', 'Job file name'),
|
||||
('job_row_number', 'Job row number'),
|
||||
])
|
||||
|
||||
return str(service_api_client.get_returned_letters(service_id, reported_at))
|
||||
# initialise with header row
|
||||
data = [[x for x in column_names.values()]]
|
||||
|
||||
for row in returned_letters:
|
||||
data.append([row[key] for key in column_names.keys()])
|
||||
|
||||
return Spreadsheet.from_rows(data).as_csv_data, 200, {
|
||||
'Content-Type': 'text/csv; charset=utf-8',
|
||||
'Content-Disposition': 'inline; filename="{} returned letters.csv"'.format(reported_at)
|
||||
}
|
||||
|
||||
@@ -242,6 +242,8 @@ class HeaderNavigation(Navigation):
|
||||
'resend_email_link',
|
||||
'resend_email_verification',
|
||||
'resume_service',
|
||||
'returned_letter_summary',
|
||||
'returned_letters_report',
|
||||
'revoke_api_key',
|
||||
'robots',
|
||||
'send_messages',
|
||||
@@ -564,6 +566,8 @@ class MainNavigation(Navigation):
|
||||
'resend_email_link',
|
||||
'resend_email_verification',
|
||||
'resume_service',
|
||||
'returned_letter_summary',
|
||||
'returned_letters_report',
|
||||
'roadmap',
|
||||
'robots',
|
||||
'security',
|
||||
@@ -801,6 +805,8 @@ class CaseworkNavigation(Navigation):
|
||||
'resend_email_link',
|
||||
'resend_email_verification',
|
||||
'resume_service',
|
||||
'returned_letter_summary',
|
||||
'returned_letters_report',
|
||||
'revoke_api_key',
|
||||
'roadmap',
|
||||
'robots',
|
||||
@@ -1077,6 +1083,8 @@ class OrgNavigation(Navigation):
|
||||
'resend_email_link',
|
||||
'resend_email_verification',
|
||||
'resume_service',
|
||||
'returned_letter_summary',
|
||||
'returned_letters_report',
|
||||
'revoke_api_key',
|
||||
'roadmap',
|
||||
'robots',
|
||||
|
||||
@@ -575,4 +575,5 @@ class ServiceAPIClient(NotifyAdminAPIClient):
|
||||
def get_returned_letters(self, service_id, reported_at):
|
||||
return self.get("service/{}/returned-letters?reported_at={}".format(service_id, reported_at))
|
||||
|
||||
|
||||
service_api_client = ServiceAPIClient()
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
field_headings_visible=False
|
||||
) %}
|
||||
{% call field() %}
|
||||
<a href="{{url_for('.returned_letters_report', service_id=current_service.id, reported_date=item.reported_at)}}">
|
||||
<a href="{{url_for('.returned_letters_report', service_id=current_service.id, reported_at=item.reported_at)}}">
|
||||
Returned letters reported on {{ item.reported_at | format_datetime_short}} ({{ item.returned_letter_count}} letters)
|
||||
</a>
|
||||
{% endcall %}
|
||||
|
||||
Reference in New Issue
Block a user