mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-13 09:50:08 -04:00
Set accepted files for contact list upload
This commit is contained in:
@@ -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 = {
|
||||
|
||||
@@ -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'
|
||||
) }}
|
||||
|
||||
@@ -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'
|
||||
) }}
|
||||
|
||||
@@ -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'
|
||||
) }}
|
||||
|
||||
@@ -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
|
||||
)}}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user