diff --git a/app/main/views/send.py b/app/main/views/send.py index 91e9814af..1d1304dc4 100644 --- a/app/main/views/send.py +++ b/app/main/views/send.py @@ -13,6 +13,7 @@ from notifications_utils.recipients import RecipientCSV, first_column_headings from notifications_utils.sanitise_text import SanitiseASCII from xlrd.biffh import XLRDError from xlrd.xldate import XLDateError +from pprint import pprint from app import ( current_service, @@ -563,6 +564,7 @@ def _check_messages(service_id, template_id, upload_id, preview_row): sent_previously=job_api_client.has_sent_previously( service_id, template.id, db_template["version"], original_file_name ), + template_id=template_id ) @@ -606,17 +608,18 @@ def check_messages(service_id, template_id, upload_id, row_index=2): metadata_kwargs["sender_id"] = session["sender_id"] set_metadata_on_csv_upload(service_id, upload_id, **metadata_kwargs) - + session['scheduled_for']=request.form.get("scheduled_for", "") return render_template("views/check/ok.html", **data) @main.route("/services//start-job/", methods=["POST"]) @user_has_permissions("send_messages", restrict_admin_usage=True) def start_job(service_id, upload_id): + scheduled_for = session.pop('scheduled_for', None) job_api_client.create_job( upload_id, service_id, - scheduled_for=request.form.get("scheduled_for", ""), + scheduled_for=scheduled_for, ) session.pop("sender_id", None) @@ -630,6 +633,54 @@ def start_job(service_id, upload_id): ) +@main.route( + "/services///check//preview", + methods=["POST"], +) +@main.route( + "/services///check//row-/preview", + methods=["POST"], +) +@main.route("/services//preview-job/", methods=["POST"]) +@user_has_permissions("send_messages", restrict_admin_usage=True) +def preview_job(service_id, template_id, upload_id, row_index=2): + # Store form data in session temporarily + session['scheduled_for'] = request.form.get('scheduled_for', 'Not specified') + # session.pop("sender_id", None) + data = _check_messages(service_id, template_id, upload_id, row_index) + data["allowed_file_extensions"] = Spreadsheet.ALLOWED_FILE_EXTENSIONS + + if ( + 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 + or data["sent_previously"] + ): + return render_template("views/check/column-errors.html", **data) + + if data["row_errors"]: + return render_template("views/check/row-errors.html", **data) + + if data["errors"]: + return render_template("views/check/column-errors.html", **data) + + metadata_kwargs = { + "notification_count": data["count_of_recipients"], + "template_id": template_id, + "valid": True, + "original_file_name": data.get("original_file_name", ""), + } + + if session.get("sender_id"): + metadata_kwargs["sender_id"] = session["sender_id"] + + set_metadata_on_csv_upload(service_id, upload_id, **metadata_kwargs) + + return render_template('views/check/preview.html', data=session['scheduled_for'], **data) + + def fields_to_fill_in(template, prefill_current_user=False): if not prefill_current_user: return first_column_headings[template.template_type] + list( diff --git a/app/templates/views/check/ok.html b/app/templates/views/check/ok.html index b795a5971..6fc96f73b 100644 --- a/app/templates/views/check/ok.html +++ b/app/templates/views/check/ok.html @@ -19,11 +19,11 @@ {% block maincolumn_content %} - {{ page_header('Preview of {}'.format(template.name)) }} + {{ page_header('Select delivery time') }} {{ template|string }}
-
- {% if not request.args.from_test %} - -

{{ original_file_name }}

- -
- {% call(item, row_number) list_table( - recipients.displayed_rows, - caption=original_file_name, - caption_visible=False, - field_headings=[ - 'Row in file'|safe - ] + recipients.column_headers - ) %} - {% call index_field() %} - - {% if (item.index + 2) == preview_row %} - {{ item.index + 2 }} - {% else %} - {{ item.index + 2 }} - {% endif %} - - {% endcall %} - {% for column in recipients.column_headers %} - {% if item[column].ignore %} - {{ text_field(item[column].data or '', status='default') }} + - {% endif %} - - {% if count_of_displayed_recipients < count_of_recipients %} + {% endblock %} diff --git a/app/templates/views/check/preview.html b/app/templates/views/check/preview.html new file mode 100644 index 000000000..14b9166f3 --- /dev/null +++ b/app/templates/views/check/preview.html @@ -0,0 +1,96 @@ +{% extends "withnav_template.html" %} +{% from "components/banner.html" import banner_wrapper %} +{% from "components/table.html" import list_table, field, text_field, index_field, hidden_field_heading %} +{% from "components/page-header.html" import page_header %} +{% from "components/components/button/macro.njk" import usaButton %} +{% from "components/components/skip-link/macro.njk" import usaSkipLink %} +{% from "components/components/back-link/macro.njk" import usaBackLink %} + +{% set file_contents_header_id = 'file-preview' %} + +{% block service_page_title %} + {{ "Preview of {}".format(template.name) }} +{% endblock %} + + +{% block backLink %} + {{ usaBackLink({ "href": back_link }) }} +{% endblock %} + +{% block maincolumn_content %} + + {{ page_header('Send messages') }} +

Message

+ {{ template|string }} +
+ +
+ + + + +{% endblock %}