mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 00:07:02 -04:00
Merge pull request #3437 from alphagov/group-uploaded-letters
Group uploaded letters by printing date
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from functools import partial
|
||||
|
||||
from flask import (
|
||||
Response,
|
||||
abort,
|
||||
@@ -64,7 +66,7 @@ def view_job(service_id, job_id):
|
||||
|
||||
just_sent_message = 'Your {} been sent. Printing starts {} at 5:30pm.'.format(
|
||||
'letter has' if job.notification_count == 1 else 'letters have',
|
||||
printing_today_or_tomorrow()
|
||||
printing_today_or_tomorrow(job.created_at)
|
||||
)
|
||||
|
||||
return render_template(
|
||||
@@ -289,6 +291,11 @@ def get_notifications(service_id, message_type, status_override=None):
|
||||
status=request.args.get('status'),
|
||||
message_type=message_type,
|
||||
download_link=download_link,
|
||||
single_notification_url=partial(
|
||||
url_for,
|
||||
'.view_notification',
|
||||
service_id=current_service.id,
|
||||
)
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@@ -120,6 +120,12 @@ def view_notification(service_id, notification_id):
|
||||
service_id=current_service.id,
|
||||
job_id=request.args.get('from_job'),
|
||||
)
|
||||
elif request.args.get('from_uploaded_letters'):
|
||||
back_link = url_for(
|
||||
'main.uploaded_letters',
|
||||
service_id=current_service.id,
|
||||
letter_print_day=request.args.get('from_uploaded_letters'),
|
||||
)
|
||||
else:
|
||||
back_link = url_for(
|
||||
'main.view_notifications',
|
||||
|
||||
@@ -3,6 +3,8 @@ import itertools
|
||||
import json
|
||||
import urllib
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from functools import partial
|
||||
from io import BytesIO
|
||||
from zipfile import BadZipFile
|
||||
|
||||
@@ -25,7 +27,12 @@ from requests import RequestException
|
||||
from xlrd.biffh import XLRDError
|
||||
from xlrd.xldate import XLDateError
|
||||
|
||||
from app import current_service, notification_api_client, service_api_client
|
||||
from app import (
|
||||
current_service,
|
||||
notification_api_client,
|
||||
service_api_client,
|
||||
upload_api_client,
|
||||
)
|
||||
from app.extensions import antivirus_client
|
||||
from app.main import main
|
||||
from app.main.forms import CsvUploadForm, LetterUploadPostageForm, PDFUploadForm
|
||||
@@ -42,7 +49,9 @@ from app.utils import (
|
||||
generate_next_dict,
|
||||
generate_previous_dict,
|
||||
get_errors_for_csv,
|
||||
get_letter_printing_statement,
|
||||
get_letter_validation_error,
|
||||
get_page_from_request,
|
||||
get_sample_template,
|
||||
get_template,
|
||||
unicode_truncate,
|
||||
@@ -80,9 +89,63 @@ def uploads(service_id):
|
||||
jobs=listed_uploads,
|
||||
prev_page=prev_page,
|
||||
next_page=next_page,
|
||||
now=datetime.utcnow().isoformat(),
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<uuid:service_id>/uploaded-letters/<simple_date:letter_print_day>")
|
||||
@user_has_permissions()
|
||||
def uploaded_letters(service_id, letter_print_day):
|
||||
page = get_page_from_request()
|
||||
if page is None:
|
||||
abort(404, "Invalid page argument ({}).".format(request.args.get('page')))
|
||||
uploaded_letters = upload_api_client.get_letters_by_service_and_print_day(
|
||||
current_service.id, letter_print_day=letter_print_day, page=page,
|
||||
)
|
||||
|
||||
prev_page = None
|
||||
if uploaded_letters['links'].get('prev'):
|
||||
prev_page = generate_previous_dict('.uploaded_letters', service_id, page, url_args={
|
||||
'letter_print_day': letter_print_day
|
||||
})
|
||||
next_page = None
|
||||
if uploaded_letters['links'].get('next'):
|
||||
next_page = generate_next_dict('.uploaded_letters', service_id, page, url_args={
|
||||
'letter_print_day': letter_print_day
|
||||
})
|
||||
return render_template(
|
||||
'views/uploads/uploaded-letters.html',
|
||||
notifications=add_preview_of_content_uploaded_letters(
|
||||
uploaded_letters['notifications']
|
||||
),
|
||||
prev_page=prev_page,
|
||||
next_page=next_page,
|
||||
show_pagination=True,
|
||||
total=uploaded_letters['total'],
|
||||
letter_printing_statement=get_letter_printing_statement(
|
||||
'created',
|
||||
letter_print_day,
|
||||
),
|
||||
letter_print_day=letter_print_day,
|
||||
single_notification_url=partial(
|
||||
url_for,
|
||||
'.view_notification',
|
||||
service_id=current_service.id,
|
||||
from_uploaded_letters=letter_print_day,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def add_preview_of_content_uploaded_letters(notifications):
|
||||
|
||||
for notification in notifications:
|
||||
yield(dict(
|
||||
preview_of_content=', '.join(notification.pop('to').splitlines()),
|
||||
to=notification['client_reference'],
|
||||
**notification
|
||||
))
|
||||
|
||||
|
||||
@main.route("/services/<uuid:service_id>/upload-letter", methods=['GET', 'POST'])
|
||||
@user_has_permissions('send_messages')
|
||||
def upload_letter(service_id):
|
||||
|
||||
Reference in New Issue
Block a user