Remove letters from caseworking view

Because one-off letters aren’t a thing yet there’s no way for
caseworkers to send letters. So showing them letter templates will just
confuse them.
This commit is contained in:
Chris Hill-Scott
2018-07-05 11:53:42 +01:00
parent 0018ecd765
commit 9da9e85293
3 changed files with 100 additions and 21 deletions
+21 -2
View File
@@ -102,6 +102,22 @@ def start_tour(service_id, template_id):
def choose_template(service_id, template_type='all'): def choose_template(service_id, template_type='all'):
templates = service_api_client.get_service_templates(service_id)['data'] templates = service_api_client.get_service_templates(service_id)['data']
letters_available = (
'letter' in current_service['permissions'] and
current_user.has_permissions('view_activity')
)
available_template_types = list(filter(None, (
'email',
'sms',
'letter' if letters_available else None,
)))
templates = [
template for template in templates
if template['template_type'] in available_template_types
]
has_multiple_template_types = len({ has_multiple_template_types = len({
template['template_type'] for template in templates template['template_type'] for template in templates
}) > 1 }) > 1
@@ -112,13 +128,16 @@ def choose_template(service_id, template_type='all'):
('All', 'all'), ('All', 'all'),
('Text message', 'sms'), ('Text message', 'sms'),
('Email', 'email'), ('Email', 'email'),
('Letter', 'letter') if 'letter' in current_service['permissions'] else None, ('Letter', 'letter') if letters_available else None,
]) ])
] ]
templates_on_page = [ templates_on_page = [
template for template in templates template for template in templates
if template_type in ['all', template['template_type']] if (
template_type in ['all', template['template_type']] and
template['template_type'] in available_template_types
)
] ]
if current_user.has_permissions('view_activity'): if current_user.has_permissions('view_activity'):
+56 -6
View File
@@ -19,6 +19,7 @@ from tests import (
from tests.conftest import ( from tests.conftest import (
SERVICE_ONE_ID, SERVICE_ONE_ID,
active_caseworking_user, active_caseworking_user,
active_user_view_permissions,
mock_get_service_email_template, mock_get_service_email_template,
mock_get_service_letter_template, mock_get_service_letter_template,
mock_get_service_template, mock_get_service_template,
@@ -29,30 +30,79 @@ from tests.conftest import service_one as create_sample_service
from tests.conftest import single_letter_contact_block from tests.conftest import single_letter_contact_block
@pytest.mark.parametrize('extra_args, expected_nav_links, expected_templates', [ @pytest.mark.parametrize(
'user, expected_page_title, extra_args, expected_nav_links, expected_templates',
[
( (
active_user_view_permissions,
'Templates',
{}, {},
['Text message', 'Email'], ['Text message', 'Email', 'Letter'],
['sms_template_one', 'sms_template_two', 'email_template_one', 'email_template_two'] [
'sms_template_one',
'sms_template_two',
'email_template_one',
'email_template_two',
'letter_template_one',
'letter_template_two',
]
), ),
( (
active_user_view_permissions,
'Templates',
{'template_type': 'sms'}, {'template_type': 'sms'},
['All', 'Email'], ['All', 'Email', 'Letter'],
['sms_template_one', 'sms_template_two'], ['sms_template_one', 'sms_template_two'],
), ),
( (
active_user_view_permissions,
'Templates',
{'template_type': 'email'},
['All', 'Text message', 'Letter'],
['email_template_one', 'email_template_two'],
),
(
active_user_view_permissions,
'Templates',
{'template_type': 'letter'},
['All', 'Text message', 'Email'],
['letter_template_one', 'letter_template_two'],
),
(
active_caseworking_user,
'Choose a template',
{},
['Text message', 'Email'],
[
'sms_template_one',
'sms_template_two',
'email_template_one',
'email_template_two',
],
),
(
active_caseworking_user,
'Choose a template',
{'template_type': 'email'}, {'template_type': 'email'},
['All', 'Text message'], ['All', 'Text message'],
['email_template_one', 'email_template_two'], ['email_template_one', 'email_template_two'],
), ),
]) ]
)
def test_should_show_page_for_choosing_a_template( def test_should_show_page_for_choosing_a_template(
client_request, client_request,
mock_get_service_templates, mock_get_service_templates,
extra_args, extra_args,
expected_nav_links, expected_nav_links,
expected_templates, expected_templates,
service_one,
mocker,
fake_uuid,
user,
expected_page_title,
): ):
mocker.patch('app.user_api_client.get_user', return_value=user(fake_uuid))
service_one['permissions'].append('letter')
page = client_request.get( page = client_request.get(
'main.choose_template', 'main.choose_template',
@@ -60,7 +110,7 @@ def test_should_show_page_for_choosing_a_template(
**extra_args **extra_args
) )
assert normalize_spaces(page.select('h1')[0].text) == 'Templates' assert normalize_spaces(page.select_one('h1').text) == expected_page_title
links_in_page = page.select('.pill a') links_in_page = page.select('.pill a')
+11 -1
View File
@@ -953,6 +953,8 @@ def mock_get_service_templates(mocker):
uuid2 = str(generate_uuid()) uuid2 = str(generate_uuid())
uuid3 = str(generate_uuid()) uuid3 = str(generate_uuid())
uuid4 = str(generate_uuid()) uuid4 = str(generate_uuid())
uuid5 = str(generate_uuid())
uuid6 = str(generate_uuid())
def _create(service_id): def _create(service_id):
return {'data': [ return {'data': [
@@ -969,7 +971,15 @@ def mock_get_service_templates(mocker):
template_json( template_json(
service_id, uuid4, "email_template_two", "email", "email template two content", service_id, uuid4, "email_template_two", "email", "email template two content",
subject='email template two subject', subject='email template two subject',
) ),
template_json(
service_id, uuid5, "letter_template_one", "letter", "letter template one content",
subject='letter template one subject',
),
template_json(
service_id, uuid6, "letter_template_two", "letter", "letter template two content",
subject='letter template two subject',
),
]} ]}
return mocker.patch( return mocker.patch(