diff --git a/app/config.py b/app/config.py index d34339191..8cf8f7a09 100644 --- a/app/config.py +++ b/app/config.py @@ -85,7 +85,6 @@ class Development(Config): API_HOST_NAME = 'http://localhost:6011' DANGEROUS_SALT = 'dev-notify-salt' SECRET_KEY = 'dev-notify-secret-key' - ZENDESK_API_KEY = "some-key" class Test(Development): diff --git a/app/main/forms.py b/app/main/forms.py index 00bc5c7bd..713badf07 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -569,24 +569,26 @@ class Triage(StripWhitespaceForm): class RequestToGoLiveForm(StripWhitespaceForm): - channel_email = BooleanField('Emails') - channel_sms = BooleanField('Text messages') - channel_letter = BooleanField('Letters') - start_date = StringField( - 'When will you be ready to start sending messages?', + volume_email = StringField( + 'How many emails do you expect to send in the next year?', validators=[DataRequired(message='Can’t be empty')] ) - start_volume = StringField( - 'How many messages do you expect to send to start with?', + volume_sms = StringField( + 'How many text messages do you expect to send in the next year?', validators=[DataRequired(message='Can’t be empty')] ) - peak_volume = StringField( - 'Will the number of messages increase and when will that start?', + volume_letter = StringField( + 'How many letters do you expect to send in the next year?', validators=[DataRequired(message='Can’t be empty')] ) - method_one_off = BooleanField('One at a time') - method_upload = BooleanField('Upload a spreadsheet of recipients') - method_api = BooleanField('Integrate with the GOV.UK Notify API') + research_consent = RadioField( + 'Can we contact you when we’re doing user research?', + choices=[ + ('yes', 'Yes'), + ('no', 'No'), + ], + validators=[DataRequired()] + ) class ProviderForm(StripWhitespaceForm): diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index e7cb3559b..589ced108 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -1,3 +1,6 @@ +from datetime import datetime + +import pytz from flask import ( abort, current_app, @@ -11,7 +14,6 @@ from flask import ( from flask_login import current_user, login_required from notifications_python_client.errors import HTTPError from notifications_utils.field import Field -from notifications_utils.formatters import formatted_list from app import ( billing_api_client, @@ -214,32 +216,42 @@ def submit_request_to_go_live(service_id): zendesk_client.create_ticket( subject='Request to go live - {}'.format(current_service.name), message=( - 'Service: {}\n' - '{}\n' + 'Service: {service_name}\n' + '{service_dashboard}\n' '\n---' - '\nOrganisation type: {}' - '\nAgreement signed: {}' - '\nChannel: {}\nStart date: {}\nStart volume: {}' - '\nPeak volume: {}' - '\nFeatures: {}' + '\nOrganisation type: {organisation_type}' + '\nAgreement signed: {agreement}' + '\nEmails in next year: {volume_email}' + '\nText messages in next year: {volume_sms}' + '\nLetters in next year: {volume_letter}' + '\nConsent to research: {research_consent}' + '\n' + '\n---' + '\n' + '{service_id}, ' + '{organisation}, ' + '{service_name}, ' + '{user_name}, ' + '{user_email}, ' + '-, ' + '{date}, ' + '{volume_sms}, ' + '{volume_email}, ' + '{volume_letter}' ).format( - current_service.name, - url_for('main.service_dashboard', service_id=current_service.id, _external=True), - current_service.organisation_type, - AgreementInfo.from_current_user().as_human_readable, - formatted_list(filter(None, ( - 'email' if form.channel_email.data else None, - 'text messages' if form.channel_sms.data else None, - 'letters' if form.channel_letter.data else None, - )), before_each='', after_each=''), - form.start_date.data, - form.start_volume.data, - form.peak_volume.data, - formatted_list(filter(None, ( - 'one off' if form.method_one_off.data else None, - 'file upload' if form.method_upload.data else None, - 'API' if form.method_api.data else None, - )), before_each='', after_each='') + service_name=current_service.name, + service_dashboard=url_for('main.service_dashboard', service_id=current_service.id, _external=True), + organisation_type=str(current_service.organisation_type).title(), + agreement=AgreementInfo.from_current_user().as_human_readable, + volume_email=form.volume_email.data, + volume_sms=form.volume_sms.data, + volume_letter=form.volume_letter.data, + research_consent=form.research_consent.data.title(), + service_id=current_service.id, + organisation=AgreementInfo.from_current_user().owner, + user_name=current_user.name, + user_email=current_user.email_address, + date=datetime.now(tz=pytz.timezone('Europe/London')).strftime('%d/%m/%Y'), ), ticket_type=zendesk_client.TYPE_QUESTION, user_email=current_user.email_address, diff --git a/app/templates/components/radios.html b/app/templates/components/radios.html index 0604c9361..8b3ee19dc 100644 --- a/app/templates/components/radios.html +++ b/app/templates/components/radios.html @@ -21,6 +21,11 @@ {% if hide_legend %}{% endif %} {{ field.label.text|safe }} {% if hide_legend %}{% endif %} + {% if hint %} + + {{ hint }} + + {% endif %} {% if field.errors %} {{ field.errors[0] }} diff --git a/app/templates/views/service-settings/submit-request-to-go-live.html b/app/templates/views/service-settings/submit-request-to-go-live.html index c6a352d11..b5d888b3c 100644 --- a/app/templates/views/service-settings/submit-request-to-go-live.html +++ b/app/templates/views/service-settings/submit-request-to-go-live.html @@ -13,32 +13,22 @@

Request to go live

-

- Tell us how you plan to use Notify. When we receive your request we’ll make your service live within one working day. -

- -
- {{ checkbox_group('What kind of messages will you be sending?', [ - form.channel_email, - form.channel_sms, - form.channel_letter - ]) }} +
- {{ textbox(form.start_date, width='1-1') }} - {{ textbox(form.start_volume, width='1-1', hint='For example, ‘1,000 per month’.') }} - {{ textbox(form.peak_volume, width='1-1', hint='For example, ‘Messages will increase to 20,000 per month in January’.') }} + {{ textbox(form.volume_email, width='1-2', hint='For example, 1,000,000') }} + {{ textbox(form.volume_sms, width='1-2', hint='For example, 500,000') }} + {{ textbox(form.volume_letter, width='1-2', hint='For example, 5,000') }}
- {{ checkbox_group('How are you going to send messages?', [ - form.method_one_off, - form.method_upload, - form.method_api - ]) }} + {{ radios(form.research_consent, hint='You don’t have to take part and you can unsubscribe at any time') }} +

+ When we receive your request we’ll get back to you within one working day. +

+ +

By requesting to go live you’re agreeing to our terms of use.

- {{ page_footer('Request to go live') }}
- {% endblock %} diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 91dc11dbf..0a7924353 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -691,23 +691,25 @@ def test_should_show_request_to_go_live( ) assert page.h1.text == 'Request to go live' for channel, label in ( - ('email', 'Emails'), - ('sms', 'Text messages'), - ('letter', 'Letters'), + ( + 'email', + 'How many emails do you expect to send in the next year? For example, 1,000,000' + ), + ( + 'sms', + 'How many text messages do you expect to send in the next year? For example, 500,000' + ), + ( + 'letter', + 'How many letters do you expect to send in the next year? For example, 5,000' + ), ): assert normalize_spaces( - page.select_one('label[for=channel_{}]'.format(channel)).text - ) == label - for feature, label in ( - ('one_off', 'One at a time'), - ('upload', 'Upload a spreadsheet of recipients'), - ('api', 'Integrate with the GOV.UK Notify API'), - ): - assert normalize_spaces( - page.select_one('label[for=method_{}]'.format(feature)).text + page.select_one('label[for=volume_{}]'.format(channel)).text ) == label +@freeze_time("2012-12-21") def test_should_redirect_after_request_to_go_live( client_request, mocker, @@ -723,14 +725,10 @@ def test_should_redirect_after_request_to_go_live( 'main.submit_request_to_go_live', service_id=SERVICE_ONE_ID, _data={ - 'channel_email': 'y', - 'channel_sms': 'y', - 'start_date': '01/01/2017', - 'start_volume': '100,000', - 'peak_volume': '2,000,000', - 'method_one_off': 'y', - 'method_upload': 'y', - 'method_api': 'y', + 'volume_email': '111', + 'volume_sms': '222', + 'volume_letter': '333', + 'research_consent': 'yes', }, _follow_redirects=True ) @@ -741,16 +739,21 @@ def test_should_redirect_after_request_to_go_live( user_name=active_user_with_permissions.name, user_email=active_user_with_permissions.email_address ) - - returned_message = mock_post.call_args[1]['message'] - assert 'Service: service one' in returned_message - assert 'Organisation type: central' in returned_message - assert 'Agreement signed: Can’t tell' in returned_message - assert 'Channel: email and text messages' in returned_message - assert 'Start date: 01/01/2017' in returned_message - assert 'Start volume: 100,000' in returned_message - assert 'Peak volume: 2,000,000' in returned_message - assert 'Features: one off, file upload and API' in returned_message + assert mock_post.call_args[1]['message'] == ( + 'Service: service one\n' + 'http://localhost/services/{}\n' + '\n' + '---\n' + 'Organisation type: Central\n' + 'Agreement signed: Can’t tell (domain is user.gov.uk)\n' + 'Emails in next year: 111\n' + 'Text messages in next year: 222\n' + 'Letters in next year: 333\n' + 'Consent to research: Yes\n' + '\n' + '---\n' + '{}, None, service one, Test User, test@user.gov.uk, -, 21/12/2012, 222, 111, 333' + ).format(SERVICE_ONE_ID, SERVICE_ONE_ID) assert normalize_spaces(page.select_one('.banner-default').text) == ( 'Thanks for your request to go live. We’ll get back to you within one working day.'