Skip to content
Snippets Groups Projects
Commit ebc2948f authored by Adeel Khan's avatar Adeel Khan
Browse files

Fix key error.

Job is failing because of unhandled
case where the mode, status key is
not found in course_cert_info.

PROD-1363
parent 185fc3c8
Branches
Tags release-2020-07-02-00.53
No related merge requests found
......@@ -212,6 +212,7 @@ class Command(BaseCommand):
def send_notifications(self, certs, grades, site_config=None, delay=0, page_size=0, verbose=False):
""" Run actual handler commands for the provided certs and grades. """
course_cert_info = {}
# First, do certs
for i, cert in paged_query(certs, delay, page_size):
if site_config and not site_config.has_org(cert.course_id.org):
......@@ -231,8 +232,14 @@ class Command(BaseCommand):
'status': cert.status,
'verbose': verbose,
}
data = {
'mode': cert.mode,
'status': cert.status
}
course_cert_info[(cert.user.id, str(cert.course_id))] = data
handle_course_cert_changed(**signal_args)
handle_cert_change(**signal_args)
# Then do grades
for i, grade in paged_query(grades, delay, page_size):
......@@ -246,11 +253,18 @@ class Command(BaseCommand):
)
user = User.objects.get(id=grade.user_id)
# Grab mode/status from cert call
key = (user.id, str(grade.course_id))
cert_info = course_cert_info.get(key, {})
mode = cert_info.get('mode', None)
status = cert_info.get('status', None)
send_grade_if_interesting(
user,
grade.course_id,
None,
None,
mode,
status,
grade.letter_grade,
grade.percent_grade,
verbose=verbose
......
......@@ -120,12 +120,10 @@ class TestNotifyCredentials(TestCase):
call_command(Command(), '--dry-run', '--start-date', '2017-02-01')
self.assertFalse(mock_send.called)
@mock.patch(COMMAND_MODULE + '.handle_cert_change')
@mock.patch(COMMAND_MODULE + '.send_grade_if_interesting')
@mock.patch(COMMAND_MODULE + '.handle_course_cert_changed')
def test_hand_off(self, mock_grade_cert_change, mock_grade_interesting, mock_program_changed):
def test_hand_off(self, mock_grade_interesting, mock_program_changed):
call_command(Command(), '--start-date', '2017-02-01')
self.assertEqual(mock_grade_cert_change.call_count, 2)
self.assertEqual(mock_grade_interesting.call_count, 2)
self.assertEqual(mock_program_changed.call_count, 2)
......@@ -154,15 +152,13 @@ class TestNotifyCredentials(TestCase):
self.assertEqual(len(connection.queries), baseline + 2) # one extra page query each for certs & grades
@mock.patch(COMMAND_MODULE + '.send_grade_if_interesting')
@mock.patch(COMMAND_MODULE + '.handle_cert_change')
def test_site(self, mock_grade_interesting, mock_cert_change):
def test_site(self, mock_grade_interesting):
site_config = SiteConfigurationFactory.create(
site_values={'course_org_filter': ['testX']}
)
call_command(Command(), '--site', site_config.site.domain, '--start-date', '2017-01-01')
self.assertEqual(mock_grade_interesting.call_count, 1)
self.assertEqual(mock_cert_change.call_count, 1)
@mock.patch(COMMAND_MODULE + '.Command.send_notifications')
def test_args_from_database(self, mock_send):
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment