Skip to content

Commit 417de03

Browse files
authored
fix: ensure users are passed to tagging email util (#4583)
1 parent e0f63ad commit 417de03

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

course_discovery/apps/tagging/emails.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,12 @@ def send_email_for_course_vertical_assignment(course, to_users):
4040
"""
4141
Sends an email to specified users requesting action to assign vertical and sub-vertical
4242
for a given course, but only to those who have email notifications enabled.
43+
44+
Arguments:
45+
course(Object): course model instance
46+
to_users(List): list of user objects
4347
"""
44-
email_enabled_users = [user for user in to_users if is_email_notification_enabled(user)]
48+
email_enabled_users = [user.email for user in to_users if is_email_notification_enabled(user)]
4549
if not email_enabled_users:
4650
logger.exception(
4751
f"Failed to send vertical assignment email for course '{course.title}' (UUID: {course.uuid})"
@@ -70,5 +74,5 @@ def send_email_for_course_vertical_assignment(course, to_users):
7074
except Exception as e: # pylint: disable=broad-except
7175
logger.exception(
7276
f"Failed to send vertical assignment email for course '{course.title}' (UUID: {course.uuid}) to "
73-
f"recipients {', '.join(list(map(lambda user: user.email, email_enabled_users)))}. Error: {str(e)}"
77+
f"recipients {', '.join(email_enabled_users)}. Error: {str(e)}"
7478
)

course_discovery/apps/tagging/signals.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from django.conf import settings
2-
from django.contrib.auth.models import Group
2+
from django.contrib.auth import get_user_model
33
from django.db.models.signals import post_save
44
from django.dispatch import receiver
55

@@ -16,10 +16,11 @@ def notify_vertical_assignment(instance, created, **kwargs):
1616
if instance.draft or not created:
1717
return
1818

19+
User = get_user_model()
1920
management_groups = getattr(settings, "VERTICALS_MANAGEMENT_GROUPS", [])
2021

21-
groups = Group.objects.filter(name__in=management_groups).exclude(user__isnull=True)
22-
recipients = set(groups.values_list('user__email', flat=True))
23-
22+
recipients = list(
23+
User.objects.prefetch_related('groups').filter(groups__name__in=management_groups).distinct()
24+
)
2425
if recipients:
2526
send_email_for_course_vertical_assignment(instance, recipients)

course_discovery/apps/tagging/tests/test_emails.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def test_email_sent_to_recipients(self):
3131
self.assertEqual(len(mail.outbox), 1)
3232

3333
email = mail.outbox[0]
34-
self.assertEqual(email.to, [self.user1, self.user2])
34+
self.assertEqual(email.to, [self.user1.email, self.user2.email])
3535
expected_subject = f"Action Required: Assign Vertical and Sub-vertical for Course '{self.course.title}'"
3636
self.assertEqual(email.subject, expected_subject)
3737

course_discovery/apps/tagging/tests/test_signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ def test_notify_vertical_assignment_email_sent(self, mock_send_email):
3434
course_run.status = CourseRunStatus.Reviewed
3535
course_run.save()
3636

37-
expected_recipients = {"user1@example.com", "user2@example.com"}
37+
expected_recipients = [user1, user2]
3838
mock_send_email.assert_called_once()
3939
called_args = mock_send_email.call_args[0]
4040
self.assertEqual(called_args[0].uuid, course.uuid)
41-
self.assertEqual(called_args[1], expected_recipients)
41+
self.assertListEqual(called_args[1], expected_recipients)
4242

4343
@mock.patch("course_discovery.apps.tagging.signals.send_email_for_course_vertical_assignment")
4444
def test_notify_vertical_assignment_email_when_course_is_draft(self, mock_send_email):

0 commit comments

Comments
 (0)