diff --git a/app/main/views/send.py b/app/main/views/send.py
index 36a43b9c0..f2a7748cb 100644
--- a/app/main/views/send.py
+++ b/app/main/views/send.py
@@ -581,6 +581,7 @@ def check_messages(service_id, template_type, upload_id, row_index=2):
data['recipients'].too_many_rows or
not data['count_of_recipients'] or
not data['recipients'].has_recipient_columns or
+ data['recipients'].duplicate_recipient_column_headers or
data['recipients'].missing_column_headers
):
return render_template('views/check/column-errors.html', **data)
diff --git a/app/templates/views/check/column-errors.html b/app/templates/views/check/column-errors.html
index 4fec14c21..cdfe988b1 100644
--- a/app/templates/views/check/column-errors.html
+++ b/app/templates/views/check/column-errors.html
@@ -69,6 +69,21 @@
) }}.
+ {% elif recipients.duplicate_recipient_column_headers %}
+
+
+ Your file has more than one column called {{ (
+ recipients.duplicate_recipient_column_headers
+ ) | formatted_list(
+ conjunction='or',
+ prefix='',
+ prefix_plural=''
+ ) }}
+
+
+ Delete or rename one of these columns and try again.
+
+
{% elif recipients.missing_column_headers %}
@@ -128,6 +143,8 @@
{% if not request.args.from_test %}
+ {% set column_headers = recipients._raw_column_headers if recipients.duplicate_recipient_column_headers else recipients.column_headers %}
+
@@ -137,14 +154,14 @@
caption_visible=False,
field_headings=[
'Row in file1'|safe
- ] + recipients.column_headers
+ ] + column_headers
) %}
{% call index_field() %}
{{ item.index + 2 }}
{% endcall %}
- {% for column in recipients.column_headers %}
+ {% for column in column_headers %}
{% if item['columns'][column].error and not recipients.missing_column_headers %}
{% call field() %}
diff --git a/requirements.txt b/requirements.txt
index 31dba0fc9..3cb8d632a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -18,4 +18,4 @@ notifications-python-client==4.7.2
# PaaS
awscli-cwlogs>=1.4,<1.5
-git+https://github.com/alphagov/notifications-utils.git@23.8.0#egg=notifications-utils==23.8.0
+git+https://github.com/alphagov/notifications-utils.git@23.8.1#egg=notifications-utils==23.8.1
diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py
index 3554a115d..c349c6d8d 100644
--- a/tests/app/main/views/test_send.py
+++ b/tests/app/main/views/test_send.py
@@ -421,6 +421,17 @@ def test_upload_csvfile_with_errors_shows_check_page_with_errors(
'Skip to file contents'
)
),
+ (
+ """
+ phone number, phone number, PHONE_NUMBER
+ +447700900111,+447700900222,+447700900333,
+ """,
+ (
+ 'Your file has more than one column called ‘phone number’ or ‘PHONE_NUMBER’ '
+ 'Delete or rename one of these columns and try again. '
+ 'Skip to file contents'
+ )
+ ),
(
"""
phone number, name
@@ -614,6 +625,40 @@ def test_upload_valid_csv_shows_preview_and_table(
assert normalize_spaces(str(page.select('table tbody td')[index + 1])) == cell
+def test_show_all_columns_if_there_are_duplicate_recipient_columns(
+ client_request,
+ mocker,
+ mock_get_live_service,
+ mock_get_service_template_with_placeholders,
+ mock_get_users_by_service,
+ mock_get_detailed_service_for_today,
+ fake_uuid,
+):
+
+ with client_request.session_transaction() as session:
+ session['upload_data'] = {'template_id': fake_uuid}
+
+ mocker.patch('app.main.views.send.s3download', return_value="""
+ phone number, phone_number, PHONENUMBER
+ 07700900001, 07700900002, 07700900003
+ """)
+
+ page = client_request.get(
+ 'main.check_messages',
+ service_id=SERVICE_ONE_ID,
+ template_type='sms',
+ upload_id=fake_uuid,
+ _test_page_title=False,
+ )
+
+ assert normalize_spaces(page.select_one('thead').text) == (
+ 'Row in file1 phone number phone_number PHONENUMBER'
+ )
+ assert normalize_spaces(page.select_one('tbody').text) == (
+ '2 07700900003 07700900003 07700900003'
+ )
+
+
@pytest.mark.parametrize('row_index, expected_status', [
(0, 404),
(1, 404),