mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-02 04:39:25 -04:00
Merge pull request #3387 from alphagov/add-who-can-use-page
Add ‘Who it’s for’ page
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -52,6 +52,10 @@ def using_notify_nav():
|
||||
"name": "Get started",
|
||||
"link": "main.get_started",
|
||||
},
|
||||
{
|
||||
"name": "Who it’s for",
|
||||
"link": "main.who_its_for",
|
||||
},
|
||||
{
|
||||
"name": "Trial mode",
|
||||
"link": "main.trial_mode_new",
|
||||
|
||||
@@ -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',
|
||||
}
|
||||
|
||||
@@ -217,6 +217,10 @@
|
||||
"href": url_for("main.get_started"),
|
||||
"text": "Get started"
|
||||
},
|
||||
{
|
||||
"href": url_for("main.who_its_for"),
|
||||
"text": "Who it’s for",
|
||||
},
|
||||
{
|
||||
"href": url_for("main.trial_mode_new"),
|
||||
"text": "Trial mode"
|
||||
|
||||
@@ -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">
|
||||
|
||||
49
app/templates/views/guidance/who-its-for.html
Normal file
49
app/templates/views/guidance/who-its-for.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{% extends "content_template.html" %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
|
||||
{% block per_page_title %}
|
||||
Who it’s for
|
||||
{% endblock %}
|
||||
|
||||
{% block content_column_content %}
|
||||
|
||||
{{ page_header(
|
||||
'Who it’s 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 you’re doing work for a public sector organisation you can use GOV.UK Notify.
|
||||
</p>
|
||||
<p class="govuk-body">
|
||||
Someone from the public sector organisation you’re 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 %}
|
||||
@@ -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='We’ll send you a security code by text message') }}
|
||||
</div>
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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', (
|
||||
|
||||
Reference in New Issue
Block a user