diff --git a/app/main/views/broadcast.py b/app/main/views/broadcast.py index c42a00f5d..512b3fbb2 100644 --- a/app/main/views/broadcast.py +++ b/app/main/views/broadcast.py @@ -138,12 +138,26 @@ def broadcast(service_id, template_id): @user_has_permissions('send_messages') @service_has_permission('broadcast') def preview_broadcast_areas(service_id, broadcast_message_id): + broadcast_message = BroadcastMessage.from_id( + broadcast_message_id, + service_id=current_service.id, + ) + if broadcast_message.template_id: + back_link = url_for( + '.view_template', + service_id=current_service.id, + template_id=broadcast_message.template_id, + ) + else: + back_link = url_for( + '.write_new_broadcast', + service_id=current_service.id, + ) + return render_template( 'views/broadcast/preview-areas.html', - broadcast_message=BroadcastMessage.from_id( - broadcast_message_id, - service_id=current_service.id, - ), + broadcast_message=broadcast_message, + back_link=back_link, ) diff --git a/app/models/broadcast_message.py b/app/models/broadcast_message.py index 43f8fec3e..569bb36bb 100644 --- a/app/models/broadcast_message.py +++ b/app/models/broadcast_message.py @@ -13,7 +13,6 @@ from app.models.user import User from app.notify_client.broadcast_message_api_client import ( broadcast_message_api_client, ) -from app.notify_client.service_api_client import service_api_client class BroadcastMessage(JSONModel): @@ -22,8 +21,6 @@ class BroadcastMessage(JSONModel): 'id', 'service_id', 'template_id', - 'template_name', - 'template_version', 'content', 'service_id', 'created_by', @@ -101,14 +98,19 @@ class BroadcastMessage(JSONModel): def simple_polygons(self): return self.get_simple_polygons(areas=self.areas) + @property + def reference(self): + if self.template_id: + return self._dict['template_name'] + return self._dict['reference'] + @property def template(self): - response = service_api_client.get_service_template( - self.service_id, - self.template_id, - version=self.template_version, - ) - return BroadcastPreviewTemplate(response['data']) + return BroadcastPreviewTemplate({ + 'template_type': BroadcastPreviewTemplate.template_type, + 'name': self.reference, + 'content': self.content, + }) @property def status(self): diff --git a/app/templates/views/broadcast/partials/dashboard-table.html b/app/templates/views/broadcast/partials/dashboard-table.html index ebf1d8694..a0d7fef5b 100644 --- a/app/templates/views/broadcast/partials/dashboard-table.html +++ b/app/templates/views/broadcast/partials/dashboard-table.html @@ -5,7 +5,7 @@
diff --git a/tests/__init__.py b/tests/__init__.py index ff4866012..8c7553c08 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -656,6 +656,7 @@ def broadcast_message_json( cancelled_by_id=None, areas=None, content=None, + reference=None, template_name='Example template', ): return { @@ -667,6 +668,7 @@ def broadcast_message_json( 'template_version': 123, 'template_name': template_name, 'content': content or 'This is a test', + 'reference': reference, 'personalisation': {}, 'areas': areas or [ diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py index 6528e0e63..4a5f8512c 100644 --- a/tests/app/main/views/test_broadcast.py +++ b/tests/app/main/views/test_broadcast.py @@ -1470,6 +1470,53 @@ def test_view_pending_broadcast( ) +@freeze_time('2020-02-22T22:22:22.000000') +def test_view_pending_broadcast_without_template( + mocker, + client_request, + service_one, + active_user_with_permissions, + fake_uuid, +): + mocker.patch( + 'app.broadcast_message_api_client.get_broadcast_message', + return_value=broadcast_message_json( + id_=fake_uuid, + service_id=SERVICE_ONE_ID, + template_id=None, + created_by_id=fake_uuid, + finishes_at=None, + status='pending-approval', + reference='No template test', + content='Uh-oh', + ), + ) + mocker.patch('app.user_api_client.get_user', side_effect=[ + active_user_with_permissions, # Current user + user_json(id_=uuid.uuid4()), # User who created broadcast + ]) + service_one['permissions'] += ['broadcast'] + + page = client_request.get( + '.view_current_broadcast', + service_id=SERVICE_ONE_ID, + broadcast_message_id=fake_uuid, + ) + + assert ( + normalize_spaces(page.select_one('.banner').text) + ) == ( + 'Test User wants to broadcast No template test ' + 'Start broadcasting now Reject this alert' + ) + assert ( + normalize_spaces(page.select_one('.broadcast-message-wrapper').text) + ) == ( + 'Emergency alert ' + 'Uh-oh' + ) + + @freeze_time('2020-02-22T22:22:22.000000') def test_cant_approve_own_broadcast( mocker,