Purge noti to email reply to older than 7 days

This commit is contained in:
Ken Tsang
2017-10-09 14:51:27 +01:00
parent 26d84a873e
commit 2c46f201b5
4 changed files with 92 additions and 21 deletions

View File

@@ -27,6 +27,7 @@ from app.dao.notifications_dao import (
dao_timeout_notifications,
is_delivery_slow_for_provider,
delete_notifications_created_more_than_a_week_ago_by_type,
delete_notification_to_email_reply_to_more_than_a_week_ago,
dao_get_scheduled_notifications,
set_scheduled_notification_to_processed,
dao_set_created_live_letter_api_notifications_to_pending,
@@ -118,6 +119,17 @@ def delete_sms_notifications_older_than_seven_days():
@statsd(namespace="tasks")
def delete_email_notifications_older_than_seven_days():
try:
start = datetime.utcnow()
deleted_noti_to_reply_to = delete_notification_to_email_reply_to_more_than_a_week_ago()
current_app.logger.info(
"Delete {} job started {} finished {} deleted {} notification to email reply to mappings".format(
'email',
start,
datetime.utcnow(),
deleted_noti_to_reply_to
)
)
start = datetime.utcnow()
deleted = delete_notifications_created_more_than_a_week_ago_by_type('email')
current_app.logger.info(

View File

@@ -26,14 +26,15 @@ from app.dao.date_util import get_financial_year
from app.models import (
Service,
Notification,
NotificationEmailReplyTo,
NotificationHistory,
NotificationStatistics,
NotificationEmailReplyTo,
ServiceEmailReplyTo,
ScheduledNotification,
ServiceEmailReplyTo,
Template,
KEY_TYPE_NORMAL,
KEY_TYPE_TEST,
EMAIL_TYPE,
LETTER_TYPE,
NOTIFICATION_CREATED,
NOTIFICATION_DELIVERED,
@@ -376,6 +377,22 @@ def delete_notifications_created_more_than_a_week_ago_by_type(notification_type)
return deleted
@statsd(namespace="dao")
def delete_notification_to_email_reply_to_more_than_a_week_ago():
seven_days_ago = date.today() - timedelta(days=7)
subq = db.session.query(Notification.id).filter(
func.date(Notification.created_at) < seven_days_ago
).subquery()
deleted = db.session.query(
NotificationEmailReplyTo
).filter(
NotificationEmailReplyTo.notification_id.in_(subq)
).delete(synchronize_session='fetch')
db.session.commit()
return deleted
@statsd(namespace="dao")
@transactional
def dao_delete_notifications_and_history_by_id(notification_id):