Merge pull request #3219 from alphagov/add-letters-to-uploads-page

Updated the uploads page to include letters.
This commit is contained in:
David McDonald
2019-12-06 15:01:09 +00:00
committed by GitHub
5 changed files with 76 additions and 6 deletions

View File

@@ -15,11 +15,15 @@ from notifications_utils.pdf import pdf_page_count
from PyPDF2.utils import PdfReadError
from requests import RequestException
from app import current_service, notification_api_client, service_api_client
from app import (
current_service,
job_api_client,
notification_api_client,
service_api_client,
)
from app.extensions import antivirus_client
from app.main import main
from app.main.forms import LetterUploadPostageForm, PDFUploadForm
from app.main.views.jobs import view_jobs
from app.s3_client.s3_letter_upload_client import (
get_letter_metadata,
get_letter_pdf_and_metadata,
@@ -28,6 +32,8 @@ from app.s3_client.s3_letter_upload_client import (
)
from app.template_previews import TemplatePreview, sanitise_letter
from app.utils import (
generate_next_dict,
generate_previous_dict,
get_letter_validation_error,
get_template,
user_has_permissions,
@@ -39,7 +45,26 @@ MAX_FILE_UPLOAD_SIZE = 2 * 1024 * 1024 # 2MB
@main.route("/services/<uuid:service_id>/uploads")
@user_has_permissions()
def uploads(service_id):
return view_jobs(service_id)
# No tests have been written, this has been quickly prepared for user research.
# It's also very like that a new view will be created to show uploads.
page = int(request.args.get('page', 1))
uploads_response = job_api_client.get_uploads(service_id, page=page)
prev_page = None
if uploads_response['links'].get('prev', None):
prev_page = generate_previous_dict('main.uploads', service_id, page)
next_page = None
if uploads_response['links'].get('next', None):
next_page = generate_next_dict('main.uploads', service_id, page)
return render_template(
'views/jobs/jobs.html',
jobs=uploads_response['data'],
page=page,
prev_page=prev_page,
next_page=next_page,
scheduled_jobs='',
)
@main.route("/services/<uuid:service_id>/upload-letter", methods=['GET', 'POST'])

View File

@@ -61,6 +61,20 @@ class JobApiClient(NotifyAdminAPIClient):
return jobs
def get_uploads(self, service_id, limit_days=None, page=1):
params = {'page': page}
if limit_days is not None:
params['limit_days'] = limit_days
uploads = self.get(url='/service/{}/upload'.format(service_id), params=params)
for upload in uploads['data']:
stats = self.__convert_statistics(upload)
upload['notifications_sent'] = stats['delivered'] + stats['failed']
upload['notifications_delivered'] = stats['delivered']
upload['notifications_failed'] = stats['failed']
upload['notifications_requested'] = stats['requested']
return uploads
def has_sent_previously(self, service_id, template_id, template_version, original_file_name):
return (
template_id, template_version, original_file_name

View File

@@ -19,7 +19,11 @@
) %}
{% call row_heading() %}
<div class="file-list">
<a class="file-list-filename" href="{{ url_for('.view_job', service_id=current_service.id, job_id=item.id) }}">{{ item.original_file_name }}</a>
{% if item.upload_type == 'letter' %}
<a class="file-list-filename" href="{{ url_for('.view_notification', service_id=current_service.id, notification_id=item.id) }}">{{ item.original_file_name }}</a>
{% else %}
<a class="file-list-filename" href="{{ url_for('.view_job', service_id=current_service.id, job_id=item.id) }}">{{ item.original_file_name }}</a>
{% endif %}
<span class="file-list-hint">
Sent {{
(item.scheduled_for if item.scheduled_for else item.created_at)|format_datetime_relative