From 0b86a12fdde4bab127667a06852f1a3c16797fdf Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Tue, 21 Aug 2018 09:23:32 +0100 Subject: [PATCH] Tell people they can have their logo on letters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At the moment there’s nothing in Notify that says the logo on letter templates can be changed from ‘HM Government’. While some people guess that it’s possible, or are motivated enough to enquire, others might be assuming that the branding can’t be changed (and thus deciding Notify letters aren’t for them). In the future we should make this process slicker (eg with a file upload) but the easiest, quickest improvement to make for now is: - let people know that the branding can be changed - direct them to support if they do want to change it --- app/main/views/feedback.py | 3 ++ app/main/views/service_settings.py | 12 ++++++++ app/navigation.py | 4 +++ app/templates/views/service-settings.html | 10 +++++++ .../request-letter-branding.html | 29 +++++++++++++++++++ tests/app/main/views/test_service_settings.py | 24 +++++++++++++-- tests/conftest.py | 19 +++++++++++- 7 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 app/templates/views/service-settings/request-letter-branding.html 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