From 12e0e12ced8087bc4b5e3d95479b62f9aa77a39d Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 30 Aug 2018 11:00:39 +0100 Subject: [PATCH] Replace channels and volumes with volumes/channel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now that we’re a more mature platform we don’t care so much about the load that one service might put on our platform. We do care about intended volumes for two reasons: - modelling the benefits that services get from using Notify - managing stocks of envelopes (while our letter volumes are small enough that they could be skewed by one new service) Changing to the ‘how many per year’ question also has the benefit of mapping directly to the data we store in the ‘beta partners’ spreadsheet. --- app/main/forms.py | 15 +++---- app/main/views/service_settings.py | 39 +++++++++---------- .../submit-request-to-go-live.html | 25 ++++++------ tests/app/main/views/test_service_settings.py | 34 +++++++++------- 4 files changed, 55 insertions(+), 58 deletions(-) diff --git a/app/main/forms.py b/app/main/forms.py index 794f8e322..2d9db1e98 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -569,19 +569,16 @@ 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')] ) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 9dd4aaee3..2cb07c1f0 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -14,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, @@ -217,13 +216,14 @@ 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: {}' + '\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}' '\n' '\n---' '\n' @@ -233,23 +233,20 @@ def submit_request_to_go_live(service_id): '{user_name}\t' '{user_email}\t' '-\t' - '{date}' + '{date}\t' + '{volume_sms}\t' + '{volume_email}\t' + '{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, + service_name=current_service.name, + service_dashboard=url_for('main.service_dashboard', service_id=current_service.id, _external=True), + organisation_type=current_service.organisation_type, + 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, service_id=current_service.id, organisation=AgreementInfo.from_current_user().owner, - service_name=current_service.name, user_name=current_user.name, user_email=current_user.email_address, date=datetime.now(tz=pytz.timezone('Europe/London')).strftime('%d/%m/%Y'), 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 495f1a0f0..fab2cf079 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,27 +13,24 @@

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. -

+
+
+

+ 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') }}

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 72f2af6a1..e29568672 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -691,12 +691,21 @@ 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 + page.select_one('label[for=volume_{}]'.format(channel)).text ) == label @@ -716,11 +725,9 @@ 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', + 'volume_email': '111', + 'volume_sms': '222', + 'volume_letter': '333', }, _follow_redirects=True ) @@ -738,13 +745,12 @@ def test_should_redirect_after_request_to_go_live( '---\n' 'Organisation type: central\n' 'Agreement signed: Can’t tell (domain is user.gov.uk)\n' - 'Channel: email and text messages\n' - 'Start date: 01/01/2017\n' - 'Start volume: 100,000\n' - 'Peak volume: 2,000,000\n' + 'Emails in next year: 111\n' + 'Text messages in next year: 222\n' + 'Letters in next year: 333\n' '\n' '---\n' - '{}\tNone\tservice one\tTest User\ttest@user.gov.uk\t-\t21/12/2012' + '{}\tNone\tservice one\tTest User\ttest@user.gov.uk\t-\t21/12/2012\t222\t111\t333' ).format(SERVICE_ONE_ID, SERVICE_ONE_ID) assert normalize_spaces(page.select_one('.banner-default').text) == (