Merge branch 'master' into delete-letter-job-page

This commit is contained in:
Rebecca Law
2018-11-16 15:32:51 +00:00
4 changed files with 57 additions and 34 deletions

View File

@@ -423,10 +423,7 @@ ashbournetowncouncil.gov.uk:
owner: Ashbourne Town Council owner: Ashbourne Town Council
crown: false crown: false
agreement_signed: false agreement_signed: false
ashfield-dc.gov.uk: ashfield-dc.gov.uk: ashfield.gov.uk
owner: Ashfield District Council
crown: false
agreement_signed: false
ashfield.gov.uk: ashfield.gov.uk:
owner: Ashfield District Council owner: Ashfield District Council
crown: false crown: false
@@ -1537,7 +1534,7 @@ dorchester-tc.gov.uk:
dorsetcc.gov.uk: dorsetcc.gov.uk:
owner: Dorset County Council owner: Dorset County Council
crown: false crown: false
agreement_signed: false agreement_signed: true
dorsetforyou.gov.uk: dorsetforyou.gov.uk:
owner: Weymouth and Portland Borough Council owner: Weymouth and Portland Borough Council
crown: false crown: false
@@ -3715,7 +3712,7 @@ rosstc-herefordshire.gov.uk:
rother.gov.uk: rother.gov.uk:
owner: Rother District Council owner: Rother District Council
crown: false crown: false
agreement_signed: false agreement_signed: true
rotherham.gov.uk: rotherham.gov.uk:
owner: Rotherham Borough Council owner: Rotherham Borough Council
crown: false crown: false
@@ -5120,15 +5117,9 @@ worcester.gov.uk:
worcestershire.gov.uk: worcestershire.gov.uk:
owner: Worcestershire County Council owner: Worcestershire County Council
crown: false crown: false
agreement_signed: false agreement_signed: true
worcestershirehub.gov.uk: worcestershirehub.gov.uk: worcestershire.gov.uk
owner: Worcestershire County Council worcestershirets.gov.uk: worcestershire.gov.uk
crown: false
agreement_signed: false
worcestershirets.gov.uk:
owner: Worcestershire County Council
crown: false
agreement_signed: false
worcsregservices.gov.uk: worcsregservices.gov.uk:
owner: Bromsgrove District Council owner: Bromsgrove District Council
crown: false crown: false

View File

@@ -216,10 +216,12 @@ def get_notifications(service_id, message_type, status_override=None):
abort(404) abort(404)
filter_args = parse_filter_args(request.args) filter_args = parse_filter_args(request.args)
filter_args['status'] = set_status_filters(filter_args) filter_args['status'] = set_status_filters(filter_args)
service_data_retention_days = None
service_data_retention_days = service_api_client.get_service_data_retention_by_notification_type( if message_type is not None:
service_id, message_type service_data_retention_days = service_api_client.get_service_data_retention_by_notification_type(
).get('days_of_retention', current_app.config['ACTIVITY_STATS_LIMIT_DAYS']) service_id, message_type
).get('days_of_retention', current_app.config['ACTIVITY_STATS_LIMIT_DAYS'])
if request.path.endswith('csv') and current_user.has_permissions('view_activity'): if request.path.endswith('csv') and current_user.has_permissions('view_activity'):
return Response( return Response(

View File

@@ -58,6 +58,12 @@ class Service():
return self._dict[attr] return self._dict[attr]
raise AttributeError('`{}` is not a service attribute'.format(attr)) raise AttributeError('`{}` is not a service attribute'.format(attr))
def _get_by_id(self, things, id):
try:
return next(thing for thing in things if thing['id'] == id)
except StopIteration:
abort(404)
def update(self, **kwargs): def update(self, **kwargs):
return service_api_client.update_service(self.id, **kwargs) return service_api_client.update_service(self.id, **kwargs)
@@ -310,13 +316,7 @@ class Service():
] ]
def get_template_folder(self, folder_id): def get_template_folder(self, folder_id):
try: return self._get_by_id(self.all_template_folders, folder_id)
return next(
folder for folder in self.all_template_folders
if folder['id'] == folder_id
)
except StopIteration:
abort(404)
def is_folder_visible(self, template_folder_id, template_type='all'): def is_folder_visible(self, template_folder_id, template_type='all'):
@@ -374,7 +374,4 @@ class Service():
) )
def get_api_key(self, id): def get_api_key(self, id):
try: return self._get_by_id(self.api_keys, id)
return next(key for key in self.api_keys if key['id'] == id)
except StopIteration:
abort(404)

View File

@@ -21,10 +21,28 @@ from tests.conftest import (
@pytest.mark.parametrize( @pytest.mark.parametrize(
"user,extra_args,expected_update_endpoint,page_title", [ "user,extra_args,expected_update_endpoint,expected_limit_days,page_title", [
(active_user_view_permissions, {'message_type': 'email'}, '/email.json', 'Emails'), (
(active_user_view_permissions, {'message_type': 'sms'}, '/sms.json', 'Text messages'), active_user_view_permissions,
(active_caseworking_user, {}, '.json', 'Sent messages'), {'message_type': 'email'},
'/email.json',
7,
'Emails',
),
(
active_user_view_permissions,
{'message_type': 'sms'},
'/sms.json',
7,
'Text messages',
),
(
active_caseworking_user,
{},
'.json',
None,
'Sent messages',
),
] ]
) )
@pytest.mark.parametrize( @pytest.mark.parametrize(
@@ -76,6 +94,7 @@ def test_can_show_notifications(
user, user,
extra_args, extra_args,
expected_update_endpoint, expected_update_endpoint,
expected_limit_days,
page_title, page_title,
status_argument, status_argument,
expected_api_call, expected_api_call,
@@ -131,7 +150,7 @@ def test_can_show_notifications(
assert 'to' not in query_dict assert 'to' not in query_dict
mock_get_notifications.assert_called_with( mock_get_notifications.assert_called_with(
limit_days=7, limit_days=expected_limit_days,
page=expected_page_argument, page=expected_page_argument,
service_id=service_one['id'], service_id=service_one['id'],
status=expected_api_call, status=expected_api_call,
@@ -149,6 +168,20 @@ def test_can_show_notifications(
assert json_content.keys() == {'counts', 'notifications', 'service_data_retention_days'} assert json_content.keys() == {'counts', 'notifications', 'service_data_retention_days'}
def test_can_show_notifications_if_data_retention_not_available(
client_request,
mock_get_notifications,
mock_get_service_statistics,
mock_has_no_jobs,
):
page = client_request.get(
'main.view_notifications',
service_id=SERVICE_ONE_ID,
status='sending,delivered,failed',
)
assert page.h1.text.strip() == 'Messages'
@pytest.mark.parametrize('user, query_parameters, expected_download_link', [ @pytest.mark.parametrize('user, query_parameters, expected_download_link', [
( (
active_user_with_permissions, active_user_with_permissions,