diff --git a/app/main/views/send.py b/app/main/views/send.py index cf64b8692..43b43f197 100644 --- a/app/main/views/send.py +++ b/app/main/views/send.py @@ -187,7 +187,6 @@ def send_messages(service_id, template_id): )) column_headings = get_spreadsheet_column_headings_from_template(template) - allowed_spreadsheet_file_extensions = ','.join([f'.{ext}' for ext in Spreadsheet.ALLOWED_FILE_EXTENSIONS]) return render_template( 'views/send.html', @@ -195,7 +194,7 @@ def send_messages(service_id, template_id): column_headings=list(ascii_uppercase[:len(column_headings)]), example=[column_headings, get_example_csv_rows(template)], form=form, - allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS ) @@ -711,7 +710,7 @@ def _check_messages(service_id, template_id, upload_id, preview_row, letters_as_ def check_messages(service_id, template_id, upload_id, row_index=2): data = _check_messages(service_id, template_id, upload_id, row_index) - data['allowed_spreadsheet_file_extensions'] = ','.join([f'.{ext}' for ext in Spreadsheet.ALLOWED_FILE_EXTENSIONS]) + data['allowed_file_extensions'] = Spreadsheet.ALLOWED_FILE_EXTENSIONS if ( data['recipients'].too_many_rows diff --git a/app/main/views/uploads.py b/app/main/views/uploads.py index d65ce6ffe..b2609bde6 100644 --- a/app/main/views/uploads.py +++ b/app/main/views/uploads.py @@ -292,7 +292,6 @@ def uploaded_letter_preview(service_id, file_id): form = LetterUploadPostageForm( postage_zone=postal_address.postage ) - allowed_spreadsheet_file_extensions = ','.join([f'.{ext}' for ext in Spreadsheet.ALLOWED_FILE_EXTENSIONS]) template = get_template( template_dict, @@ -314,7 +313,7 @@ def uploaded_letter_preview(service_id, file_id): message=error_message, error_code=error_shortcode, form=form, - allowed_spreadsheet_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS, postal_address=postal_address, re_upload_form=re_upload_form ) @@ -379,7 +378,6 @@ 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: @@ -416,7 +414,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, + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS, ) @@ -451,7 +449,6 @@ 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( @@ -460,7 +457,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 + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS ) if recipients.too_many_rows or not len(recipients): @@ -469,7 +466,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 + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS ) row_errors = get_errors_for_csv(recipients, template_type) @@ -480,7 +477,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 + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS ) if recipients.has_errors: @@ -489,7 +486,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 + allowed_file_extensions=Spreadsheet.ALLOWED_FILE_EXTENSIONS ) metadata_kwargs = { diff --git a/app/templates/views/check/column-errors.html b/app/templates/views/check/column-errors.html index 599ddc59c..f576ae305 100644 --- a/app/templates/views/check/column-errors.html +++ b/app/templates/views/check/column-errors.html @@ -137,7 +137,7 @@ {% if not request.args.from_test %} {{ file_upload( form.file, - allowed_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=allowed_file_extensions, action=url_for('.send_messages', service_id=current_service.id, template_id=template.id), button_text='Upload your file again' ) }} diff --git a/app/templates/views/check/row-errors.html b/app/templates/views/check/row-errors.html index a971047ae..49f7dc7cb 100644 --- a/app/templates/views/check/row-errors.html +++ b/app/templates/views/check/row-errors.html @@ -43,7 +43,7 @@
{{ file_upload( form.file, - allowed_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=allowed_file_extensions, action=url_for('.send_messages', service_id=current_service.id, template_id=template.id), button_text='Upload your file again' ) }} diff --git a/app/templates/views/email-branding/manage-branding.html b/app/templates/views/email-branding/manage-branding.html index 965ea3c81..f90f0bc47 100644 --- a/app/templates/views/email-branding/manage-branding.html +++ b/app/templates/views/email-branding/manage-branding.html @@ -24,7 +24,7 @@

Logos should be PNG files, 108px high

- {{ file_upload(form.file, allowed_file_extensions='.png', button_text='{} logo'.format('Update' if email_branding else 'Upload')) }} + {{ file_upload(form.file, allowed_file_extensions=['png'], button_text='{} logo'.format('Update' if email_branding else 'Upload')) }} {% call form_wrapper() %}
{{form.name}}
diff --git a/app/templates/views/letter-branding/manage-letter-branding.html b/app/templates/views/letter-branding/manage-letter-branding.html index 6903a740c..a7931ff3a 100644 --- a/app/templates/views/letter-branding/manage-letter-branding.html +++ b/app/templates/views/letter-branding/manage-letter-branding.html @@ -24,7 +24,7 @@

Logos should be SVG files, cropped to artwork bounds and with all fonts outlined.

- {{ file_upload(file_upload_form.file, allowed_file_extensions='.svg', button_text='{} logo'.format('Update' if is_update else 'Upload')) }} + {{ file_upload(file_upload_form.file, allowed_file_extensions=['svg'], button_text='{} logo'.format('Update' if is_update else 'Upload')) }} {% call form_wrapper() %}
{{ letter_branding_details_form.name(param_extensions={ diff --git a/app/templates/views/send.html b/app/templates/views/send.html index 49081b035..6c8166727 100644 --- a/app/templates/views/send.html +++ b/app/templates/views/send.html @@ -19,7 +19,7 @@ diff --git a/app/templates/views/uploads/choose-file.html b/app/templates/views/uploads/choose-file.html index dcf69b1bf..fd28a36b3 100644 --- a/app/templates/views/uploads/choose-file.html +++ b/app/templates/views/uploads/choose-file.html @@ -29,7 +29,7 @@

{{ file_upload( form.file, - allowed_file_extensions='.pdf', + allowed_file_extensions=['pdf'], action=url_for('main.upload_letter', service_id=current_service.id), button_text='Upload your file again' if error else 'Choose file', show_errors=False diff --git a/app/templates/views/uploads/contact-list/column-errors.html b/app/templates/views/uploads/contact-list/column-errors.html index b69503e88..24c4c6a53 100644 --- a/app/templates/views/uploads/contact-list/column-errors.html +++ b/app/templates/views/uploads/contact-list/column-errors.html @@ -49,7 +49,7 @@

{{ file_upload( form.file, - allowed_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=allowed_file_extensions, action=url_for('.upload_contact_list', service_id=current_service.id), button_text='Upload your file again' ) }} diff --git a/app/templates/views/uploads/contact-list/row-errors.html b/app/templates/views/uploads/contact-list/row-errors.html index 0e9bd6be6..ba3fd1d14 100644 --- a/app/templates/views/uploads/contact-list/row-errors.html +++ b/app/templates/views/uploads/contact-list/row-errors.html @@ -44,7 +44,7 @@
{{ file_upload( form.file, - allowed_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=allowed_file_extensions, action=url_for('.upload_contact_list', service_id=current_service.id), button_text='Upload your file again' ) }} diff --git a/app/templates/views/uploads/contact-list/too-many-columns.html b/app/templates/views/uploads/contact-list/too-many-columns.html index 313e14d47..abc28d08d 100644 --- a/app/templates/views/uploads/contact-list/too-many-columns.html +++ b/app/templates/views/uploads/contact-list/too-many-columns.html @@ -58,7 +58,7 @@
{{ file_upload( form.file, - allowed_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=allowed_file_extensions, action=url_for('.upload_contact_list', service_id=current_service.id), button_text='Upload your file again' ) }} diff --git a/app/templates/views/uploads/contact-list/upload.html b/app/templates/views/uploads/contact-list/upload.html index a4c487e7e..93f7a8140 100644 --- a/app/templates/views/uploads/contact-list/upload.html +++ b/app/templates/views/uploads/contact-list/upload.html @@ -35,7 +35,7 @@
{{ file_upload( form.file, - allowed_file_extensions=allowed_spreadsheet_file_extensions, + allowed_file_extensions=allowed_file_extensions, button_text='Upload your file again' if error else 'Choose file', show_errors=False )}} diff --git a/app/templates/views/uploads/preview.html b/app/templates/views/uploads/preview.html index 10588b153..1c74f6635 100644 --- a/app/templates/views/uploads/preview.html +++ b/app/templates/views/uploads/preview.html @@ -19,7 +19,7 @@
{{ file_upload( re_upload_form.file, - allowed_file_extensions='.pdf', + allowed_file_extensions=['pdf'], action=url_for('main.upload_letter', service_id=current_service.id), button_text='Upload your file again' ) }} diff --git a/app/utils.py b/app/utils.py index 19ad0668b..a983fe97a 100644 --- a/app/utils.py +++ b/app/utils.py @@ -291,7 +291,7 @@ def id_safe(string): class Spreadsheet(): - ALLOWED_FILE_EXTENSIONS = {'csv', 'xlsx', 'xls', 'ods', 'xlsm', 'tsv'} + ALLOWED_FILE_EXTENSIONS = ('csv', 'xlsx', 'xls', 'ods', 'xlsm', 'tsv') def __init__(self, csv_data=None, rows=None, filename=''): diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index 4ae3d3754..e56baeaef 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -309,8 +309,7 @@ def test_example_spreadsheet( '1 phone number name date' ) assert page.select_one('input[type=file]').has_attr('accept') - assert set(page.select_one('input[type=file]')['accept'].split(",")) ==\ - {'.csv', '.xlsx', '.xls', '.ods', '.xlsm', '.tsv'} + assert page.select_one('input[type=file]')['accept'] == '.csv,.xlsx,.xls,.ods,.xlsm,.tsv' def test_example_spreadsheet_for_letters( @@ -511,8 +510,7 @@ def test_upload_csv_file_with_errors_shows_check_page_with_errors( page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert page.select_one('input[type=file]').has_attr('accept') - assert set(page.select_one('input[type=file]')['accept'].split(",")) ==\ - {'.csv', '.xlsx', '.xls', '.ods', '.xlsm', '.tsv'} + assert page.select_one('input[type=file]')['accept'] == '.csv,.xlsx,.xls,.ods,.xlsm,.tsv' content = response.get_data(as_text=True) assert 'There’s a problem with example.csv' in content @@ -906,8 +904,7 @@ def test_upload_csv_file_with_missing_columns_shows_error( assert 'file_uploads' not in session assert page.select_one('input[type=file]').has_attr('accept') - assert set(page.select_one('input[type=file]')['accept'].split(",")) == \ - {'.csv', '.xlsx', '.xls', '.ods', '.xlsm', '.tsv'} + assert page.select_one('input[type=file]')['accept'] == '.csv,.xlsx,.xls,.ods,.xlsm,.tsv' assert normalize_spaces(page.select('.banner-dangerous')[0].text) == expected_error diff --git a/tests/app/main/views/uploads/test_upload_contact_list.py b/tests/app/main/views/uploads/test_upload_contact_list.py index 9915d0696..5896d5da6 100644 --- a/tests/app/main/views/uploads/test_upload_contact_list.py +++ b/tests/app/main/views/uploads/test_upload_contact_list.py @@ -18,8 +18,7 @@ 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 page.select_one('form input')['accept'] == '.csv,.xlsx,.xls,.ods,.xlsm,.tsv' assert normalize_spaces(page.select('.spreadsheet')[0].text) == ( 'Example A ' @@ -236,8 +235,7 @@ 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 page.select_one('form input')['accept'] == '.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