Use radio buttons not textboxes for multi-choice

No need to make people type when they can click, and gives us consistent
data.
This commit is contained in:
Chris Hill-Scott
2016-10-31 15:05:22 +00:00
parent 318e8fdc81
commit d832a9107c
3 changed files with 23 additions and 12 deletions

View File

@@ -350,9 +350,14 @@ class Feedback(Form):
class RequestToGoLiveForm(Form): class RequestToGoLiveForm(Form):
channel = StringField( channel = RadioField(
'Are you sending emails or text messages or both?', 'Are you sending emails or text messages or both?',
validators=[DataRequired(message='Cant be empty')] choices=[
('emails', 'Emails'),
('text messages', 'Text messages'),
('emails and text messages', 'Both')
],
validators=[DataRequired()]
) )
start_date = StringField( start_date = StringField(
'When will you be ready to start sending messages?', 'When will you be ready to start sending messages?',
@@ -366,10 +371,15 @@ class RequestToGoLiveForm(Form):
'Will the number of messages a month increase and when will that start? Give an estimate.', 'Will the number of messages a month increase and when will that start? Give an estimate.',
validators=[DataRequired(message='Cant be empty')] validators=[DataRequired(message='Cant be empty')]
) )
upload_or_api = StringField( upload_or_api = RadioField(
'Are you uploading a list of contacts that youre sending your message to, ' + 'Are you uploading a list of contacts that youre sending your message to, ' +
'or are you integrating your system with ours?', 'or are you integrating your system with ours?',
validators=[DataRequired(message='Cant be empty')] choices=[
('File upload', 'Upload a spreadsheet of recipients'),
('API', 'Integrate with the GOV.UK Notify API'),
('API and file upload', 'Both')
],
validators=[DataRequired()]
) )

View File

@@ -1,5 +1,6 @@
{% extends "withnav_template.html" %} {% extends "withnav_template.html" %}
{% from "components/textbox.html" import textbox %} {% from "components/textbox.html" import textbox %}
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %} {% from "components/page-footer.html" import page_footer %}
{% from "components/banner.html" import banner_wrapper %} {% from "components/banner.html" import banner_wrapper %}
@@ -39,11 +40,11 @@
</ul> </ul>
<form method="post"> <form method="post">
{{ textbox(form.channel, width='1-1') }} {{ radios(form.channel) }}
{{ textbox(form.start_date, width='1-1') }} {{ textbox(form.start_date, width='1-1') }}
{{ textbox(form.start_volume, width='1-1') }} {{ textbox(form.start_volume, width='1-1') }}
{{ textbox(form.peak_volume, width='1-1') }} {{ textbox(form.peak_volume, width='1-1') }}
{{ textbox(form.upload_or_api, width='1-1') }} {{ radios(form.upload_or_api) }}
<p> <p>
Once youve completed the tasks needed to set up, well make your service live. Well do this within one working day. Once youve completed the tasks needed to set up, well make your service live. Well do this within one working day.

View File

@@ -314,11 +314,11 @@ def test_should_redirect_after_request_to_go_live(
response = client.post( response = client.post(
url_for('main.service_request_to_go_live', service_id='6ce466d0-fd6a-11e5-82f5-e0accb9d11a6'), url_for('main.service_request_to_go_live', service_id='6ce466d0-fd6a-11e5-82f5-e0accb9d11a6'),
data={ data={
'channel': 'Email', 'channel': 'emails',
'start_date': '01/01/2017', 'start_date': '01/01/2017',
'start_volume': '100,000', 'start_volume': '100,000',
'peak_volume': '2,000,000', 'peak_volume': '2,000,000',
'upload_or_api': 'api' 'upload_or_api': 'API'
}, },
follow_redirects=True follow_redirects=True
) )
@@ -337,11 +337,11 @@ def test_should_redirect_after_request_to_go_live(
) )
returned_message = mock_post.call_args[1]['data']['message'] returned_message = mock_post.call_args[1]['data']['message']
assert 'Email' in returned_message assert 'emails' in returned_message
assert '01/01/2017' in returned_message assert '01/01/2017' in returned_message
assert '100,000' in returned_message assert '100,000' in returned_message
assert '2,000,000' in returned_message assert '2,000,000' in returned_message
assert 'api' in returned_message assert 'API' in returned_message
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
flash_banner = page.find('div', class_='banner-default').string.strip() flash_banner = page.find('div', class_='banner-default').string.strip()
@@ -376,11 +376,11 @@ def test_log_error_on_request_to_go_live(
resp = client.post( resp = client.post(
url_for('main.service_request_to_go_live', service_id='6ce466d0-fd6a-11e5-82f5-e0accb9d11a6'), url_for('main.service_request_to_go_live', service_id='6ce466d0-fd6a-11e5-82f5-e0accb9d11a6'),
data={ data={
'channel': 'channel', 'channel': 'emails',
'start_date': 'start_date', 'start_date': 'start_date',
'start_volume': 'start_volume', 'start_volume': 'start_volume',
'peak_volume': 'peak_volume', 'peak_volume': 'peak_volume',
'upload_or_api': 'upload_or_api' 'upload_or_api': 'API'
} }
) )
mock_logger.assert_called_with( mock_logger.assert_called_with(