Merge pull request #3387 from alphagov/add-who-can-use-page

Add ‘Who it’s for’ page
This commit is contained in:
Chris Hill-Scott
2020-03-26 15:15:44 +00:00
committed by GitHub
12 changed files with 99 additions and 35 deletions

View File

@@ -43,11 +43,10 @@ class ValidGovEmail:
return
from flask import url_for
message = (
'Enter a government email address.'
' If you think you should have access'
' <a class="govuk-link govuk-link--no-visited-state" href="{}">contact us</a>'
).format(url_for('main.support'))
message = '''
Enter a public sector email address or
<a class="govuk-link govuk-link--no-visited-state" href="{}">find out who can use Notify</a>
'''.format(url_for('main.who_its_for'))
if not is_gov_user(field.data.lower()):
raise ValidationError(message)

View File

@@ -320,6 +320,14 @@ def get_started():
)
@main.route('/using-notify/who-its-for')
def who_its_for():
return render_template(
'views/guidance/who-its-for.html',
navigation_links=using_notify_nav(),
)
@main.route('/trial-mode')
@main.route('/features/trial-mode')
def trial_mode():

View File

@@ -52,6 +52,10 @@ def using_notify_nav():
"name": "Get started",
"link": "main.get_started",
},
{
"name": "Who its for",
"link": "main.who_its_for",
},
{
"name": "Trial mode",
"link": "main.trial_mode_new",

View File

@@ -346,6 +346,7 @@ class HeaderNavigation(Navigation):
'no_cookie.view_template_version_preview',
'view_template_versions',
'whitelist',
'who_its_for',
}
# header HTML now comes from GOVUK Frontend so requires a boolean, not an attribute
@@ -659,6 +660,7 @@ class MainNavigation(Navigation):
'view_provider',
'view_providers',
'no_cookie.view_template_version_preview',
'who_its_for',
}
@@ -963,6 +965,7 @@ class CaseworkNavigation(Navigation):
'no_cookie.view_template_version_preview',
'view_template_versions',
'whitelist',
'who_its_for',
}
@@ -1268,4 +1271,5 @@ class OrgNavigation(Navigation):
'no_cookie.view_template_version_preview',
'view_template_versions',
'whitelist',
'who_its_for',
}

View File

@@ -217,6 +217,10 @@
"href": url_for("main.get_started"),
"text": "Get started"
},
{
"href": url_for("main.who_its_for"),
"text": "Who its for",
},
{
"href": url_for("main.trial_mode_new"),
"text": "Trial mode"

View File

@@ -15,21 +15,9 @@
<li class="get-started-list__item">
<h2 class="get-started-list__heading">Check if GOV.UK Notify is right for you</h2>
<p>Read about our <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.features') }}">features</a>, <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('.pricing') }}">pricing</a> and <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.roadmap') }}">roadmap</a>.</p>
{{ govukDetails({
"summaryText": "Organisations that can use Notify",
"html": '''
<div id="eligible-organisations">
<p>Notify is available to:</p>
<ul class="list list-bullet">
<li>central government departments</li>
<li>local authorities</li>
<li>state-funded schools</li>
<li>the NHS</li>
<li>companies running a service on behalf of a public sector organisation</li>
</ul>
<p>Notify is not currently available to charities.</p>
</div>'''
}) }}
<p class="govuk-body">
Check <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('.who_its_for') }}">whether your organisation can use Notify</a>.
</p>
</li>
<li class="get-started-list__item">

View File

