Skip to content

Commit 7cb3196

Browse files
feat: prevent sending notification digest email to disabled users (#36498)
1 parent 6c63857 commit 7cb3196

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

openedx/core/djangoapps/notifications/email/tasks.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ def send_digest_email_to_user(user, cadence_type, start_date, end_date, course_l
8080
if cadence_type not in [EmailCadence.DAILY, EmailCadence.WEEKLY]:
8181
raise ValueError('Invalid cadence_type')
8282
logger.info(f'<Email Cadence> Sending email to user {user.username} ==Temp Log==')
83+
if not user.has_usable_password():
84+
logger.info(f'<Email Cadence> User is disabled {user.username} ==Temp Log==')
85+
return
8386
if not is_email_notification_flag_enabled(user):
8487
logger.info(f'<Email Cadence> Flag disabled for {user.username} ==Temp Log==')
8588
return

openedx/core/djangoapps/notifications/email/tests/test_tasks.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,23 @@ def test_notification_not_send_if_created_on_next_day(self, mock_func):
7272
send_digest_email_to_user(self.user, EmailCadence.DAILY, start_date, end_date)
7373
assert not mock_func.called
7474

75+
@ddt.data(True, False)
76+
@patch('edx_ace.ace.send')
77+
def test_email_not_send_to_disable_user(self, value, mock_func):
78+
"""
79+
Tests email is not sent to disabled user
80+
"""
81+
created_date = datetime.datetime.now() - datetime.timedelta(days=1)
82+
create_notification(self.user, self.course.id, created=created_date)
83+
start_date, end_date = get_start_end_date(EmailCadence.DAILY)
84+
if value:
85+
self.user.set_password("12345678")
86+
else:
87+
self.user.set_unusable_password()
88+
with override_waffle_flag(ENABLE_EMAIL_NOTIFICATIONS, True):
89+
send_digest_email_to_user(self.user, EmailCadence.DAILY, start_date, end_date)
90+
assert mock_func.called is value
91+
7592
@patch('edx_ace.ace.send')
7693
def test_notification_not_send_if_created_day_before_yesterday(self, mock_func):
7794
"""

0 commit comments

Comments
 (0)