mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 22:40:31 -04:00
Merge pull request #3219 from alphagov/add-letters-to-uploads-page
Updated the uploads page to include letters.
This commit is contained in:
@@ -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'])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user