diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index b21e1c5dc..e561c7215 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -1130,15 +1130,11 @@ def link_service_to_organisation(service_id): ) -@main.route("/services//branding-request/", methods=['GET', 'POST']) +@main.route("/services//branding-request/email", methods=['GET', 'POST']) @user_has_permissions('manage_service') -def branding_request(service_id, branding_type): - form = BrandingOptions(current_service, branding_type=branding_type) - from_template = request.args.get('from_template') - if branding_type == "email": - branding_name = current_service.email_branding_name - elif branding_type == "letter": - branding_name = current_service.letter_branding_name +def email_branding_request(service_id): + form = BrandingOptions(current_service, branding_type='email') + branding_name = current_service.email_branding_name if form.validate_on_submit(): ticket_message = render_template( 'support-tickets/branding-request.txt', @@ -1147,7 +1143,45 @@ def branding_request(service_id, branding_type): detail=form.something_else.data, ) ticket = NotifySupportTicket( - subject=f'{branding_type.capitalize()} branding request - {current_service.name}', + subject=f'Email branding request - {current_service.name}', + message=ticket_message, + ticket_type=NotifySupportTicket.TYPE_QUESTION, + user_name=current_user.name, + user_email=current_user.email_address, + org_id=current_service.organisation_id, + org_type=current_service.organisation_type, + service_id=current_service.id + ) + zendesk_client.send_ticket_to_zendesk(ticket) + flash(( + 'Thanks for your branding request. We’ll get back to you ' + 'within one working day.' + ), 'default') + return redirect(url_for('.service_settings', service_id=current_service.id)) + + return render_template( + 'views/service-settings/branding/branding-options.html', + form=form, + branding_type='email', + branding_name=branding_name, + ) + + +@main.route("/services//branding-request/letter", methods=['GET', 'POST']) +@user_has_permissions('manage_service') +def letter_branding_request(service_id): + form = BrandingOptions(current_service, branding_type='letter') + from_template = request.args.get('from_template') + branding_name = current_service.letter_branding_name + if form.validate_on_submit(): + ticket_message = render_template( + 'support-tickets/branding-request.txt', + current_branding=branding_name, + branding_requested=dict(form.options.choices)[form.options.data], + detail=form.something_else.data, + ) + ticket = NotifySupportTicket( + subject=f'Letter branding request - {current_service.name}', message=ticket_message, ticket_type=NotifySupportTicket.TYPE_QUESTION, user_name=current_user.name, @@ -1168,7 +1202,7 @@ def branding_request(service_id, branding_type): return render_template( 'views/service-settings/branding/branding-options.html', form=form, - branding_type=branding_type, + branding_type='letter', branding_name=branding_name, from_template=from_template ) diff --git a/app/navigation.py b/app/navigation.py index 8e2710fa2..ea790910f 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -219,8 +219,9 @@ class MainNavigation(Navigation): 'settings': { 'add_organisation_from_gp_service', 'add_organisation_from_nhs_local_service', - 'branding_request', + 'email_branding_request', 'estimate_usage', + 'letter_branding_request', 'link_service_to_organisation', 'request_to_go_live', 'service_add_email_reply_to', diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index 4576fd019..91677f0a5 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -97,7 +97,7 @@ {{ text_field(current_service.email_branding_name) }} {{ edit_field( 'Change', - url_for('.branding_request', service_id=current_service.id, branding_type="email"), + url_for('.email_branding_request', service_id=current_service.id), permissions=['manage_service'], suffix='email branding', )}} @@ -257,7 +257,7 @@ {{ optional_text_field(current_service.letter_branding.name) }} {{ edit_field( 'Change', - url_for('.branding_request', service_id=current_service.id, branding_type="letter"), + url_for('.letter_branding_request', service_id=current_service.id), permissions=['manage_service'], suffix='letter branding', )}} diff --git a/app/templates/views/templates/_template.html b/app/templates/views/templates/_template.html index a741d6506..9ba917c6b 100644 --- a/app/templates/views/templates/_template.html +++ b/app/templates/views/templates/_template.html @@ -65,7 +65,7 @@
{% if current_user.has_permissions('manage_templates') and template.template_type == 'letter' %} {% if not current_service.letter_branding_id %} - Add logo + Add logo {% endif %} Change postage Edit letter template diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 5649bc8ea..1d3575f9a 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -4783,7 +4783,7 @@ def test_show_branding_request_page_when_no_branding_is_set( service_one['organisation_type'] = organisation_type page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type=branding_type + f'.{branding_type}_branding_request', service_id=SERVICE_ONE_ID ) assert mock_get_email_branding.called is False @@ -4856,7 +4856,7 @@ def test_show_branding_request_page_when_no_branding_is_set_but_organisation_exi ) page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type=branding_type + f'.{branding_type}_branding_request', service_id=SERVICE_ONE_ID ) assert mock_get_email_branding.called is False @@ -4900,7 +4900,7 @@ def test_show_branding_request_page_when_no_branding_is_set_but_organisation_exi ) page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type=branding_type + f'.{branding_type}_branding_request', service_id=SERVICE_ONE_ID ) assert mock_get_email_branding.called is False @@ -4930,7 +4930,7 @@ def test_show_email_branding_request_page_when_email_branding_is_set( ) page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type="email" + '.email_branding_request', service_id=SERVICE_ONE_ID ) assert [ ( @@ -4961,7 +4961,7 @@ def test_show_letter_branding_request_page_when_letter_branding_is_set( ) page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type="letter" + '.letter_branding_request', service_id=SERVICE_ONE_ID ) assert [ ( @@ -4975,29 +4975,33 @@ def test_show_letter_branding_request_page_when_letter_branding_is_set( ] -@pytest.mark.parametrize('branding_type', ['email', 'letter']) +def test_back_link_on_email_branding_request_page( + client_request, +): + page = client_request.get( + '.email_branding_request', service_id=SERVICE_ONE_ID + ) + + back_link = page.select('a[class=govuk-back-link]') + assert back_link[0].attrs['href'] == url_for('.service_settings', service_id=SERVICE_ONE_ID) + + @pytest.mark.parametrize('from_template,back_link_url', [ (None, '/services/{}/service-settings'.format(SERVICE_ONE_ID),), (TEMPLATE_ONE_ID, '/services/{}/templates/{}'.format(SERVICE_ONE_ID, TEMPLATE_ONE_ID),) ]) -def test_back_link_on_branding_request_page( - mocker, - service_one, +def test_back_link_on_letter_branding_request_page( client_request, - mock_get_email_branding, - mock_get_letter_branding_by_id, - active_user_with_permissions, from_template, back_link_url, - branding_type, ): if from_template: page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type=branding_type, from_template=from_template + '.letter_branding_request', service_id=SERVICE_ONE_ID, from_template=from_template ) else: page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type=branding_type + '.letter_branding_request', service_id=SERVICE_ONE_ID ) back_link = page.select('a[class=govuk-back-link]') @@ -5028,7 +5032,7 @@ def test_show_branding_request_page_when_branding_is_same_as_org( ) page = client_request.get( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type=branding_type + f'.{branding_type}_branding_request', service_id=SERVICE_ONE_ID ) # Central government organisations who have their own default @@ -5111,7 +5115,8 @@ def test_submit_email_branding_request( ) page = client_request.post( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type="email", + '.email_branding_request', + service_id=SERVICE_ONE_ID, _data=data, _follow_redirects=True, ) @@ -5201,7 +5206,7 @@ def test_submit_letter_branding_request( ) page = client_request.post( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type="letter", + '.letter_branding_request', service_id=SERVICE_ONE_ID, _data=data, _follow_redirects=True, ) @@ -5232,7 +5237,6 @@ def test_submit_letter_branding_request( ) -@pytest.mark.parametrize('branding_type', ['email', 'letter']) @pytest.mark.parametrize('from_template', [ None, TEMPLATE_ONE_ID @@ -5242,12 +5246,7 @@ def test_submit_letter_branding_request_redirects_if_from_template_is_set( service_one, mocker, mock_get_service_settings_page_common, - mock_get_letter_branding_by_id, - no_reply_to_email_addresses, - no_letter_contact_blocks, - single_sms_sender, from_template, - branding_type, ): mocker.patch('app.main.views.service_settings.zendesk_client.send_ticket_to_zendesk', autospec=True) @@ -5255,7 +5254,7 @@ def test_submit_letter_branding_request_redirects_if_from_template_is_set( if from_template: client_request.post( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type="letter", from_template=from_template, + '.letter_branding_request', service_id=SERVICE_ONE_ID, from_template=from_template, _data=data, _expected_redirect=url_for( 'main.view_template', service_id=SERVICE_ONE_ID, template_id=from_template, _external=True @@ -5263,7 +5262,7 @@ def test_submit_letter_branding_request_redirects_if_from_template_is_set( ) else: client_request.post( - '.branding_request', service_id=SERVICE_ONE_ID, branding_type="letter", + '.letter_branding_request', service_id=SERVICE_ONE_ID, _data=data, _expected_redirect=url_for('main.service_settings', service_id=SERVICE_ONE_ID, _external=True) ) @@ -5289,8 +5288,8 @@ def test_submit_branding_when_something_else_is_only_option( ) client_request.post( - '.branding_request', - service_id=SERVICE_ONE_ID, branding_type=branding_type, + f'.{branding_type}_branding_request', + service_id=SERVICE_ONE_ID, _data={ 'something_else': 'Homer Simpson', }, diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py index d1530209a..f8b5c0c13 100644 --- a/tests/app/main/views/test_templates.py +++ b/tests/app/main/views/test_templates.py @@ -677,8 +677,8 @@ def test_user_with_only_send_and_view_sees_letter_page( ( None, partial( - url_for, 'main.branding_request', - service_id=SERVICE_ONE_ID, branding_type="letter", from_template=TEMPLATE_ONE_ID + url_for, 'main.letter_branding_request', + service_id=SERVICE_ONE_ID, from_template=TEMPLATE_ONE_ID ), 'Add logo', ), diff --git a/tests/app/test_navigation.py b/tests/app/test_navigation.py index 54dd81dc3..e30476307 100644 --- a/tests/app/test_navigation.py +++ b/tests/app/test_navigation.py @@ -33,7 +33,6 @@ EXCLUDED_ENDPOINTS = tuple(map(Navigation.get_endpoint_with_blueprint, { 'begin_tour', 'billing_details', 'branding_and_customisation', - 'branding_request', 'broadcast', 'broadcast_dashboard', 'broadcast_dashboard_previous', @@ -112,6 +111,7 @@ EXCLUDED_ENDPOINTS = tuple(map(Navigation.get_endpoint_with_blueprint, { 'edit_user_mobile_number', 'edit_user_permissions', 'email_branding', + 'email_branding_request', 'email_not_received', 'email_template', 'error', @@ -145,6 +145,7 @@ EXCLUDED_ENDPOINTS = tuple(map(Navigation.get_endpoint_with_blueprint, { 'invite_org_user', 'invite_user', 'letter_branding', + 'letter_branding_request', 'letter_spec', 'letter_specification', 'letter_template',