mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-31 15:15:38 -05:00
Fix linting errors
This commit is contained in:
@@ -4,7 +4,6 @@ from datetime import datetime
|
|||||||
from flask import current_app
|
from flask import current_app
|
||||||
from notifications_utils.statsd_decorators import statsd
|
from notifications_utils.statsd_decorators import statsd
|
||||||
from sqlalchemy.schema import Sequence
|
from sqlalchemy.schema import Sequence
|
||||||
from celery.exceptions import MaxRetriesExceededError
|
|
||||||
|
|
||||||
from app import cbc_proxy_client, db, notify_celery
|
from app import cbc_proxy_client, db, notify_celery
|
||||||
from app.clients.cbc_proxy import CBCProxyFatalException, CBCProxyRetryableException
|
from app.clients.cbc_proxy import CBCProxyFatalException, CBCProxyRetryableException
|
||||||
@@ -57,7 +56,7 @@ def check_provider_message_should_send(broadcast_event, provider):
|
|||||||
raise CBCProxyFatalException(
|
raise CBCProxyFatalException(
|
||||||
f'Cannot send broadcast_event {broadcast_event.id} ' +
|
f'Cannot send broadcast_event {broadcast_event.id} ' +
|
||||||
f'to provider {provider}: ' +
|
f'to provider {provider}: ' +
|
||||||
f'It is already in status technical-failure'
|
'It is already in status technical-failure'
|
||||||
)
|
)
|
||||||
|
|
||||||
if broadcast_event.transmitted_finishes_at < datetime.utcnow():
|
if broadcast_event.transmitted_finishes_at < datetime.utcnow():
|
||||||
@@ -82,8 +81,8 @@ def check_provider_message_should_send(broadcast_event, provider):
|
|||||||
raise CBCProxyFatalException(
|
raise CBCProxyFatalException(
|
||||||
f'Cannot send {broadcast_event.id}. Previous event {prev_event.id} ' +
|
f'Cannot send {broadcast_event.id}. Previous event {prev_event.id} ' +
|
||||||
f'(type {prev_event.message_type}) has no provider_message for provider {provider} yet.\n' +
|
f'(type {prev_event.message_type}) has no provider_message for provider {provider} yet.\n' +
|
||||||
f'You must ensure that the other event sends succesfully, then manually kick off this event ' +
|
'You must ensure that the other event sends succesfully, then manually kick off this event ' +
|
||||||
f'again by re-running send_broadcast_provider_message for this event and provider.'
|
'again by re-running send_broadcast_provider_message for this event and provider.'
|
||||||
)
|
)
|
||||||
|
|
||||||
# if there's a previous message that has started but not finished sending (whether it fatally errored or is
|
# if there's a previous message that has started but not finished sending (whether it fatally errored or is
|
||||||
@@ -93,8 +92,8 @@ def check_provider_message_should_send(broadcast_event, provider):
|
|||||||
f'Cannot send {broadcast_event.id}. Previous event {prev_event.id} ' +
|
f'Cannot send {broadcast_event.id}. Previous event {prev_event.id} ' +
|
||||||
f'(type {prev_event.message_type}) has not finished sending to provider {provider} yet.\n' +
|
f'(type {prev_event.message_type}) has not finished sending to provider {provider} yet.\n' +
|
||||||
f'It is currently in status "{prev_provider_message.status}".\n' +
|
f'It is currently in status "{prev_provider_message.status}".\n' +
|
||||||
f'You must ensure that the other event sends succesfully, then manually kick off this event ' +
|
'You must ensure that the other event sends succesfully, then manually kick off this event ' +
|
||||||
f'again by re-running send_broadcast_provider_message for this event and provider.'
|
'again by re-running send_broadcast_provider_message for this event and provider.'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -224,7 +224,8 @@ def check_if_letters_still_in_created():
|
|||||||
|
|
||||||
msg = "{} letters were created before 17.30 yesterday and still have 'created' status. " \
|
msg = "{} letters were created before 17.30 yesterday and still have 'created' status. " \
|
||||||
"Follow runbook to resolve: " \
|
"Follow runbook to resolve: " \
|
||||||
"https://github.com/alphagov/notifications-manuals/wiki/Support-Runbook#deal-with-Letters-still-in-created. " \
|
"https://github.com/alphagov/notifications-manuals/wiki/Support-Runbook" \
|
||||||
|
"#deal-with-Letters-still-in-created. " \
|
||||||
"Notifications: {}".format(len(letters), letter_ids)
|
"Notifications: {}".format(len(letters), letter_ids)
|
||||||
|
|
||||||
current_app.logger.warning(msg)
|
current_app.logger.warning(msg)
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ class CBCProxyClientBase(ABC):
|
|||||||
InvocationType='RequestResponse',
|
InvocationType='RequestResponse',
|
||||||
Payload=payload_bytes,
|
Payload=payload_bytes,
|
||||||
)
|
)
|
||||||
except botocore.exceptions.ClientError as exc:
|
except botocore.exceptions.ClientError:
|
||||||
current_app.logger.exception(f'Boto ClientError calling lambda {lambda_name}')
|
current_app.logger.exception(f'Boto ClientError calling lambda {lambda_name}')
|
||||||
success = False
|
success = False
|
||||||
return success
|
return success
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import boto3
|
|||||||
import botocore
|
import botocore
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from time import monotonic
|
from time import monotonic
|
||||||
from notifications_utils.recipients import InvalidEmailError
|
|
||||||
|
|
||||||
from app.clients import STATISTICS_DELIVERED, STATISTICS_FAILURE
|
from app.clients import STATISTICS_DELIVERED, STATISTICS_FAILURE
|
||||||
from app.clients.email import EmailClient, EmailClientException, EmailClientNonRetryableException
|
from app.clients.email import EmailClient, EmailClientException, EmailClientNonRetryableException
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ def get_dt_string_or_none(val):
|
|||||||
|
|
||||||
|
|
||||||
def get_uuid_string_or_none(val):
|
def get_uuid_string_or_none(val):
|
||||||
return str(val) if val else None
|
return str(val) if val else None
|
||||||
|
|
||||||
|
|
||||||
def format_sequential_number(sequential_number):
|
def format_sequential_number(sequential_number):
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ def create_broadcast():
|
|||||||
|
|
||||||
if not validate_xml(cap_xml, 'CAP-v1.2.xsd'):
|
if not validate_xml(cap_xml, 'CAP-v1.2.xsd'):
|
||||||
raise BadRequestError(
|
raise BadRequestError(
|
||||||
message=f'Request data is not valid CAP XML',
|
message='Request data is not valid CAP XML',
|
||||||
status_code=400,
|
status_code=400,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ def test_create_broadcast_message(admin_request, sample_broadcast_service, train
|
|||||||
broadcast_message = dao_get_broadcast_message_by_id_and_service_id(response["id"], sample_broadcast_service.id)
|
broadcast_message = dao_get_broadcast_message_by_id_and_service_id(response["id"], sample_broadcast_service.id)
|
||||||
assert broadcast_message.stubbed == training_mode_service
|
assert broadcast_message.stubbed == training_mode_service
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('data, expected_errors', [
|
@pytest.mark.parametrize('data, expected_errors', [
|
||||||
(
|
(
|
||||||
{},
|
{},
|
||||||
@@ -625,6 +626,7 @@ def test_update_broadcast_message_status_creates_event_with_correct_content_if_b
|
|||||||
|
|
||||||
assert alert_event.transmitted_content == {"body": "tailor made emergency broadcast content"}
|
assert alert_event.transmitted_content == {"body": "tailor made emergency broadcast content"}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('is_platform_admin', [True, False])
|
@pytest.mark.parametrize('is_platform_admin', [True, False])
|
||||||
def test_update_broadcast_message_status_rejects_approval_from_creator(
|
def test_update_broadcast_message_status_rejects_approval_from_creator(
|
||||||
admin_request,
|
admin_request,
|
||||||
|
|||||||
@@ -253,20 +253,20 @@ def test_send_broadcast_provider_message_works_if_we_retried_previously(mocker,
|
|||||||
template = create_template(sample_service, BROADCAST_TYPE)
|
template = create_template(sample_service, BROADCAST_TYPE)
|
||||||
broadcast_message = create_broadcast_message(
|
broadcast_message = create_broadcast_message(
|
||||||
template,
|
template,
|
||||||
areas={'areas': [], 'simple_polygons': [],},
|
areas={'areas': [], 'simple_polygons': [], },
|
||||||
status=BroadcastStatusType.BROADCASTING
|
status=BroadcastStatusType.BROADCASTING
|
||||||
)
|
)
|
||||||
event = create_broadcast_event(broadcast_message)
|
event = create_broadcast_event(broadcast_message)
|
||||||
|
|
||||||
# an existing provider message already exists, and previously failed
|
# an existing provider message already exists, and previously failed
|
||||||
existing_provider_message = create_broadcast_provider_message(
|
create_broadcast_provider_message(
|
||||||
broadcast_event=event,
|
broadcast_event=event,
|
||||||
provider='ee',
|
provider='ee',
|
||||||
status=BroadcastProviderMessageStatus.SENDING
|
status=BroadcastProviderMessageStatus.SENDING
|
||||||
)
|
)
|
||||||
|
|
||||||
mock_create_broadcast = mocker.patch(
|
mock_create_broadcast = mocker.patch(
|
||||||
f'app.clients.cbc_proxy.CBCProxyEE.create_and_send_broadcast',
|
'app.clients.cbc_proxy.CBCProxyEE.create_and_send_broadcast',
|
||||||
)
|
)
|
||||||
|
|
||||||
send_broadcast_provider_message(provider='ee', broadcast_event_id=str(event.id))
|
send_broadcast_provider_message(provider='ee', broadcast_event_id=str(event.id))
|
||||||
@@ -496,7 +496,6 @@ def test_send_broadcast_provider_message_errors(mocker, sample_service, provider
|
|||||||
assert broadcast_provider_message.status == BroadcastProviderMessageStatus.SENDING
|
assert broadcast_provider_message.status == BroadcastProviderMessageStatus.SENDING
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('num_retries, expected_countdown', [
|
@pytest.mark.parametrize('num_retries, expected_countdown', [
|
||||||
(0, 1),
|
(0, 1),
|
||||||
(5, 32),
|
(5, 32),
|
||||||
@@ -688,7 +687,8 @@ def test_check_provider_message_should_send_doesnt_raise_if_newer_event_not_acke
|
|||||||
message_type='alert',
|
message_type='alert',
|
||||||
sent_at=datetime(2021, 1, 1, 0, 0),
|
sent_at=datetime(2021, 1, 1, 0, 0),
|
||||||
)
|
)
|
||||||
future_event = create_broadcast_event(
|
# create a future event
|
||||||
|
create_broadcast_event(
|
||||||
broadcast_message,
|
broadcast_message,
|
||||||
message_type='cancel',
|
message_type='cancel',
|
||||||
sent_at=datetime(2021, 1, 1, 10, 0),
|
sent_at=datetime(2021, 1, 1, 10, 0),
|
||||||
|
|||||||
@@ -57,7 +57,10 @@ def test_send_sms_should_not_switch_providers_on_non_provider_failure(
|
|||||||
|
|
||||||
|
|
||||||
def test_should_retry_and_log_warning_if_SmsClientResponseException_for_deliver_sms_task(sample_notification, mocker):
|
def test_should_retry_and_log_warning_if_SmsClientResponseException_for_deliver_sms_task(sample_notification, mocker):
|
||||||
mocker.patch('app.delivery.send_to_providers.send_sms_to_provider', side_effect=SmsClientResponseException("something went wrong"))
|
mocker.patch(
|
||||||
|
'app.delivery.send_to_providers.send_sms_to_provider',
|
||||||
|
side_effect=SmsClientResponseException("something went wrong"),
|
||||||
|
)
|
||||||
mocker.patch('app.celery.provider_tasks.deliver_sms.retry')
|
mocker.patch('app.celery.provider_tasks.deliver_sms.retry')
|
||||||
mock_logger_warning = mocker.patch('app.celery.tasks.current_app.logger.warning')
|
mock_logger_warning = mocker.patch('app.celery.tasks.current_app.logger.warning')
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ def cbc_proxy_client(client, mocker):
|
|||||||
def cbc_proxy_ee(cbc_proxy_client):
|
def cbc_proxy_ee(cbc_proxy_client):
|
||||||
return cbc_proxy_client.get_proxy('ee')
|
return cbc_proxy_client.get_proxy('ee')
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def cbc_proxy_vodafone(cbc_proxy_client):
|
def cbc_proxy_vodafone(cbc_proxy_client):
|
||||||
return cbc_proxy_client.get_proxy('vodafone')
|
return cbc_proxy_client.get_proxy('vodafone')
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from flask import json
|
from flask import json
|
||||||
from freezegun import freeze_time
|
|
||||||
from tests import create_authorization_header
|
from tests import create_authorization_header
|
||||||
from unittest.mock import ANY
|
from unittest.mock import ANY
|
||||||
from . import sample_cap_xml_documents
|
from . import sample_cap_xml_documents
|
||||||
@@ -80,12 +79,12 @@ def test_valid_post_cap_xml_broadcast_returns_201(
|
|||||||
response_json = json.loads(response.get_data(as_text=True))
|
response_json = json.loads(response.get_data(as_text=True))
|
||||||
|
|
||||||
assert response_json['approved_at'] is None
|
assert response_json['approved_at'] is None
|
||||||
assert response_json['approved_by_id'] == None
|
assert response_json['approved_by_id'] is None
|
||||||
assert response_json['areas'] == [
|
assert response_json['areas'] == [
|
||||||
'River Steeping in Wainfleet All Saints'
|
'River Steeping in Wainfleet All Saints'
|
||||||
]
|
]
|
||||||
assert response_json['cancelled_at'] == None
|
assert response_json['cancelled_at'] is None
|
||||||
assert response_json['cancelled_by_id'] == None
|
assert response_json['cancelled_by_id'] is None
|
||||||
assert response_json['content'].startswith(
|
assert response_json['content'].startswith(
|
||||||
'A severe flood warning has been issued. Storm Dennis'
|
'A severe flood warning has been issued. Storm Dennis'
|
||||||
)
|
)
|
||||||
@@ -94,7 +93,7 @@ def test_valid_post_cap_xml_broadcast_returns_201(
|
|||||||
)
|
)
|
||||||
assert response_json['reference'] == '50385fcb0ab7aa447bbd46d848ce8466E'
|
assert response_json['reference'] == '50385fcb0ab7aa447bbd46d848ce8466E'
|
||||||
assert response_json['created_at'] # datetime generated by the DB so can’t freeze it
|
assert response_json['created_at'] # datetime generated by the DB so can’t freeze it
|
||||||
assert response_json['created_by_id'] == None
|
assert response_json['created_by_id'] is None
|
||||||
assert response_json['finishes_at'] is None
|
assert response_json['finishes_at'] is None
|
||||||
assert response_json['id'] == ANY
|
assert response_json['id'] == ANY
|
||||||
assert response_json['personalisation'] is None
|
assert response_json['personalisation'] is None
|
||||||
|
|||||||
Reference in New Issue
Block a user