Link to the page to download the agreement

We prefer people downloading the agreement if they can. If we don’t know
which agreement they should be using (ie we don’t know their crown
status) then we fall back to having them contact us.
This commit is contained in:
Chris Hill-Scott
2018-03-27 11:13:09 +01:00
parent 0d6d4e461a
commit c7ab9f7f1a
3 changed files with 71 additions and 19 deletions

View File

@@ -20,21 +20,12 @@ Terms of use
These terms apply to your services use of GOV.UK Notify. You must be the service manager to accept them.
</p>
{% if agreement_info.agreement_signed %}
<p>Your organisation ({{ agreement_info.owner }}) has already accepted the GOV.UK&nbsp;Notify data sharing and financial agreement.</p>
{% else %}
<p>
Your organisation
{% if agreement_info.owner %}
({{ agreement_info.owner }})
must also accept our data sharing and financial agreement.
<a href="{{ url_for('.feedback', ticket_type='ask-question-give-feedback', body='agreement-with-owner') }}">Contact us</a> to get a copy.
{% else %}
must also accept our data sharing and financial agreement.
<a href="{{ url_for('.feedback', ticket_type='ask-question-give-feedback', body='agreement') }}">Contact us</a> to get a copy.
{% endif %}
</p>
{% endif %}
<p>
{{ agreement_info.as_terms_of_use_paragraph(
download_link=url_for('.agreement'),
contact_link=url_for('.feedback', ticket_type='ask-question-give-feedback', body='agreement-with-owner')
)}}
</p>
<h2 class="heading-medium">When using Notify</h2>
<p>You must:</p>

View File

@@ -15,7 +15,15 @@ import dateutil
import pyexcel
import pytz
import yaml
from flask import abort, current_app, redirect, request, session, url_for
from flask import (
Markup,
abort,
current_app,
redirect,
request,
session,
url_for,
)
from flask_login import current_user
from notifications_utils.recipients import RecipientCSV
from notifications_utils.template import (
@@ -464,6 +472,36 @@ class AgreementInfo:
else:
return 'Cant tell'
def as_terms_of_use_paragraph(self, **kwargs):
return Markup(self._as_terms_of_use_paragraph(**kwargs))
def _as_terms_of_use_paragraph(self, download_link, contact_link):
if self.agreement_signed:
return (
'Your organisation ({}) has already accepted the '
'GOV.UK&nbsp;Notify data sharing and financial '
'agreement.'.format(self.owner)
)
if self.crown_status is not None:
return ((
'{} <a href="{}">Download a copy</a>.'
).format(self._acceptance_required, download_link))
return ((
'{} <a href="{}">Contact us</a> to get a copy.'
).format(self._acceptance_required, contact_link))
@property
def _acceptance_required(self):
return (
'Your organisation {} must also accept our data sharing '
'and financial agreement.'.format(
'({})'.format(self.owner) if self.owner else '',
)
)
@property
def crown_status_or_404(self):
if self.crown_status is None:

View File

@@ -1,3 +1,5 @@
from functools import partial
import pytest
from bs4 import BeautifulSoup
from flask import url_for
@@ -102,13 +104,19 @@ def test_terms_is_generic_if_user_is_not_logged_in(
)
@pytest.mark.parametrize('email_address, expected_terms_paragraph, expected_pricing_paragraph', [
@pytest.mark.parametrize((
'email_address,'
'expected_terms_paragraph,'
'expected_terms_link,'
'expected_pricing_paragraph'
), [
(
'test@cabinet-office.gov.uk',
(
'Your organisation (Cabinet Office) has already accepted '
'the GOV.UK Notify data sharing and financial agreement.'
),
None,
(
'Contact us to get a copy of the agreement '
'(Cabinet Office has already accepted it).'
@@ -118,8 +126,12 @@ def test_terms_is_generic_if_user_is_not_logged_in(
'test@aylesburytowncouncil.gov.uk',
(
'Your organisation (Aylesbury Town Council) must also '
'accept our data sharing and financial agreement. Contact '
'us to get a copy.'
'accept our data sharing and financial agreement. Download '
'a copy.'
),
partial(
url_for,
'main.agreement',
),
(
'Contact us to get a copy of the agreement '
@@ -132,6 +144,12 @@ def test_terms_is_generic_if_user_is_not_logged_in(
'Your organisation must also accept our data sharing and '
'financial agreement. Contact us to get a copy.'
),
partial(
url_for,
'main.feedback',
ticket_type='ask-question-give-feedback',
body='agreement-with-owner',
),
(
'Contact us to get a copy of the agreement or find out if '
'we already have one in place with your organisation.'
@@ -144,6 +162,7 @@ def test_terms_tells_logged_in_users_what_we_know_about_their_agreement(
client_request,
email_address,
expected_terms_paragraph,
expected_terms_link,
expected_pricing_paragraph,
):
user = active_user_with_permissions(fake_uuid)
@@ -152,4 +171,8 @@ def test_terms_tells_logged_in_users_what_we_know_about_their_agreement(
terms_page = client_request.get('main.terms')
pricing_page = client_request.get('main.pricing')
assert normalize_spaces(terms_page.select('main p')[1].text) == expected_terms_paragraph
if expected_terms_link:
assert terms_page.select_one('main p a')['href'] == expected_terms_link()
else:
assert not terms_page.select_one('main p').select('a')
assert normalize_spaces(pricing_page.select('main p')[-1].text) == expected_pricing_paragraph