Let users switch channels on and off by themselves

We let people do this for letters already. We should let them do it for
emails and texts too, rather than have to email us.
This commit is contained in:
Chris Hill-Scott
2019-01-29 14:51:31 +00:00
parent eae0a5a632
commit 3b15b04fc2
8 changed files with 183 additions and 105 deletions

View File

@@ -696,10 +696,18 @@ class ServiceLetterContactBlockForm(StripWhitespaceForm):
)
class ServiceSwitchLettersForm(StripWhitespaceForm):
class ServiceSwitchChannelForm(StripWhitespaceForm):
def __init__(self, channel, *args, **kwargs):
super().__init__(*args, **kwargs)
self.enabled.label.text = 'Send {}'.format({
'email': 'emails',
'sms': 'text messages',
'letter': 'letters',
}.get(channel))
enabled = RadioField(
'Send letters',
'Choices',
choices=[
('on', 'On'),
('off', 'Off'),

View File

@@ -48,7 +48,7 @@ from app.main.forms import (
ServiceReplyToEmailForm,
ServiceSetBranding,
ServiceSmsSenderForm,
ServiceSwitchLettersForm,
ServiceSwitchChannelForm,
SMSPrefixForm,
branding_options_dict,
)
@@ -368,15 +368,6 @@ def service_set_contact_link(service_id):
return render_template('views/service-settings/contact_link.html', form=form)
@main.route("/services/<service_id>/service-settings/set-email", methods=['GET'])
@login_required
@user_has_permissions('manage_service')
def service_set_email(service_id):
return render_template(
'views/service-settings/set-email.html',
)
@main.route("/services/<service_id>/service-settings/set-reply-to-email", methods=['GET'])
@login_required
@user_has_permissions('manage_service')
@@ -484,15 +475,6 @@ def service_set_inbound_number(service_id):
)
@main.route("/services/<service_id>/service-settings/set-sms", methods=['GET'])
@login_required
@user_has_permissions('manage_service')
def service_set_sms(service_id):
return render_template(
'views/service-settings/set-sms.html',
)
@main.route("/services/<service_id>/service-settings/sms-prefix", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_service')
@@ -546,23 +528,41 @@ def service_set_inbound_sms(service_id):
)
@main.route("/services/<service_id>/service-settings/set-letters", methods=['GET', 'POST'])
@main.route("/services/<service_id>/service-settings/set-letters", methods=['GET'])
@login_required
@user_has_permissions('manage_service')
def service_set_letters(service_id):
form = ServiceSwitchLettersForm(
enabled='on' if current_service.has_permission('letter') else 'off'
return redirect(url_for(
'.service_set_channel',
service_id=current_service.id,
channel='letter',
))
@main.route("/services/<service_id>/service-settings/set-<channel>", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_service')
def service_set_channel(service_id, channel):
if channel not in {'email', 'sms', 'letter'}:
abort(404)
form = ServiceSwitchChannelForm(
channel=channel,
enabled='on' if current_service.has_permission(channel) else 'off'
)
if form.validate_on_submit():
current_service.force_permission(
'letter',
channel,
on=(form.enabled.data == 'on'),
)
return redirect(
url_for(".service_settings", service_id=service_id)
)
return render_template(
'views/service-settings/set-letters.html',
'views/service-settings/set-{}.html'.format(channel),
form=form,
)

View File

@@ -227,8 +227,8 @@ class HeaderNavigation(Navigation):
'service_name_change_confirm',
'service_preview_email_branding',
'service_set_auth_type',
'service_set_channel',
'service_set_contact_link',
'service_set_email',
'service_set_email_branding',
'service_set_inbound_number',
'service_set_inbound_sms',
@@ -237,7 +237,6 @@ class HeaderNavigation(Navigation):
'service_set_letters',
'service_set_postage',
'service_set_reply_to_email',
'service_set_sms',
'service_set_sms_prefix',
'service_settings',
'service_sms_senders',
@@ -354,8 +353,8 @@ class MainNavigation(Navigation):
'service_name_change_confirm',
'service_preview_email_branding',
'service_set_auth_type',
'service_set_channel',
'service_set_contact_link',
'service_set_email',
'service_set_email_branding',
'service_set_inbound_number',
'service_set_inbound_sms',
@@ -364,7 +363,6 @@ class MainNavigation(Navigation):
'service_set_letters',
'service_set_postage',
'service_set_reply_to_email',
'service_set_sms',
'service_set_sms_prefix',
'service_settings',
'service_sms_senders',
@@ -690,8 +688,8 @@ class CaseworkNavigation(Navigation):
'service_name_change_confirm',
'service_preview_email_branding',
'service_set_auth_type',
'service_set_channel',
'service_set_contact_link',
'service_set_email',
'service_set_email_branding',
'service_set_inbound_number',
'service_set_inbound_sms',
@@ -700,7 +698,6 @@ class CaseworkNavigation(Navigation):
'service_set_letters',
'service_set_postage',
'service_set_reply_to_email',
'service_set_sms',
'service_set_sms_prefix',
'service_settings',
'service_sms_senders',
@@ -926,8 +923,8 @@ class OrgNavigation(Navigation):
'service_name_change_confirm',
'service_preview_email_branding',
'service_set_auth_type',
'service_set_channel',
'service_set_contact_link',
'service_set_email',
'service_set_email_branding',
'service_set_inbound_number',
'service_set_inbound_sms',
@@ -936,7 +933,6 @@ class OrgNavigation(Navigation):
'service_set_letters',
'service_set_postage',
'service_set_reply_to_email',
'service_set_sms',
'service_set_sms_prefix',
'service_settings',
'service_sms_senders',

View File

@@ -71,12 +71,14 @@
{{ text_field('Send emails') }}
{{ boolean_field('email' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_email',
service_id=current_service.id),
permissions=['manage_service']
)
}}
'Change',
url_for(
'.service_set_channel',
channel='email',
service_id=current_service.id
),
permissions=['manage_service']
)}}
{% endcall %}
{% call settings_row(if_has_permission='email') %}
@@ -121,12 +123,14 @@
{{ text_field('Send text messages') }}
{{ boolean_field('sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_sms',
service_id=current_service.id),
permissions=['manage_service']
)
}}
'Change',
url_for(
'.service_set_channel',
service_id=current_service.id,
channel='sms'
),
permissions=['manage_service']
)}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
@@ -197,12 +201,14 @@
{{ text_field('Send letters') }}
{{ boolean_field('letter' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_letters',
service_id=current_service.id),
permissions=['manage_service']
)
}}
'Change',
url_for(
'.service_set_channel',
channel='letter',
service_id=current_service.id
),
permissions=['manage_service']
)}}
{% endcall %}
{% call settings_row(if_has_permission='letter') %}

