mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-06 17:38:30 -04:00
Merge pull request #1212 from GSA/1210-create-confirmation-status-page-the-last-page-in-the-preview-send-flow
Create confirmation status alert (the last page in the preview send flow) #1211
This commit is contained in:
@@ -62,6 +62,14 @@
|
||||
margin: -20px units(1) 20px units(1);
|
||||
}
|
||||
|
||||
h2.sms-message-header {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
h2.recipient-list {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.sms-message-status-outbound {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ from flask import (
|
||||
redirect,
|
||||
render_template,
|
||||
request,
|
||||
session,
|
||||
stream_with_context,
|
||||
url_for,
|
||||
)
|
||||
@@ -373,6 +374,13 @@ def get_job_partials(job):
|
||||
job.template_type
|
||||
)
|
||||
|
||||
if request.referrer is not None:
|
||||
session["arrived_from_preview_page"] = "check" in request.referrer
|
||||
else:
|
||||
session["arrived_from_preview_page"] = False
|
||||
|
||||
arrived_from_preview_page_url = session.get("arrived_from_preview_page", False)
|
||||
|
||||
return {
|
||||
"counts": counts,
|
||||
"notifications": render_template(
|
||||
@@ -396,6 +404,7 @@ def get_job_partials(job):
|
||||
"status": render_template(
|
||||
"partials/jobs/status.html",
|
||||
job=job,
|
||||
arrived_from_preview_page_url=arrived_from_preview_page_url,
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@@ -1012,8 +1012,9 @@ def send_notification(service_id, template_id):
|
||||
|
||||
return redirect(
|
||||
url_for(
|
||||
".view_notification",
|
||||
".view_job",
|
||||
service_id=service_id,
|
||||
job_id=upload_id,
|
||||
from_job=upload_id,
|
||||
notification_id=notifications["notifications"][0]["id"],
|
||||
# used to show the final step of the tour (help=3) or not show
|
||||
|
||||
@@ -1,13 +1,48 @@
|
||||
{% set display_message_status %}
|
||||
{% if job.template.content %}
|
||||
<h2 class="sms-message-header">Message</h2>
|
||||
<div class="sms-message-wrapper">{{ current_service.name }}: {{job.template.content}}</div>
|
||||
{% endif %}
|
||||
{% if job.original_file_name %}
|
||||
<h2 class="recipient-list">Recipient list</h2>
|
||||
<div>
|
||||
<ul class="usa-icon-list">
|
||||
<li class="usa-icon-list__item">
|
||||
<img src="{{ url_for('static', filename='img/material-icons/description.svg') }}" alt="Description Icon">
|
||||
<div class="usa-icon-list__content">
|
||||
<h3>{{ job.original_file_name }}</h3>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
<h2>Delivery Status</h2>
|
||||
{% endset %}
|
||||
|
||||
<div class="ajax-block-container">
|
||||
<p class='bottom-gutter'>
|
||||
{% if job.scheduled_for %}
|
||||
{% if job.processing_started %}
|
||||
Sent by {{ job.created_by.name }} on {{ job.processing_started|format_datetime_normal }}
|
||||
{% if job.still_processing or arrived_from_preview_page_url %}
|
||||
{% if job.scheduled_for %}
|
||||
<div class="usa-alert usa-alert--info">
|
||||
<div class="usa-alert__body">
|
||||
<h4 class="usa-alert__heading">Your text has been scheduled</h4>
|
||||
<p class="usa-alert__text">
|
||||
{{ job.template_name }} - {{ current_service.name }} was scheduled on {{ job.scheduled_for|format_datetime_normal }} by {{ job.created_by.name }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{display_message_status}}
|
||||
{% else %}
|
||||
Uploaded by {{ job.created_by.name }} on {{ job.created_at|format_datetime_normal }}
|
||||
<div class="usa-alert usa-alert--success">
|
||||
<div class="usa-alert__body">
|
||||
<h4 class="usa-alert__heading">Your text has been sent</h4>
|
||||
<p class="usa-alert__text">
|
||||
{{ job.template_name }} - {{ current_service.name }} was sent on {{ job.created_at|format_datetime_normal }} by {{ job.created_by.name }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{display_message_status}}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
Sent by {{ job.created_by.name }} on {{ job.created_at|format_datetime_normal }}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if job.status == 'sending limits exceeded'%}
|
||||
|
||||
@@ -5,26 +5,13 @@
|
||||
{% from "components/components/back-link/macro.njk" import usaBackLink %}
|
||||
|
||||
{% block service_page_title %}
|
||||
{{ job.original_file_name }}
|
||||
{{ "Message status" }}
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
|
||||
{{ page_header(job.original_file_name) }}
|
||||
|
||||
{% if not job.processing_finished %}
|
||||
<div
|
||||
data-module="update-content"
|
||||
data-resource="{{ updates_url }}"
|
||||
data-key="status"
|
||||
data-form=""
|
||||
>
|
||||
{% endif %}
|
||||
{{ partials['status']|safe }}
|
||||
{% if not job.processing_finished %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ page_header("Message status") }}
|
||||
{{ partials['status']|safe }}
|
||||
{% if not finished %}
|
||||
<div
|
||||
data-module="update-content"
|
||||
|
||||
@@ -88,7 +88,7 @@ def test_should_show_page_for_one_job(
|
||||
status=status_argument,
|
||||
)
|
||||
|
||||
assert page.h1.text.strip() == "thisisatest.csv"
|
||||
assert page.h1.text.strip() == "Message status"
|
||||
assert " ".join(page.find("tbody").find("tr").text.split()) == (
|
||||
"2021234567 template content Delivered 01-01-2016 at 06:09 AM"
|
||||
)
|
||||
@@ -237,11 +237,11 @@ def test_should_show_job_with_sending_limit_exceeded_status(
|
||||
job_id=fake_uuid,
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select("main p")[1].text) == (
|
||||
assert normalize_spaces(page.select("main p")[2].text) == (
|
||||
"Notify cannot send these messages because you have reached a limit. "
|
||||
"You can only send 1,000 messages per day and 250,000 messages in total."
|
||||
)
|
||||
assert normalize_spaces(page.select("main p")[2].text) == (
|
||||
assert normalize_spaces(page.select("main p")[3].text) == (
|
||||
"Upload this spreadsheet again tomorrow or contact the Notify.gov team to raise the limit."
|
||||
)
|
||||
|
||||
@@ -350,7 +350,7 @@ def test_should_show_scheduled_job(
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select("main div p")[1].text) == (
|
||||
"Sending Two week reminder today at 00:00 US/Eastern"
|
||||
"Example template - service one was scheduled on January 02, 2016 at 12:00 AM US/Eastern by Test User"
|
||||
)
|
||||
|
||||
assert page.select("main p a")[0]["href"] == url_for(
|
||||
@@ -424,11 +424,7 @@ def test_should_show_updates_for_one_job_as_json(
|
||||
assert "2021234567" in content["notifications"]
|
||||
assert "Status" in content["notifications"]
|
||||
assert "Delivered" in content["notifications"]
|
||||
assert (
|
||||
"Sent by Test User on January 01, 2016 at 12:00 AM US/Eastern"
|
||||
in content["status"]
|
||||
)
|
||||
assert "12:00" in content["notifications"]
|
||||
assert "01-01-2016 at 12:00 AM" in content["notifications"]
|
||||
|
||||
|
||||
@freeze_time("2016-01-01 05:00:00.000001")
|
||||
@@ -469,10 +465,7 @@ def test_should_show_updates_for_scheduled_job_as_json(
|
||||
assert "2021234567" in content["notifications"]
|
||||
assert "Status" in content["notifications"]
|
||||
assert "Delivered" in content["notifications"]
|
||||
assert (
|
||||
"Sent by Test User on June 01, 2016 at 04:00 PM US/Eastern" in content["status"]
|
||||
)
|
||||
assert "12:00" in content["notifications"]
|
||||
assert "01-01-2016 at 12:00 AM" in content["notifications"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
||||
@@ -267,10 +267,6 @@ def test_notification_page_doesnt_link_to_template_in_tour(
|
||||
notification_id=fake_uuid,
|
||||
help=3,
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select("main p:nth-of-type(1)")[0].text) == (
|
||||
expected_message
|
||||
)
|
||||
assert len(page.select("main p:nth-of-type(1) a")) == 0
|
||||
|
||||
|
||||
|
||||
@@ -2030,7 +2030,7 @@ def test_create_job_should_call_api(
|
||||
_expected_status=200,
|
||||
)
|
||||
|
||||
assert original_file_name in page.text
|
||||
assert "Message status" in page.text
|
||||
|
||||
mock_create_job.assert_called_with(
|
||||
job_id,
|
||||
|
||||
Reference in New Issue
Block a user