Merge pull request #1591 from gov-cjwaszczuk/master

Fixed broken edit functionality
This commit is contained in:
Chris Waszczuk
2017-10-30 15:40:32 +00:00
committed by GitHub
5 changed files with 31 additions and 22 deletions

View File

@@ -497,7 +497,7 @@ class ServiceReplyToEmailForm(Form):
is_default = BooleanField("Make this email address the default") is_default = BooleanField("Make this email address the default")
class ServiceSmsSender(Form): class ServiceSmsSenderForm(Form):
sms_sender = StringField( sms_sender = StringField(
'Text message sender', 'Text message sender',
validators=[ validators=[
@@ -512,6 +512,10 @@ class ServiceSmsSender(Form):
raise ValidationError('Use letters and numbers only') raise ValidationError('Use letters and numbers only')
class ServiceEditInboundNumberForm(Form):
is_default = BooleanField("Make this text message sender the default")
class ServiceLetterContactBlockForm(Form): class ServiceLetterContactBlockForm(Form):
letter_contact_block = TextAreaField( letter_contact_block = TextAreaField(
validators=[ validators=[

View File

@@ -29,7 +29,7 @@ from app.main.forms import (
RequestToGoLiveForm, RequestToGoLiveForm,
ServiceReplyToEmailForm, ServiceReplyToEmailForm,
ServiceInboundNumberForm, ServiceInboundNumberForm,
ServiceSmsSender, ServiceSmsSenderForm,
ServiceLetterContactBlockForm, ServiceLetterContactBlockForm,
ServiceBrandingOrg, ServiceBrandingOrg,
LetterBranding, LetterBranding,
@@ -37,6 +37,7 @@ from app.main.forms import (
InternationalSMSForm, InternationalSMSForm,
OrganisationTypeForm, OrganisationTypeForm,
FreeSMSAllowance, FreeSMSAllowance,
ServiceEditInboundNumberForm,
) )
from app import user_api_client, current_service, organisations_client, inbound_number_client from app import user_api_client, current_service, organisations_client, inbound_number_client
from notifications_utils.formatters import formatted_list from notifications_utils.formatters import formatted_list
@@ -428,7 +429,7 @@ def service_edit_email_reply_to(service_id, reply_to_email_id):
@login_required @login_required
@user_has_permissions('manage_settings', admin_override=True) @user_has_permissions('manage_settings', admin_override=True)
def service_set_sms_sender(service_id): def service_set_sms_sender(service_id):
form = ServiceSmsSender() form = ServiceSmsSenderForm()
if form.validate_on_submit(): if form.validate_on_submit():
if 'inbound_sms' in current_service['permissions']: if 'inbound_sms' in current_service['permissions']:
abort(403) abort(403)
@@ -608,7 +609,7 @@ def service_sms_senders(service_id):
@login_required @login_required
@user_has_permissions('manage_settings', admin_override=True) @user_has_permissions('manage_settings', admin_override=True)
def service_add_sms_sender(service_id): def service_add_sms_sender(service_id):
form = ServiceSmsSender() form = ServiceSmsSenderForm()
sms_sender_count = len(service_api_client.get_sms_senders(service_id)) sms_sender_count = len(service_api_client.get_sms_senders(service_id))
first_sms_sender = sms_sender_count == 0 first_sms_sender = sms_sender_count == 0
if form.validate_on_submit(): if form.validate_on_submit():
@@ -629,24 +630,28 @@ def service_add_sms_sender(service_id):
@user_has_permissions('manage_settings', admin_override=True) @user_has_permissions('manage_settings', admin_override=True)
def service_edit_sms_sender(service_id, sms_sender_id): def service_edit_sms_sender(service_id, sms_sender_id):
sms_sender = service_api_client.get_sms_sender(service_id, sms_sender_id) sms_sender = service_api_client.get_sms_sender(service_id, sms_sender_id)
form = ServiceSmsSender() is_inbound_number = sms_sender['inbound_number_id']
form.sms_sender.data = sms_sender['sms_sender'] if is_inbound_number:
is_inbound_number = True if sms_sender['inbound_number_id'] else False form = ServiceEditInboundNumberForm(is_default=sms_sender['is_default'])
if request.method == 'GET': else:
form.is_default.data = sms_sender['is_default'] form = ServiceSmsSenderForm(**sms_sender)
if form.validate_on_submit(): if form.validate_on_submit():
service_api_client.update_sms_sender( service_api_client.update_sms_sender(
current_service['id'], current_service['id'],
sms_sender_id=sms_sender_id, sms_sender_id=sms_sender_id,
sms_sender=form.sms_sender.data.replace('\r', ''), sms_sender=sms_sender['sms_sender'] if is_inbound_number else form.sms_sender.data.replace('\r', ''),
is_default=True if sms_sender['is_default'] else form.is_default.data is_default=True if sms_sender['is_default'] else form.is_default.data
) )
return redirect(url_for('.service_sms_senders', service_id=service_id)) return redirect(url_for('.service_sms_senders', service_id=service_id))
form.is_default.data = sms_sender['is_default']
return render_template( return render_template(
'views/service-settings/sms-sender/edit.html', 'views/service-settings/sms-sender/edit.html',
form=form, form=form,
sms_sender_id=sms_sender['id'], sms_sender=sms_sender,
is_inbound_number=is_inbound_number) inbound_number=is_inbound_number
)
@main.route("/services/<service_id>/service-settings/set-letter-contact-block", methods=['GET', 'POST']) @main.route("/services/<service_id>/service-settings/set-letter-contact-block", methods=['GET', 'POST'])

View File

@@ -13,9 +13,9 @@
Edit text message sender Edit text message sender
</h1> </h1>
<form method="post"> <form method="post">
{% if is_inbound_number %} {% if inbound_number %}
<p> <p>
<span class="bottom-gutter-1-3"> {{ form.sms_sender.data }} </span> <span class="bottom-gutter-1-3"> {{ sms_sender.sms_sender }} </span>
<span class="hint"> This phone number receives replies and cant be changed </span> <span class="hint"> This phone number receives replies and cant be changed </span>
</p> </p>
{% else %} {% else %}

View File

@@ -1,5 +1,5 @@
import pytest import pytest
from app.main.forms import RegisterUserForm, ServiceSmsSender from app.main.forms import RegisterUserForm, ServiceSmsSenderForm
from app.main.validators import ValidGovEmail, NoCommasInPlaceHolders, OnlyGSMCharacters from app.main.validators import ValidGovEmail, NoCommasInPlaceHolders, OnlyGSMCharacters
from wtforms import ValidationError from wtforms import ValidationError
from unittest.mock import Mock from unittest.mock import Mock
@@ -184,7 +184,7 @@ def test_sms_sender_form_validation(
client, client,
mock_get_user_by_email, mock_get_user_by_email,
): ):
form = ServiceSmsSender() form = ServiceSmsSenderForm()
form.sms_sender.data = 'elevenchars' form.sms_sender.data = 'elevenchars'
form.validate() form.validate()

View File

@@ -1060,10 +1060,10 @@ def test_edit_letter_contact_block(
@pytest.mark.parametrize('fixture, data, api_default_args', [ @pytest.mark.parametrize('fixture, data, api_default_args', [
(get_default_sms_sender, {"is_default": "y"}, True), (get_default_sms_sender, {"is_default": "y", "sms_sender": "test"}, True),
(get_default_sms_sender, {}, True), (get_default_sms_sender, {"sms_sender": "test"}, True),
(get_non_default_sms_sender, {}, False), (get_non_default_sms_sender, {"sms_sender": "test"}, False),
(get_non_default_sms_sender, {"is_default": "y"}, True) (get_non_default_sms_sender, {"is_default": "y", "sms_sender": "test"}, True)
]) ])
def test_edit_sms_sender( def test_edit_sms_sender(
fixture, fixture,
@@ -1085,7 +1085,7 @@ def test_edit_sms_sender(
mock_update_sms_sender.assert_called_once_with( mock_update_sms_sender.assert_called_once_with(
SERVICE_ONE_ID, SERVICE_ONE_ID,
sms_sender_id=fake_uuid, sms_sender_id=fake_uuid,
sms_sender="GOVUK", sms_sender="test",
is_default=api_default_args is_default=api_default_args
) )
@@ -1184,7 +1184,7 @@ def test_inbound_sms_sender_is_not_editable(
sms_sender_id=fixture_sender_id, sms_sender_id=fixture_sender_id,
) )
assert (page.select_one('main input[name="sms_sender"]') is None) == hide_textbox assert bool(page.find('input', attrs={'name': "sms_sender"})) != hide_textbox
if hide_textbox: if hide_textbox:
assert normalize_spaces( assert normalize_spaces(
page.select_one('form[method="post"] p').text page.select_one('form[method="post"] p').text