View File

@@ -1,37 +1,28 @@
{% extends "withnav_template.html" %}
{% from "components/textbox.html" import textbox %}
{% from "components/form.html" import form_wrapper %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/radios.html" import radios %}
{% block service_page_title %}
Emails
Send emails
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-five-sixths">
<h1 class="heading-large">Emails</h1>
{% if 'email' in current_service.permissions %}
<p>
Your service can send emails.
</p>
<p>
If you want to turn it off,
<a href="{{ url_for('.support') }}">get in touch with the GOV.UK Notify team</a>.
</p>
{% else %}
<p>
Sending emails is an invitation&#8209;only feature.
</p>
<p>
If you want to try it out,
<a href="{{ url_for('.support') }}">get in touch with the GOV.UK Notify team</a>.
</p>
{% endif %}
{{ page_footer(
back_link=url_for('.service_settings', service_id=current_service.id),
back_link_text='Back to settings'
) }}
<h1 class="heading-large">Send emails</h1>
<p>
Its free to send emails through GOV.UK Notify.
</p>
{% call form_wrapper() %}
{{ radios(form.enabled) }}
{{ page_footer(
'Save',
back_link=url_for('.service_settings', service_id=current_service.id),
back_link_text='Back to settings'
) }}
{% endcall %}
</div>
</div>

View File

@@ -1,37 +1,37 @@
{% extends "withnav_template.html" %}
{% from "components/textbox.html" import textbox %}
{% from "components/form.html" import form_wrapper %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/radios.html" import radios %}
{% block service_page_title %}
Text messages
Send text messages
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-five-sixths">
<h1 class="heading-large">Text messages</h1>
{% if 'sms' in current_service.permissions %}
<p>
Your service can send text messages.
</p>
<p>
If you want to turn it off,
<a href="{{ url_for('.support') }}">get in touch with the GOV.UK Notify team</a>.
</p>
{% else %}
<p>
Sending text messages is an invitation&#8209;only feature.
</p>
<p>
If you want to try it out,
<a href="{{ url_for('.support') }}">get in touch with the GOV.UK Notify team</a>.
</p>
{% endif %}
{{ page_footer(
back_link=url_for('.service_settings', service_id=current_service.id),
back_link_text='Back to settings'
) }}
<h1 class="heading-large">Send text messages</h1>
<p>
You have a free allowance of
{{ '{:,}'.format(current_service.free_sms_fragment_limit) }} text messages each
financial year.
</p>
<p>
It costs 1.58 pence (plus VAT) for each text message you send
after your free allowance.
</p>
<p>
See <a href="{{ url_for(".pricing", _anchor="letters") }}">pricing</a> for more details.
</p>
{% call form_wrapper() %}
{{ radios(form.enabled) }}
{{ page_footer(
'Save',
back_link=url_for('.service_settings', service_id=current_service.id),
back_link_text='Back to settings'
) }}
{% endcall %}
</div>
</div>