Use ajax to auto-refresh reply-to email verifiaction page

This commit is contained in:
Pea Tyczynska
2019-05-14 17:53:00 +01:00
parent 9d2b60b56b
commit 8f3b560a4e
4 changed files with 57 additions and 27 deletions

View File

@@ -4,6 +4,7 @@ from flask import (
abort,
current_app,
flash,
jsonify,
redirect,
render_template,
request,
@@ -422,6 +423,22 @@ def service_add_email_reply_to(service_id):
@login_required
@user_has_permissions('manage_service')
def verify_reply_to_address(service_id, notification_id):
return render_template(
'views/service-settings/email-reply-to/verify.html',
service_id=service_id,
notification_id=notification_id,
partials=get_verify_reply_to_address_partials(service_id, notification_id)
)
@main.route("/services/<service_id>/service-settings/email-reply-to/<notification_id>/verify.json")
@login_required
@user_has_permissions('manage_service')
def verify_reply_to_address_updates(service_id, notification_id):
return jsonify(**get_verify_reply_to_address_partials(service_id, notification_id))
def get_verify_reply_to_address_partials(service_id, notification_id):
notification = notification_api_client.get_notification(current_app.config["NOTIFY_SERVICE_ID"], notification_id)
verification_status = "pending"
is_default = request.args.get('is_default', False)
@@ -435,14 +452,16 @@ def verify_reply_to_address(service_id, notification_id):
if notification["status"] in ["failed", "permanent-failure", "technical-failure", "temporary-failure"]:
verification_status = "failure"
# also include condition for when lots of time passes
return render_template(
'views/service-settings/email-reply-to/verify.html',
reply_to_email_address=notification["to"],
service_id=service_id,
notification_id=notification_id,
verification_status=verification_status,
is_default=is_default
)
return {
'status': render_template(
'views/service-settings/email-reply-to/_verify-updates.html',
reply_to_email_address=notification["to"],
service_id=current_service.id,
notification_id=notification_id,
verification_status=verification_status,
is_default=is_default,
),
}
@main.route(

View File

@@ -0,0 +1,22 @@
{% from "components/banner.html" import banner %}
<div class="ajax-block-container">
{% if verification_status == "pending" %}
<p>
We have sent a notification to {{ reply_to_email_address }} to check if it's a working email address.
</p>
<p>
Once we receive a delivery confirmation, we will update your list of reply-to email addresses.
</p>
<p>
<a href="{{ url_for('main.verify_reply_to_address', service_id=service_id, notification_id=notification_id) + "?is_default={}".format(is_default) }}"">Refresh</a>
</p>
{% elif verification_status == "success" %}
{{ banner("Yay success! Your new reply-to email has been added ^__^", type='default', with_tick=True) }}
{% elif verification_status == "failure" %}
{{ banner("Sorry dawg, this email address doesn't seem to be working :d", type='dangerous') }}
<a href={{ url_for('main.service_add_email_reply_to', service_id=service_id) }}>Try again</a>
{% endif %}
</div>

View File

@@ -4,6 +4,7 @@
{% from "components/page-header.html" import page_header %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/form.html" import form_wrapper %}
{% from "components/ajax-block.html" import ajax_block %}
{% block service_page_title %}
Verifying your reply-to email address
@@ -15,22 +16,10 @@
'Verifying your reply-to email address',
back_link=url_for('main.service_email_reply_to', service_id=current_service.id)
) }}
{% if verification_status == "pending" %}
<p>
We have sent a notification to {{ reply_to_email_address }} to check if it's a working email address.
</p>
<p>
Once we receive a delivery confirmation, we will update your list of reply-to email addresses.
</p>
<p>
<a href="{{ url_for('main.verify_reply_to_address', service_id=service_id, notification_id=notification_id) + "?is_default={}".format(is_default) }}"">Refresh</a>
</p>
{% elif verification_status == "success" %}
{{ banner("Yay success! Your new reply-to email has been added ^__^", type='message', with_tick=True) }}
{% elif verification_status == "failure" %}
{{ banner("Sorry dawg, this email address doesn't seem to be working :d", type='dangerous') }}
<a href={{ url_for('main.service_add_email_reply_to', service_id=service_id) }}>Try again</a>
{% endif %}
{{ ajax_block(
partials,
url_for('main.verify_reply_to_address_updates', service_id=service_id, notification_id=notification_id),
'status',
finished=finished
) }}
{% endblock %}