fix broken go live email notification

This commit is contained in:
Kenneth Kehl
2024-11-27 08:36:52 -08:00
parent 62466843df
commit 12776354e3
2 changed files with 23 additions and 4 deletions

View File

@@ -19,7 +19,7 @@ from app.dao.notifications_dao import (
from app.delivery import send_to_providers from app.delivery import send_to_providers
from app.enums import NotificationStatus from app.enums import NotificationStatus
from app.exceptions import NotificationTechnicalFailureException from app.exceptions import NotificationTechnicalFailureException
from app.utils import utc_now from app.utils import hilite, utc_now
# This is the amount of time to wait after sending an sms message before we check the aws logs and look for delivery # This is the amount of time to wait after sending an sms message before we check the aws logs and look for delivery
# receipts # receipts
@@ -170,7 +170,7 @@ def deliver_sms(self, notification_id):
@notify_celery.task( @notify_celery.task(
bind=True, name="deliver_email", max_retries=48, default_retry_delay=300 bind=True, name="deliver_email", max_retries=48, default_retry_delay=30
) )
def deliver_email(self, notification_id): def deliver_email(self, notification_id):
try: try:
@@ -182,9 +182,15 @@ def deliver_email(self, notification_id):
if not notification: if not notification:
raise NoResultFound() raise NoResultFound()
personalisation = redis_store.get(f"email-personalisation-{notification_id}") personalisation = redis_store.get(f"email-personalisation-{notification_id}")
recipient = redis_store.get(f"email-recipient-{notification_id}")
if personalisation:
notification.personalisation = json.loads(personalisation)
if recipient:
notification.recipient = json.loads(recipient)
notification.personalisation = json.loads(personalisation) print(hilite(f"HERE IS THE NOTIFICATION {notification.serialize_for_csv()}"))
send_to_providers.send_email_to_provider(notification) if recipient:
send_to_providers.send_email_to_provider(notification)
except EmailClientNonRetryableException: except EmailClientNonRetryableException:
current_app.logger.exception(f"Email notification {notification_id} failed") current_app.logger.exception(f"Email notification {notification_id} failed")
update_notification_status_by_id(notification_id, "technical-failure") update_notification_status_by_id(notification_id, "technical-failure")

View File

@@ -1,5 +1,8 @@
import json
from flask import current_app from flask import current_app
from app import redis_store
from app.config import QueueNames from app.config import QueueNames
from app.dao.services_dao import ( from app.dao.services_dao import (
dao_fetch_active_users_for_service, dao_fetch_active_users_for_service,
@@ -40,7 +43,17 @@ def send_notification_to_service_users(
key_type=KeyType.NORMAL, key_type=KeyType.NORMAL,
reply_to_text=notify_service.get_default_reply_to_email_address(), reply_to_text=notify_service.get_default_reply_to_email_address(),
) )
redis_store.set(
f"email-personalisation-{notification.id}",
json.dumps(personalisation),
ex=24 * 60 * 60,
)
redis_store.set(
f"email-recipient-{notification.id}", notification.to, ex=24 * 60 * 60
)
send_notification_to_queue(notification, queue=QueueNames.NOTIFY) send_notification_to_queue(notification, queue=QueueNames.NOTIFY)
return notification
def _add_user_fields(user, personalisation, fields): def _add_user_fields(user, personalisation, fields):