Set accepted files for contact list upload

This commit is contained in:
Tom Byers
2020-12-16 11:23:58 +00:00
parent fb1ac8bc42
commit 1096d1f707
6 changed files with 15 additions and 0 deletions

View File

@@ -379,6 +379,7 @@ def send_uploaded_letter(service_id, file_id):
@user_has_permissions('send_messages')
def upload_contact_list(service_id):
form = CsvUploadForm()
allowed_spreadsheet_file_extensions = ','.join([f'.{ext}' for ext in Spreadsheet.ALLOWED_FILE_EXTENSIONS])
if form.validate_on_submit():
try:
@@ -415,6 +416,7 @@ def upload_contact_list(service_id):
return render_template(
'views/uploads/contact-list/upload.html',
form=form,
allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions,
)
@@ -449,6 +451,7 @@ def check_contact_list(service_id, upload_id):
)
non_empty_column_headers = list(filter(None, recipients.column_headers))
allowed_spreadsheet_file_extensions = ','.join([f'.{ext}' for ext in Spreadsheet.ALLOWED_FILE_EXTENSIONS])
if len(non_empty_column_headers) > 1 or not template_type or not recipients:
return render_template(
@@ -457,6 +460,7 @@ def check_contact_list(service_id, upload_id):
original_file_name=original_file_name,
template_type=template_type,
form=form,
allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions
)
if recipients.too_many_rows or not len(recipients):
@@ -465,6 +469,7 @@ def check_contact_list(service_id, upload_id):
recipients=recipients,
original_file_name=original_file_name,
form=form,
allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions
)
row_errors = get_errors_for_csv(recipients, template_type)
@@ -475,6 +480,7 @@ def check_contact_list(service_id, upload_id):
original_file_name=original_file_name,
row_errors=row_errors,
form=form,
allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions
)
if recipients.has_errors:
@@ -483,6 +489,7 @@ def check_contact_list(service_id, upload_id):
recipients=recipients,
original_file_name=original_file_name,
form=form,
allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions
)
metadata_kwargs = {

View File

@@ -49,6 +49,7 @@
<div class="form-group">
{{ file_upload(
form.file,
allowed_file_extensions=allowed_spreadsheet_file_extensions,
action=url_for('.upload_contact_list', service_id=current_service.id),
button_text='Upload your file again'
) }}

View File

@@ -44,6 +44,7 @@
<div class="form-group">
{{ file_upload(
form.file,
allowed_file_extensions=allowed_spreadsheet_file_extensions,
action=url_for('.upload_contact_list', service_id=current_service.id),
button_text='Upload your file again'
) }}

View File

@@ -58,6 +58,7 @@
<div class="form-group">
{{ file_upload(
form.file,
allowed_file_extensions=allowed_spreadsheet_file_extensions,
action=url_for('.upload_contact_list', service_id=current_service.id),
button_text='Upload your file again'
) }}

View File

@@ -35,6 +35,7 @@
<div class="bottom-gutter">
{{ file_upload(
form.file,
allowed_file_extensions=allowed_spreadsheet_file_extensions,
button_text='Upload your file again' if error else 'Choose file',
show_errors=False
)}}

View File

@@ -18,6 +18,8 @@ def test_upload_contact_list_page(client_request):
assert 'action' not in page.select_one('form')
assert page.select_one('form input')['name'] == 'file'
assert page.select_one('form input')['type'] == 'file'
assert page.select_one('form input').has_attr('accept')
assert set(page.select_one('form input')['accept'].split(',')) == {'.csv', '.xlsx', '.xls', '.ods', '.xlsm', '.tsv'}
assert normalize_spaces(page.select('.spreadsheet')[0].text) == (
'Example A '
@@ -234,6 +236,8 @@ def test_upload_csv_file_shows_error_banner(
service_id=SERVICE_ONE_ID,
)
assert page.select_one('form input')['type'] == 'file'
assert page.select_one('form input').has_attr('accept')
assert set(page.select_one('form input')['accept'].split(',')) == {'.csv', '.xlsx', '.xls', '.ods', '.xlsm', '.tsv'}
assert normalize_spaces(page.select_one('thead').text) == expected_thead
assert normalize_spaces(page.select_one('tbody').text) == expected_tbody