diff --git a/app/main/views/feedback.py b/app/main/views/feedback.py index 5a0fa48d5..8b7b36f65 100644 --- a/app/main/views/feedback.py +++ b/app/main/views/feedback.py @@ -23,6 +23,9 @@ def get_prefilled_message(): 'Please can you tell me if there’s an agreement in place ' 'between GOV.UK Notify and my organisation?' ), + 'letter-branding': ( + 'I would like my own logo on my letter templates.' + ), }.get( request.args.get('body'), '' ) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 5eb1b21f6..5738ac5d2 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -938,6 +938,18 @@ def set_letter_branding(service_id): ) +@main.route("/services//service-settings/request-letter-branding", methods=['GET', 'POST']) +@login_required +@user_has_permissions('manage_service') +def request_letter_branding(service_id): + return render_template( + 'views/service-settings/request-letter-branding.html', + letter_branding=email_branding_client.get_letter_email_branding()[ + current_service.get('dvla_organisation', '001') + ] + ) + + @main.route("/services//service-settings/link-service-to-organisation", methods=['GET', 'POST']) @login_required @user_is_platform_admin diff --git a/app/navigation.py b/app/navigation.py index ee9b574c8..6d0eb2ec8 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -189,6 +189,7 @@ class HeaderNavigation(Navigation): 'registration_continue', 'remove_user_from_organisation', 'remove_user_from_service', + 'request_letter_branding', 'request_to_go_live', 'resend_email_link', 'resend_email_verification', @@ -325,6 +326,7 @@ class MainNavigation(Navigation): 'settings': { 'branding_request', 'link_service_to_organisation', + 'request_letter_branding', 'request_to_go_live', 'service_add_email_reply_to', 'service_add_letter_contact', @@ -632,6 +634,7 @@ class CaseworkNavigation(Navigation): 'registration_continue', 'remove_user_from_organisation', 'remove_user_from_service', + 'request_letter_branding', 'request_to_go_live', 'resend_email_link', 'resend_email_verification', @@ -853,6 +856,7 @@ class OrgNavigation(Navigation): 'register_from_org_invite', 'registration_continue', 'remove_user_from_service', + 'request_letter_branding', 'request_to_go_live', 'resend_email_link', 'resend_email_verification', diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index b33fbbdec..ebbe43d5f 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -227,6 +227,16 @@ }} {% endcall %} + {% call settings_row(if_has_permission='letter') %} + {{ text_field('Letter branding') }} + {{ text_field(letter_branding) }} + {{ edit_field( + 'Change', + url_for('.request_letter_branding', service_id=current_service.id), + permissions=['manage_service'] + )}} + {% endcall %} + {% endcall %} diff --git a/app/templates/views/service-settings/request-letter-branding.html b/app/templates/views/service-settings/request-letter-branding.html new file mode 100644 index 000000000..5ced92681 --- /dev/null +++ b/app/templates/views/service-settings/request-letter-branding.html @@ -0,0 +1,29 @@ +{% extends "withnav_template.html" %} +{% from "components/radios.html" import radios %} +{% from "components/page-footer.html" import page_footer %} + +{% block service_page_title %} + Letter branding +{% endblock %} + +{% block maincolumn_content %} + +

Letter branding

+
+
+

+ Your letters have the {{ letter_branding }} logo. +

+

+ If you want a different logo then + contact support + and we’ll help you set one up. +

+ {{ page_footer( + back_link=url_for('.service_settings', service_id=current_service.id), + back_link_text='Back to settings' + ) }} +
+
+ +{% endblock %} diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 12974d332..adc86ce51 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -173,7 +173,7 @@ def test_should_show_overview( 'Send letters Off Change', ]), - (['letters'], [ + (['letter'], [ 'Service name service one Change', 'Sign-in method Text message code Change', @@ -185,7 +185,9 @@ def test_should_show_overview( 'Send text messages Off Change', 'Label Value Action', - 'Send letters Off Change', + 'Send letters On Change', + 'Sender addresses 1 Example Street Manage', + 'Letter branding HM Government Change', ]), ]) @@ -1676,6 +1678,24 @@ def test_set_letter_contact_block_has_max_10_lines( assert error_message == 'Contains 11 lines, maximum is 10' +def test_request_letter_branding( + client_request, + mock_get_letter_email_branding, +): + request_page = client_request.get( + 'main.request_letter_branding', + service_id=SERVICE_ONE_ID, + ) + assert request_page.select_one('main p').text.strip() == ( + 'Your letters have the HM Government logo.' + ) + link_href = request_page.select_one('main a')['href'] + feedback_page = client_request.get_url(link_href) + assert feedback_page.select_one('textarea').text.strip() == ( + 'I would like my own logo on my letter templates.' + ) + + def test_set_letter_branding_platform_admin_only( logged_in_client, service_one, diff --git a/tests/conftest.py b/tests/conftest.py index a056d43b2..e8364bf11 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2696,8 +2696,25 @@ def client_request( _test_page_title=True, **endpoint_kwargs ): - resp = logged_in_client.get( + return ClientRequest.get_url( url_for(endpoint, **(endpoint_kwargs or {})), + _expected_status=_expected_status, + _follow_redirects=_follow_redirects, + _expected_redirect=_expected_redirect, + _test_page_title=_test_page_title, + ) + + @staticmethod + def get_url( + url, + _expected_status=200, + _follow_redirects=False, + _expected_redirect=None, + _test_page_title=True, + **endpoint_kwargs + ): + resp = logged_in_client.get( + url, follow_redirects=_follow_redirects, ) assert resp.status_code == _expected_status, resp.location