mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-02 08:45:16 -05:00
Merge pull request #2580 from alphagov/set-bad-email-addresses-to-perm-fail
Set bad email addresses to permanent-failure
This commit is contained in:
@@ -114,7 +114,6 @@ def register_blueprint(application):
|
||||
from app.events.rest import events as events_blueprint
|
||||
from app.provider_details.rest import provider_details as provider_details_blueprint
|
||||
from app.email_branding.rest import email_branding_blueprint
|
||||
from app.delivery.rest import delivery_blueprint
|
||||
from app.inbound_number.rest import inbound_number_blueprint
|
||||
from app.inbound_sms.rest import inbound_sms as inbound_sms_blueprint
|
||||
from app.notifications.receive_notifications import receive_notifications_blueprint
|
||||
@@ -160,9 +159,6 @@ def register_blueprint(application):
|
||||
invite_blueprint.before_request(requires_admin_auth)
|
||||
application.register_blueprint(invite_blueprint)
|
||||
|
||||
delivery_blueprint.before_request(requires_admin_auth)
|
||||
application.register_blueprint(delivery_blueprint)
|
||||
|
||||
inbound_number_blueprint.before_request(requires_admin_auth)
|
||||
application.register_blueprint(inbound_number_blueprint)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ from app.dao import notifications_dao
|
||||
from app.dao.notifications_dao import update_notification_status_by_id
|
||||
from app.delivery import send_to_providers
|
||||
from app.exceptions import NotificationTechnicalFailureException
|
||||
from app.models import NOTIFICATION_TECHNICAL_FAILURE
|
||||
from app.models import NOTIFICATION_PERMANENT_FAILURE, NOTIFICATION_TECHNICAL_FAILURE
|
||||
|
||||
|
||||
@notify_celery.task(bind=True, name="deliver_sms", max_retries=48, default_retry_delay=300)
|
||||
@@ -47,8 +47,8 @@ def deliver_email(self, notification_id):
|
||||
raise NoResultFound()
|
||||
send_to_providers.send_email_to_provider(notification)
|
||||
except InvalidEmailError as e:
|
||||
current_app.logger.exception(e)
|
||||
update_notification_status_by_id(notification_id, 'technical-failure')
|
||||
current_app.logger.info(e)
|
||||
update_notification_status_by_id(notification_id, NOTIFICATION_PERMANENT_FAILURE)
|
||||
except Exception:
|
||||
try:
|
||||
current_app.logger.exception(
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
from flask import Blueprint, jsonify, current_app
|
||||
|
||||
from app.config import QueueNames
|
||||
from app.delivery import send_to_providers
|
||||
from app.models import EMAIL_TYPE
|
||||
from app.celery import provider_tasks
|
||||
from app.dao import notifications_dao
|
||||
from app.errors import register_errors
|
||||
|
||||
delivery_blueprint = Blueprint('delivery', __name__)
|
||||
|
||||
|
||||
register_errors(delivery_blueprint)
|
||||
|
||||
|
||||
@delivery_blueprint.route('/deliver/notification/<uuid:notification_id>', methods=['POST'])
|
||||
def send_notification_to_provider(notification_id):
|
||||
notification = notifications_dao.get_notification_by_id(notification_id)
|
||||
if not notification:
|
||||
return jsonify({"result": "error", "message": "No result found"}), 404
|
||||
|
||||
if notification.notification_type == EMAIL_TYPE:
|
||||
send_response(
|
||||
send_to_providers.send_email_to_provider,
|
||||
provider_tasks.deliver_email,
|
||||
notification,
|
||||
QueueNames.SEND_EMAIL
|
||||
)
|
||||
else:
|
||||
send_response(
|
||||
send_to_providers.send_sms_to_provider,
|
||||
provider_tasks.deliver_sms,
|
||||
notification,
|
||||
QueueNames.SEND_SMS
|
||||
)
|
||||
return jsonify({}), 204
|
||||
|
||||
|
||||
def send_response(send_call, task_call, notification, queue):
|
||||
try:
|
||||
send_call(notification)
|
||||
except Exception as e:
|
||||
current_app.logger.exception(
|
||||
"Failed to send notification, retrying in celery. ID {} type {}".format(
|
||||
notification.id,
|
||||
notification.notification_type),
|
||||
e)
|
||||
task_call.apply_async((str(notification.id)), queue=queue)
|
||||
@@ -352,7 +352,7 @@ class Organisation(db.Model):
|
||||
|
||||
services = db.relationship(
|
||||
'Service',
|
||||
secondary='organisation_to_service',
|
||||
secondary='services',
|
||||
uselist=True)
|
||||
|
||||
agreement_signed = db.Column(db.Boolean, nullable=True)
|
||||
@@ -479,11 +479,8 @@ class Service(db.Model, Versioned):
|
||||
go_live_user = db.relationship('User', foreign_keys=[go_live_user_id])
|
||||
go_live_at = db.Column(db.DateTime, nullable=True)
|
||||
|
||||
organisation = db.relationship(
|
||||
'Organisation',
|
||||
secondary=organisation_to_service,
|
||||
uselist=False,
|
||||
single_parent=True)
|
||||
organisation_id = db.Column(UUID(as_uuid=True), db.ForeignKey('organisation.id'), index=True, nullable=True)
|
||||
organisation = db.relationship('Organisation', foreign_keys=[organisation_id])
|
||||
|
||||
email_branding = db.relationship(
|
||||
'EmailBranding',
|
||||
|
||||
Reference in New Issue
Block a user