Users can set a value that appears as the sender of a text message.

It can be up to eleven characters alpha numeric, no special characters
allowed.
This commit is contained in:
Adam Shimali
2016-07-01 13:47:22 +01:00
parent facfb98bb3
commit 3bfcf0f8b3
8 changed files with 137 additions and 6 deletions

View File

@@ -12,7 +12,8 @@ from wtforms import (
FileField,
BooleanField,
HiddenField,
IntegerField)
IntegerField
)
from wtforms.fields.html5 import EmailField, TelField
from wtforms.validators import (DataRequired, Email, Length, Regexp)
@@ -318,3 +319,13 @@ class ProviderForm(Form):
class ServiceReplyToEmailFrom(Form):
email_address = email_address()
class ServiceSmsSender(Form):
sms_sender = StringField('', validators=[Length(max=11,
message="Text message sender can't be longer than 11 characters")])
def validate_sms_sender(form, field):
import re
if not re.match('^[a-zA-Z0-9\s]+$', field.data):
raise ValidationError('Sms text message sender can only contain alpha-numeric characters')

View File

@@ -23,7 +23,8 @@ from app.main.forms import (
ConfirmPasswordForm,
ServiceNameForm,
RequestToGoLiveForm,
ServiceReplyToEmailFrom
ServiceReplyToEmailFrom,
ServiceSmsSender
)
from app import user_api_client
from app import current_service
@@ -261,3 +262,29 @@ def service_set_reply_to_email(service_id):
return render_template(
'views/service-settings/set-reply-to-email.html',
form=form)
@main.route("/services/<service_id>/service-settings/set-sms-sender", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings', admin_override=True)
def service_set_sms_sender(service_id):
form = ServiceSmsSender()
if request.method == 'GET':
form.sms_sender.data = current_service.get('sms_sender')
if form.validate_on_submit():
message = 'SMS Sender set to {}'.format(form.sms_sender.data)
service_api_client.update_service(
current_service['id'],
current_service['name'],
current_service['active'],
current_service['message_limit'],
current_service['restricted'],
current_service['users'],
current_service['email_from'],
current_service['reply_to_email_address'],
sms_sender=form.sms_sender.data if form.sms_sender.data else None)
flash(message, 'default_with_tick')
return redirect(url_for('.service_settings', service_id=service_id))
return render_template(
'views/service-settings/set-sms-sender.html',
form=form)

View File

@@ -62,7 +62,8 @@ class ServiceAPIClient(NotificationsAPIClient):
restricted,
users,
email_from,
reply_to_email_address=None):
reply_to_email_address=None,
sms_sender=None):
"""
Update a service.
"""
@@ -74,7 +75,8 @@ class ServiceAPIClient(NotificationsAPIClient):
"restricted": restricted,
"users": users,
"email_from": email_from,
"reply_to_email_address": reply_to_email_address
"reply_to_email_address": reply_to_email_address,
"sms_sender": sms_sender
}
_attach_current_user(data)
endpoint = "/service/{0}".format(service_id)

View File

@@ -18,6 +18,10 @@
'title': 'Set email reply to address',
'link': url_for('.service_set_reply_to_email', service_id=current_service.id)
},
{
'title': 'Set text message sender name',
'link': url_for('.service_set_sms_sender', service_id=current_service.id)
},
{
'title': 'Request to go live and turn off trial mode',
'link': url_for('.service_request_to_go_live', service_id=current_service.id),

View File

@@ -0,0 +1,28 @@
{% extends "withnav_template.html" %}
{% from "components/textbox.html" import textbox %}
{% from "components/page-footer.html" import page_footer %}
{% block page_title %}
Set text message sender name GOV.UK Notify
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-three-quarters">
<h1 class="heading-large">Set text message sender name</h1>
<form method="post">
{{ textbox(
form.sms_sender,
width='1-1',
safe_error_message=True
) }}
{{ page_footer(
'Save',
back_link=url_for('.service_settings', service_id=current_service.id)
) }}
</form>
</div>
</div>
{% endblock %}