diff --git a/app/celery/broadcast_message_tasks.py b/app/celery/broadcast_message_tasks.py index e253d6e2c..1458852bc 100644 --- a/app/celery/broadcast_message_tasks.py +++ b/app/celery/broadcast_message_tasks.py @@ -4,7 +4,6 @@ from datetime import datetime from flask import current_app from notifications_utils.statsd_decorators import statsd from sqlalchemy.schema import Sequence -from celery.exceptions import MaxRetriesExceededError from app import cbc_proxy_client, db, notify_celery from app.clients.cbc_proxy import CBCProxyFatalException, CBCProxyRetryableException @@ -57,7 +56,7 @@ def check_provider_message_should_send(broadcast_event, provider): raise CBCProxyFatalException( f'Cannot send broadcast_event {broadcast_event.id} ' + 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(): @@ -82,8 +81,8 @@ def check_provider_message_should_send(broadcast_event, provider): raise CBCProxyFatalException( 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'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.' + 'You must ensure that the other event sends succesfully, then manually kick off this event ' + + '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 @@ -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'(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'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.' + 'You must ensure that the other event sends succesfully, then manually kick off this event ' + + 'again by re-running send_broadcast_provider_message for this event and provider.' ) diff --git a/app/celery/scheduled_tasks.py b/app/celery/scheduled_tasks.py index 22ba8a60b..fff549317 100644 --- a/app/celery/scheduled_tasks.py +++ b/app/celery/scheduled_tasks.py @@ -224,7 +224,8 @@ def check_if_letters_still_in_created(): msg = "{} letters were created before 17.30 yesterday and still have 'created' status. " \ "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) current_app.logger.warning(msg) diff --git a/app/clients/cbc_proxy.py b/app/clients/cbc_proxy.py index 2c49652fb..707d6df35 100644 --- a/app/clients/cbc_proxy.py +++ b/app/clients/cbc_proxy.py @@ -134,7 +134,7 @@ class CBCProxyClientBase(ABC): InvocationType='RequestResponse', Payload=payload_bytes, ) - except botocore.exceptions.ClientError as exc: + except botocore.exceptions.ClientError: current_app.logger.exception(f'Boto ClientError calling lambda {lambda_name}') success = False return success diff --git a/app/clients/email/aws_ses.py b/app/clients/email/aws_ses.py index f9d6e8723..479a1fe7b 100644 --- a/app/clients/email/aws_ses.py +++ b/app/clients/email/aws_ses.py @@ -2,7 +2,6 @@ import boto3 import botocore from flask import current_app from time import monotonic -from notifications_utils.recipients import InvalidEmailError from app.clients import STATISTICS_DELIVERED, STATISTICS_FAILURE from app.clients.email import EmailClient, EmailClientException, EmailClientNonRetryableException diff --git a/app/utils.py b/app/utils.py index a5a2d15f2..be0b6f97f 100644 --- a/app/utils.py +++ b/app/utils.py @@ -151,7 +151,7 @@ def get_dt_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): diff --git a/app/v2/broadcast/post_broadcast.py b/app/v2/broadcast/post_broadcast.py index 6833babde..88e44418a 100644 --- a/app/v2/broadcast/post_broadcast.py +++ b/app/v2/broadcast/post_broadcast.py @@ -31,7 +31,7 @@ def create_broadcast(): if not validate_xml(cap_xml, 'CAP-v1.2.xsd'): raise BadRequestError( - message=f'Request data is not valid CAP XML', + message='Request data is not valid CAP XML', status_code=400, ) diff --git a/setup.cfg b/setup.cfg index 84c3eb929..866944503 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ xfail_strict=true [flake8] -exclude = venv*,__pycache__,node_modules,cache,migrations,build +exclude = venv*,__pycache__,node_modules,cache,migrations,build,sample_cap_xml_documents.py +max-line-length = 120 # W504 line break after binary operator extend_ignore=B306, W504 -select=B901 diff --git a/tests/app/broadcast_message/test_rest.py b/tests/app/broadcast_message/test_rest.py index 25edf32a8..d0742b0b8 100644 --- a/tests/app/broadcast_message/test_rest.py +++ b/tests/app/broadcast_message/test_rest.py @@ -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) assert broadcast_message.stubbed == training_mode_service + @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"} + @pytest.mark.parametrize('is_platform_admin', [True, False]) def test_update_broadcast_message_status_rejects_approval_from_creator( admin_request, diff --git a/tests/app/celery/test_broadcast_message_tasks.py b/tests/app/celery/test_broadcast_message_tasks.py index 224d61112..5e4f167dd 100644 --- a/tests/app/celery/test_broadcast_message_tasks.py +++ b/tests/app/celery/test_broadcast_message_tasks.py @@ -253,20 +253,20 @@ def test_send_broadcast_provider_message_works_if_we_retried_previously(mocker, template = create_template(sample_service, BROADCAST_TYPE) broadcast_message = create_broadcast_message( template, - areas={'areas': [], 'simple_polygons': [],}, + areas={'areas': [], 'simple_polygons': [], }, status=BroadcastStatusType.BROADCASTING ) event = create_broadcast_event(broadcast_message) # an existing provider message already exists, and previously failed - existing_provider_message = create_broadcast_provider_message( + create_broadcast_provider_message( broadcast_event=event, provider='ee', status=BroadcastProviderMessageStatus.SENDING ) 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)) @@ -496,7 +496,6 @@ def test_send_broadcast_provider_message_errors(mocker, sample_service, provider assert broadcast_provider_message.status == BroadcastProviderMessageStatus.SENDING - @pytest.mark.parametrize('num_retries, expected_countdown', [ (0, 1), (5, 32), @@ -688,7 +687,8 @@ def test_check_provider_message_should_send_doesnt_raise_if_newer_event_not_acke message_type='alert', sent_at=datetime(2021, 1, 1, 0, 0), ) - future_event = create_broadcast_event( + # create a future event + create_broadcast_event( broadcast_message, message_type='cancel', sent_at=datetime(2021, 1, 1, 10, 0), diff --git a/tests/app/celery/test_provider_tasks.py b/tests/app/celery/test_provider_tasks.py index ad024e045..ce2615c36 100644 --- a/tests/app/celery/test_provider_tasks.py +++ b/tests/app/celery/test_provider_tasks.py @@ -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): - 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') mock_logger_warning = mocker.patch('app.celery.tasks.current_app.logger.warning') diff --git a/tests/app/clients/test_cbc_proxy.py b/tests/app/clients/test_cbc_proxy.py index 23a69af0f..62a6f4f06 100644 --- a/tests/app/clients/test_cbc_proxy.py +++ b/tests/app/clients/test_cbc_proxy.py @@ -40,6 +40,7 @@ def cbc_proxy_client(client, mocker): def cbc_proxy_ee(cbc_proxy_client): return cbc_proxy_client.get_proxy('ee') + @pytest.fixture def cbc_proxy_vodafone(cbc_proxy_client): return cbc_proxy_client.get_proxy('vodafone') diff --git a/tests/app/v2/broadcast/test_post_broadcast.py b/tests/app/v2/broadcast/test_post_broadcast.py index 8cd0256d5..6f4a579d7 100644 --- a/tests/app/v2/broadcast/test_post_broadcast.py +++ b/tests/app/v2/broadcast/test_post_broadcast.py @@ -1,7 +1,6 @@ import pytest from flask import json -from freezegun import freeze_time from tests import create_authorization_header from unittest.mock import ANY 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)) 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'] == [ 'River Steeping in Wainfleet All Saints' ] - assert response_json['cancelled_at'] == None - assert response_json['cancelled_by_id'] == None + assert response_json['cancelled_at'] is None + assert response_json['cancelled_by_id'] is None assert response_json['content'].startswith( '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['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['id'] == ANY assert response_json['personalisation'] is None