Cleaning up with black, isort, flake8.

Signed-off-by: Cliff Hill <Clifford.hill@gsa.gov>
This commit is contained in:
Cliff Hill
2024-02-28 12:43:33 -05:00
parent ab7387acd8
commit 9523cc1d97
28 changed files with 82 additions and 61 deletions
+4 -1
View File
@@ -77,7 +77,10 @@ def process_ses_results(self, response):
f"SES bounce for notification ID {notification.id}: {bounce_message}" f"SES bounce for notification ID {notification.id}: {bounce_message}"
) )
if notification.status not in {NotificationStatus.SENDING, NotificationStatus.PENDING}: if notification.status not in {
NotificationStatus.SENDING,
NotificationStatus.PENDING,
}:
notifications_dao._duplicate_update_warning( notifications_dao._duplicate_update_warning(
notification, notification_status notification, notification_status
) )
+6 -3
View File
@@ -121,7 +121,8 @@ def deliver_sms(self, notification_id):
) )
except Exception as e: except Exception as e:
update_notification_status_by_id( update_notification_status_by_id(
notification_id, NotificationStatus.TEMPORARY_FAILURE, notification_id,
NotificationStatus.TEMPORARY_FAILURE,
) )
if isinstance(e, SmsClientResponseException): if isinstance(e, SmsClientResponseException):
current_app.logger.warning( current_app.logger.warning(
@@ -146,7 +147,8 @@ def deliver_sms(self, notification_id):
) )
) )
update_notification_status_by_id( update_notification_status_by_id(
notification_id, NotificationStatus.TECHNICAL_FAILURE, notification_id,
NotificationStatus.TECHNICAL_FAILURE,
) )
raise NotificationTechnicalFailureException(message) raise NotificationTechnicalFailureException(message)
@@ -189,6 +191,7 @@ def deliver_email(self, notification_id):
) )
) )
update_notification_status_by_id( update_notification_status_by_id(
notification_id, NotificationStatus.TECHNICAL_FAILURE, notification_id,
NotificationStatus.TECHNICAL_FAILURE,
) )
raise NotificationTechnicalFailureException(message) raise NotificationTechnicalFailureException(message)
+1 -1
View File
@@ -34,7 +34,7 @@ from app.dao.services_dao import (
) )
from app.dao.users_dao import delete_codes_older_created_more_than_a_day_ago from app.dao.users_dao import delete_codes_older_created_more_than_a_day_ago
from app.delivery.send_to_providers import provider_to_use from app.delivery.send_to_providers import provider_to_use
from app.enums import NotificationType, JobStatus from app.enums import JobStatus, NotificationType
from app.models import Job from app.models import Job
from app.notifications.process_notifications import send_notification_to_queue from app.notifications.process_notifications import send_notification_to_queue
+1 -1
View File
@@ -20,7 +20,7 @@ from app.dao.service_email_reply_to_dao import dao_get_reply_to_by_id
from app.dao.service_inbound_api_dao import get_service_inbound_api_for_service from app.dao.service_inbound_api_dao import get_service_inbound_api_for_service
from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id
from app.dao.templates_dao import dao_get_template_by_id from app.dao.templates_dao import dao_get_template_by_id
from app.enums import NotificationType, JobStatus, KeyType from app.enums import JobStatus, KeyType, NotificationType
from app.notifications.process_notifications import persist_notification from app.notifications.process_notifications import persist_notification
from app.notifications.validators import check_service_over_total_message_limit from app.notifications.validators import check_service_over_total_message_limit
from app.serialised_models import SerialisedService, SerialisedTemplate from app.serialised_models import SerialisedService, SerialisedTemplate
+1 -1
View File
@@ -49,7 +49,7 @@ from app.dao.users_dao import (
delete_user_verify_codes, delete_user_verify_codes,
get_user_by_email, get_user_by_email,
) )
from app.enums import NotificationType, NotificationStatus, KeyType from app.enums import KeyType, NotificationStatus, NotificationType
from app.models import ( from app.models import (
AnnualBilling, AnnualBilling,
Domain, Domain,
+1 -1
View File
@@ -8,7 +8,7 @@ from sqlalchemy.sql.expression import case, literal
from app import db from app import db
from app.dao.date_util import get_calendar_year_dates, get_calendar_year_for_datetime from app.dao.date_util import get_calendar_year_dates, get_calendar_year_for_datetime
from app.dao.organization_dao import dao_get_organization_live_services from app.dao.organization_dao import dao_get_organization_live_services
from app.enums import NotificationStatus, NotificationType, KeyType from app.enums import KeyType, NotificationStatus, NotificationType
from app.models import ( from app.models import (
AnnualBilling, AnnualBilling,
FactBilling, FactBilling,
+5 -2
View File
@@ -7,7 +7,7 @@ from sqlalchemy.types import DateTime, Integer
from app import db from app import db
from app.dao.dao_utils import autocommit from app.dao.dao_utils import autocommit
from app.enums import NotificationType, NotificationStatus, KeyType from app.enums import KeyType, NotificationStatus, NotificationType
from app.models import ( from app.models import (
FactNotificationStatus, FactNotificationStatus,
Notification, Notification,
@@ -529,7 +529,10 @@ def fetch_monthly_notification_statuses_per_service(start_date, end_date):
[ [
( (
FactNotificationStatus.notification_status.in_( FactNotificationStatus.notification_status.in_(
[NotificationStatus.TECHNICAL_FAILURE, NotificationStatus.FAILED] [
NotificationStatus.TECHNICAL_FAILURE,
NotificationStatus.FAILED,
]
), ),
FactNotificationStatus.notification_count, FactNotificationStatus.notification_count,
) )
+9 -8
View File
@@ -16,12 +16,8 @@ from werkzeug.datastructures import MultiDict
from app import create_uuid, db from app import create_uuid, db
from app.dao.dao_utils import autocommit from app.dao.dao_utils import autocommit
from app.enums import NotificationType, NotificationStatus, KeyType from app.enums import KeyType, NotificationStatus, NotificationType
from app.models import ( from app.models import FactNotificationStatus, Notification, NotificationHistory
FactNotificationStatus,
Notification,
NotificationHistory,
)
from app.utils import ( from app.utils import (
escape_special_characters, escape_special_characters,
get_midnight_in_utc, get_midnight_in_utc,
@@ -162,7 +158,10 @@ def update_notification_status_by_reference(reference, status):
) )
return None return None
if notification.status not in {NotificationStatus.SENDING, NotificationStatus.PENDING}: if notification.status not in {
NotificationStatus.SENDING,
NotificationStatus.PENDING,
}:
_duplicate_update_warning(notification, status) _duplicate_update_warning(notification, status)
return None return None
@@ -200,7 +199,9 @@ def dao_get_notification_count_for_service(*, service_id):
def dao_get_failed_notification_count(): def dao_get_failed_notification_count():
failed_count = Notification.query.filter_by(status=NotificationStatus.FAILED).count() failed_count = Notification.query.filter_by(
status=NotificationStatus.FAILED
).count()
return failed_count return failed_count
+5 -5
View File
@@ -3,9 +3,7 @@ from datetime import datetime
from app import create_uuid, db from app import create_uuid, db
from app.dao.dao_utils import autocommit, version_class from app.dao.dao_utils import autocommit, version_class
from app.enums import CallbackType from app.enums import CallbackType
from app.models import ( from app.models import ServiceCallbackApi
ServiceCallbackApi,
)
@autocommit @autocommit
@@ -39,13 +37,15 @@ def get_service_callback_api(service_callback_api_id, service_id):
def get_service_delivery_status_callback_api_for_service(service_id): def get_service_delivery_status_callback_api_for_service(service_id):
return ServiceCallbackApi.query.filter_by( return ServiceCallbackApi.query.filter_by(
service_id=service_id, callback_type=CallbackType.DELIVERY_STATUS, service_id=service_id,
callback_type=CallbackType.DELIVERY_STATUS,
).first() ).first()
def get_service_complaint_callback_api_for_service(service_id): def get_service_complaint_callback_api_for_service(service_id):
return ServiceCallbackApi.query.filter_by( return ServiceCallbackApi.query.filter_by(
service_id=service_id, callback_type=CallbackType.COMPLAINT, service_id=service_id,
callback_type=CallbackType.COMPLAINT,
).first() ).first()
+6 -1
View File
@@ -13,7 +13,12 @@ from app.dao.organization_dao import dao_get_organization_by_email_address
from app.dao.service_sms_sender_dao import insert_service_sms_sender from app.dao.service_sms_sender_dao import insert_service_sms_sender
from app.dao.service_user_dao import dao_get_service_user from app.dao.service_user_dao import dao_get_service_user
from app.dao.template_folder_dao import dao_get_valid_template_folders_by_id from app.dao.template_folder_dao import dao_get_valid_template_folders_by_id
from app.enums import NotificationStatus, NotificationType, ServicePermissionType, KeyType from app.enums import (
KeyType,
NotificationStatus,
NotificationType,
ServicePermissionType,
)
from app.models import ( from app.models import (
AnnualBilling, AnnualBilling,
ApiKey, ApiKey,
+2 -7
View File
@@ -5,13 +5,8 @@ from flask import current_app
from sqlalchemy import String, and_, desc, func, literal, text from sqlalchemy import String, and_, desc, func, literal, text
from app import db from app import db
from app.enums import NotificationStatus, NotificationType, JobStatus from app.enums import JobStatus, NotificationStatus, NotificationType
from app.models import ( from app.models import Job, Notification, ServiceDataRetention, Template
Job,
Notification,
ServiceDataRetention,
Template,
)
from app.utils import midnight_n_days_ago from app.utils import midnight_n_days_ago
+1 -1
View File
@@ -15,7 +15,7 @@ from app.celery.test_key_tasks import send_email_response, send_sms_response
from app.dao.email_branding_dao import dao_get_email_branding_by_id from app.dao.email_branding_dao import dao_get_email_branding_by_id
from app.dao.notifications_dao import dao_update_notification from app.dao.notifications_dao import dao_update_notification
from app.dao.provider_details_dao import get_provider_details_by_notification_type from app.dao.provider_details_dao import get_provider_details_by_notification_type
from app.enums import NotificationStatus, NotificationType, KeyType, BrandType from app.enums import BrandType, KeyType, NotificationStatus, NotificationType
from app.exceptions import NotificationTechnicalFailureException from app.exceptions import NotificationTechnicalFailureException
from app.serialised_models import SerialisedService, SerialisedTemplate from app.serialised_models import SerialisedService, SerialisedTemplate
+6 -4
View File
@@ -1,6 +1,4 @@
from enum import Enum from enum import Enum
from functools import lru_cache
from xml.sax.handler import property_interning_dict
class TemplateType(Enum): class TemplateType(Enum):
@@ -118,9 +116,13 @@ class NotificationStatus(Enum):
) )
@property @property
@lru_cache
def non_billable(self) -> tuple["NotificationStatus", ...]: def non_billable(self) -> tuple["NotificationStatus", ...]:
return tuple(set(type(self)) - set(self.billable)) self._non_billable: tuple["NotificationStatus", ...]
try:
return self._non_billable
except AttributeError:
self._non_billable = tuple(set(type(self)) - set(self.billable))
return self._non_billable
class PermissionType(Enum): class PermissionType(Enum):
+1 -1
View File
@@ -21,8 +21,8 @@ from app.dao.notifications_dao import (
) )
from app.dao.services_dao import dao_fetch_service_by_id from app.dao.services_dao import dao_fetch_service_by_id
from app.dao.templates_dao import dao_get_template_by_id from app.dao.templates_dao import dao_get_template_by_id
from app.errors import InvalidRequest, register_errors
from app.enums import JobStatus from app.enums import JobStatus
from app.errors import InvalidRequest, register_errors
from app.schemas import ( from app.schemas import (
job_schema, job_schema,
notification_with_template_schema, notification_with_template_schema,
+1 -7
View File
@@ -1001,11 +1001,6 @@ class ApiKey(db.Model, Versioned):
self._secret = encryption.encrypt(str(secret)) self._secret = encryption.encrypt(str(secret))
class TemplateProcessTypes(db.Model):
__tablename__ = "template_process_type"
name = db.Column(db.String(255), primary_key=True)
class TemplateFolder(db.Model): class TemplateFolder(db.Model):
__tablename__ = "template_folder" __tablename__ = "template_folder"
@@ -1129,7 +1124,7 @@ class TemplateBase(db.Model):
db.Enum(TemplateProcessType, name="template_process_type"), db.Enum(TemplateProcessType, name="template_process_type"),
index=True, index=True,
nullable=False, nullable=False,
default=NORMAL, default=TemplateProcessType.NORMAL,
) )
redact_personalisation = association_proxy( redact_personalisation = association_proxy(
@@ -1338,7 +1333,6 @@ class ProviderDetailsHistory(db.Model, HistoryModel):
supports_international = db.Column(db.Boolean, nullable=False, default=False) supports_international = db.Column(db.Boolean, nullable=False, default=False)
class Job(db.Model): class Job(db.Model):
__tablename__ = "jobs" __tablename__ = "jobs"
+1 -1
View File
@@ -16,7 +16,7 @@ from app.dao.notifications_dao import (
dao_create_notification, dao_create_notification,
dao_delete_notifications_by_id, dao_delete_notifications_by_id,
) )
from app.enums import NotificationType, NotificationStatus, KeyType from app.enums import KeyType, NotificationStatus, NotificationType
from app.models import Notification from app.models import Notification
from app.v2.errors import BadRequestError from app.v2.errors import BadRequestError
+6 -2
View File
@@ -4,7 +4,7 @@ from notifications_utils import SMS_CHAR_COUNT_LIMIT
from app import api_user, authenticated_service from app import api_user, authenticated_service
from app.config import QueueNames from app.config import QueueNames
from app.dao import notifications_dao from app.dao import notifications_dao
from app.enums import NotificationType, KeyType, TemplateProcessType from app.enums import KeyType, NotificationType, TemplateProcessType
from app.errors import InvalidRequest, register_errors from app.errors import InvalidRequest, register_errors
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
persist_notification, persist_notification,
@@ -136,7 +136,11 @@ def send_notification(notification_type):
reply_to_text=template.reply_to_text, reply_to_text=template.reply_to_text,
) )
if not simulated: if not simulated:
queue_name = QueueNames.PRIORITY if template.process_type == TemplateProcessType.PRIORITY else None queue_name = (
QueueNames.PRIORITY
if template.process_type == TemplateProcessType.PRIORITY
else None
)
send_notification_to_queue(notification=notification_model, queue=queue_name) send_notification_to_queue(notification=notification_model, queue=queue_name)
else: else:
+1 -1
View File
@@ -15,7 +15,7 @@ from app import redis_store
from app.dao.notifications_dao import dao_get_notification_count_for_service from app.dao.notifications_dao import dao_get_notification_count_for_service
from app.dao.service_email_reply_to_dao import dao_get_reply_to_by_id from app.dao.service_email_reply_to_dao import dao_get_reply_to_by_id
from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id
from app.enums import NotificationType, ServicePermissionType, TemplateType, KeyType from app.enums import KeyType, NotificationType, ServicePermissionType, TemplateType
from app.models import ServicePermission from app.models import ServicePermission
from app.notifications.process_notifications import create_content_for_notification from app.notifications.process_notifications import create_content_for_notification
from app.serialised_models import SerialisedTemplate from app.serialised_models import SerialisedTemplate
+1 -1
View File
@@ -12,7 +12,7 @@ from app.dao.invited_org_user_dao import (
save_invited_org_user, save_invited_org_user,
) )
from app.dao.templates_dao import dao_get_template_by_id from app.dao.templates_dao import dao_get_template_by_id
from app.enums import NotificationType, KeyType from app.enums import KeyType, NotificationType
from app.errors import InvalidRequest, register_errors from app.errors import InvalidRequest, register_errors
from app.models import InvitedOrganizationUser from app.models import InvitedOrganizationUser
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
+6 -2
View File
@@ -6,7 +6,7 @@ from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id
from app.dao.services_dao import dao_fetch_service_by_id from app.dao.services_dao import dao_fetch_service_by_id
from app.dao.templates_dao import dao_get_template_by_id_and_service_id from app.dao.templates_dao import dao_get_template_by_id_and_service_id
from app.dao.users_dao import get_user_by_id from app.dao.users_dao import get_user_by_id
from app.enums import NotificationType, KeyType, TemplateProcessType from app.enums import KeyType, NotificationType, TemplateProcessType
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
persist_notification, persist_notification,
send_notification_to_queue, send_notification_to_queue,
@@ -80,7 +80,11 @@ def send_one_off_notification(service_id, post_data):
client_reference=client_reference, client_reference=client_reference,
) )
queue_name = QueueNames.PRIORITY if template.process_type == TemplateProcessType.PRIORITY else None queue_name = (
QueueNames.PRIORITY
if template.process_type == TemplateProcessType.PRIORITY
else None
)
send_notification_to_queue( send_notification_to_queue(
notification=notification, notification=notification,
+1 -1
View File
@@ -6,7 +6,7 @@ from app.dao.services_dao import (
dao_fetch_service_by_id, dao_fetch_service_by_id,
) )
from app.dao.templates_dao import dao_get_template_by_id from app.dao.templates_dao import dao_get_template_by_id
from app.enums import TemplateType, KeyType from app.enums import KeyType, TemplateType
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
persist_notification, persist_notification,
send_notification_to_queue, send_notification_to_queue,
+1 -1
View File
@@ -2,7 +2,7 @@ from collections import defaultdict
from datetime import datetime from datetime import datetime
from app.dao.date_util import get_months_for_financial_year from app.dao.date_util import get_months_for_financial_year
from app.enums import TemplateType, NotificationStatus from app.enums import NotificationStatus, TemplateType
def format_statistics(statistics): def format_statistics(statistics):
+1 -1
View File
@@ -3,7 +3,7 @@ import itertools
from notifications_utils.recipients import allowed_to_send_to from notifications_utils.recipients import allowed_to_send_to
from app.dao.services_dao import dao_fetch_service_by_id from app.dao.services_dao import dao_fetch_service_by_id
from app.enums import RecipientType, KeyType from app.enums import KeyType, RecipientType
from app.models import ServiceGuestList from app.models import ServiceGuestList
+1 -1
View File
@@ -14,7 +14,7 @@ from app.dao.invited_user_dao import (
save_invited_user, save_invited_user,
) )
from app.dao.templates_dao import dao_get_template_by_id from app.dao.templates_dao import dao_get_template_by_id
from app.enums import InvitedUserStatus, NotificationType, KeyType from app.enums import InvitedUserStatus, KeyType, NotificationType
from app.errors import InvalidRequest, register_errors from app.errors import InvalidRequest, register_errors
from app.models import Service from app.models import Service
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
+1 -1
View File
@@ -1,4 +1,4 @@
from app.enums import TemplateType, TemplateProcessType from app.enums import TemplateProcessType, TemplateType
from app.schema_validation.definitions import nullable_uuid, uuid from app.schema_validation.definitions import nullable_uuid, uuid
post_create_template_schema = { post_create_template_schema = {
+1 -1
View File
@@ -32,7 +32,7 @@ from app.dao.users_dao import (
update_user_password, update_user_password,
use_user_code, use_user_code,
) )
from app.enums import CodeType, NotificationType, TemplateType, KeyType from app.enums import CodeType, KeyType, NotificationType, TemplateType
from app.errors import InvalidRequest, register_errors from app.errors import InvalidRequest, register_errors
from app.models import Permission, Service from app.models import Permission, Service
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
+5 -2
View File
@@ -1,4 +1,4 @@
from app.enums import TemplateType, NotificationStatus from app.enums import NotificationStatus, TemplateType
from app.schema_validation.definitions import personalisation, uuid from app.schema_validation.definitions import personalisation, uuid
template = { template = {
@@ -80,7 +80,10 @@ get_notifications_request = {
"type": "object", "type": "object",
"properties": { "properties": {
"reference": {"type": "string"}, "reference": {"type": "string"},
"status": {"type": "array", "items": {"enum": [e.value for e in NotificationStatus]}}, "status": {
"type": "array",
"items": {"enum": [e.value for e in NotificationStatus]},
},
"template_type": { "template_type": {
"type": "array", "type": "array",
"items": {"enum": [e.value for e in TemplateType]}, "items": {"enum": [e.value for e in TemplateType]},
+6 -2
View File
@@ -10,7 +10,7 @@ from app import api_user, authenticated_service, document_download_client, encry
from app.celery.tasks import save_api_email, save_api_sms from app.celery.tasks import save_api_email, save_api_sms
from app.clients.document_download import DocumentDownloadError from app.clients.document_download import DocumentDownloadError
from app.config import QueueNames from app.config import QueueNames
from app.enums import NotificationType, NotificationStatus, KeyType, TemplateProcessType from app.enums import KeyType, NotificationStatus, NotificationType, TemplateProcessType
from app.models import Notification from app.models import Notification
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
persist_notification, persist_notification,
@@ -177,7 +177,11 @@ def process_sms_or_email_notification(
) )
if not simulated: if not simulated:
queue_name = QueueNames.PRIORITY if template_process_type == TemplateProcessType.PRIORITY else None queue_name = (
QueueNames.PRIORITY
if template_process_type == TemplateProcessType.PRIORITY
else None
)
send_notification_to_queue_detached( send_notification_to_queue_detached(
key_type=api_user.key_type, key_type=api_user.key_type,
notification_type=notification_type, notification_type=notification_type,