Add the download activity link for notifications.

This works locally for a long running request and a large number of messages. However I suspect that nginx may be timing out the request. I'd like to try this on staging.
This commit is contained in:
Rebecca Law
2018-06-25 16:29:40 +01:00
parent 3495c4ca3a
commit 72b0637f92
3 changed files with 13 additions and 7 deletions

View File

@@ -12,6 +12,7 @@ from flask import (
request,
stream_with_context,
url_for,
current_app
)
from flask_login import login_required
from notifications_python_client.errors import APIError
@@ -178,7 +179,8 @@ def download_notifications_csv(service_id):
page=request.args.get('page', 1),
page_size=5000,
format_for_csv=True,
template_type=filter_args.get('message_type')
template_type=filter_args.get('message_type'),
limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS'],
)
),
mimetype='text/csv',

View File

@@ -47,6 +47,11 @@
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
</form>
{% endif %}
<p class="bottom-gutter">
<a href="{{ download_link }}" download="download" class="heading-small">Download this report</a>
&emsp;
Data available for 7 days
</p>
{{ ajax_block(
partials,
url_for('.get_notifications_as_json', service_id=current_service.id, message_type=message_type, status=status, page=page),

View File

@@ -149,13 +149,12 @@ def generate_notifications_csv(**kwargs):
]
else:
values = [
notification['to'],
notification['template']['name'],
notification['template']['template_type'],
notification.get('job_name', None),
notification['recipient'],
notification['template_name'],
notification['template_type'],
notification['job_name'],
notification['status'],
notification['created_at'],
notification['updated_at']
notification['created_at']
]
yield Spreadsheet.from_rows([map(str, values)]).as_csv_data