diff --git a/app/main/views/send.py b/app/main/views/send.py index 1ae378123..7595ac627 100644 --- a/app/main/views/send.py +++ b/app/main/views/send.py @@ -112,17 +112,9 @@ def send_messages(service_id, template_id): form = CsvUploadForm() if form.validate_on_submit(): try: - file_data = Spreadsheet.from_file(form.file.data, filename=form.file.data.filename).as_dict - if template.template_type == 'letter': - def is_ascii(s): - return all(ord(c) < 128 for c in s) - - if is_ascii(str(file_data)) is False: - raise ValueError("Invalid characters in {}".format(form.file.data.filename)) - upload_id = s3upload( service_id, - file_data, + Spreadsheet.from_file(form.file.data, filename=form.file.data.filename).as_dict, current_app.config['AWS_REGION'] ) session['upload_data'] = { @@ -137,10 +129,6 @@ def send_messages(service_id, template_id): flash('Couldn’t read {}. Try using a different file format.'.format( form.file.data.filename )) - except ValueError: - flash('Invalid characters in the address fields within {}.'.format( - form.file.data.filename - )) column_headings = first_column_headings[template.template_type] + list(template.placeholders) diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index d3408678b..401bf0490 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -1529,7 +1529,7 @@ def test_check_messages_shows_over_max_row_error( ) -def test_special_characters_in_dvla_recipients_file_shows_error( +def test_special_characters_in_letter_recipients_file_shows_error( logged_in_client, mock_get_users_by_service, mock_get_service, @@ -1543,20 +1543,25 @@ def test_special_characters_in_dvla_recipients_file_shows_error( mock_recipients = mocker.patch('app.utils.Spreadsheet.from_file').return_value mock_recipients.as_dict = { 'file_name': 'invalid_characters.csv', 'data': - 'address line 1,address line 2,address line 3,address line 4,address line 5,address line 6,postcode\r\n'\ + 'address line 1,address line 2,address line 3,address line 4,address line 5,address line 6,postcode\r\n' 'B. √Name,345 Example Street,,,,,ZM4 6HQ©' } response = logged_in_client.post( url_for('main.send_messages', service_id=SERVICE_ONE_ID, template_id=fake_uuid), data={'file': (None, 'invalid_characters.csv')}, + follow_redirects=True ) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert ' '.join( page.find('div', class_='banner-dangerous').text.split() - ) == 'Invalid characters in the address fields within invalid_characters.csv.' + ) == ( + 'There is a problem with your data ' + 'You need to fix 1 address ' + 'Skip to file contents' + ) def test_check_messages_redirects_if_no_upload_data(logged_in_client, service_one, mocker):