@@ -0,0 +1,49 @@
{% extends "content_template.html" %}
{% from "components/page-header.html" import page_header %}
{% block per_page_title %}
Who its for
{% endblock %}
{% block content_column_content %}
{{ page_header(
'Who its for'
) }}
<p class="govuk-body">
GOV.UK Notify is available to:
</p>
<ul class="list list-bullet">
<li>central government departments</li>
<li>emergency services</li>
<li>local authorities</li>
<li>the armed forces</li>
<li>the NHS and GP practices</li>
<li>state-funded schools</li>
</ul>
<p class="govuk-body">
Notify is not currently available to charities.
</p>
<p class="govuk-body">
If you work for one of these organisations but get an error when you try to create an account, <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.support') }}">contact support</a>.
</p>
<h2 class="govuk-heading-m">Suppliers</h2>
<p class="govuk-body">
If youre doing work for a public sector organisation you can use GOV.UK&nbsp;Notify.
</p>
<p class="govuk-body">
Someone from the public sector organisation youre working with needs to set up the account. Then they can invite you as a team member.
</p>
<h2 class="govuk-heading-m">Members of the public</h2>
<p class="govuk-body">
The GOV.UK Notify service is only for people who work in the government
or other public sector organisations.
</p>
<p class="govuk-body">
<a class="govuk-link govuk-link--no-visited-state" href="https://www.gov.uk">Find government services and information on GOV.UK</a>.
</p>
{% endblock %}

View File

@@ -14,7 +14,7 @@ Create an account
<h1 class="heading-large">Create an account</h1>
{% call form_wrapper(autocomplete=True) %}
{{ textbox(form.name, width='3-4') }}
{{ textbox(form.email_address, hint="Must be from a government organisation", width='3-4', safe_error_message=True, autocomplete='email') }}
{{ textbox(form.email_address, hint="Must be from a public sector organisation", width='3-4', safe_error_message=True, autocomplete='email') }}
<div class="extra-tracking">
{{ textbox(form.mobile_number, width='3-4', hint='Well send you a security code by text message') }}
</div>

View File

@@ -36,7 +36,7 @@ def test_valid_email_not_in_valid_domains(
):
form = RegisterUserForm(email_address="test@test.com", mobile_number='441231231231')
assert not form.validate()
assert "Enter a government email address" in form.errors['email_address'][0]
assert "Enter a public sector email address" in form.errors['email_address'][0]
def test_valid_email_in_valid_domains(

View File

@@ -83,7 +83,7 @@ def test_robots(client):
'features_letters', 'how_to_pay', 'get_started',
'guidance_index', 'branding_and_customisation',
'create_and_send_messages', 'edit_and_format_messages',
'send_files_by_email', 'upload_a_letter',
'send_files_by_email', 'upload_a_letter', 'who_its_for',
])
def test_static_pages(
client_request,

View File

@@ -1192,7 +1192,7 @@ def test_edit_user_email_cannot_change_a_gov_email_address_to_a_non_gov_email_ad
},
_expected_status=200,
)
assert 'Enter a government email address.' in page.find('span', class_='error-message').text
assert 'Enter a public sector email address' in page.select_one('.error-message').text
with client_request.session_transaction() as session:
assert 'team_member_email_change-'.format(active_user_with_permissions['id']) not in session

View File

@@ -7,6 +7,7 @@ from flask import session, url_for
from flask_login import current_user
from app.models.user import InvitedUser
from tests.conftest import normalize_spaces
def test_render_register_returns_template_with_form(client):
@@ -97,20 +98,27 @@ def test_process_register_returns_200_when_mobile_number_is_invalid(
def test_should_return_200_when_email_is_not_gov_uk(
client,
mock_send_verify_code,
mock_get_user_by_email,
client_request,
mock_get_organisations,
mock_login,
):
response = client.post(url_for('main.register'),
data={'name': 'Bad Mobile',
'email_address': 'bad_mobile@example.not.right',
'mobile_number': '+44123412345',
'password': 'validPassword!'})
client_request.logout()
page = client_request.post(
'main.register',
_data={
'name': 'Firstname Lastname',
'email_address': 'bad_mobile@example.not.right',
'mobile_number': '07900900123',
'password': 'validPassword!'
},
_expected_status=200,
)
assert response.status_code == 200
assert 'Enter a government email address' in response.get_data(as_text=True)
assert normalize_spaces(page.select_one('.error-message').text) == (
'Enter a public sector email address or find out who can use Notify'
)
assert page.select_one('.error-message a')['href'] == url_for(
'main.who_its_for'
)
@pytest.mark.parametrize('email_address', (