Commit 537d8175 by umar-nawaz Committed by Umar Nawaz

In Refresh Course metadata handle wrong course id errors

parent 73e2a23c
......@@ -10,6 +10,7 @@ import pytz
import requests
from django.db.models import Q
from django.utils.functional import cached_property
from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey
from course_discovery.apps.course_metadata.choices import CourseRunStatus, CourseRunPacing
......@@ -389,8 +390,13 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
except AttributeError:
pass
else:
course, created = self.get_or_create_course(data)
course_run = self.create_course_run(course, data)
created = False
try:
course, created = self.get_or_create_course(data)
course_run = self.create_course_run(course, data)
except InvalidKeyError:
logger.error('Invalid course key [%s].', data['field_course_id'])
if created:
course.canonical_course_run = course_run
course.save()
......
......@@ -6,11 +6,12 @@ from uuid import UUID
from dateutil import rrule
import ddt
from django.test import TestCase
import mock
from opaque_keys.edx.keys import CourseKey
import pytz
import responses
from django.test import TestCase
from opaque_keys.edx.keys import CourseKey
from testfixtures import LogCapture
from course_discovery.apps.course_metadata.choices import CourseRunStatus, CourseRunPacing
from course_discovery.apps.course_metadata.data_loaders.marketing_site import (
......@@ -427,6 +428,23 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
data = {'field_course_self_paced': data_value}
self.assertEqual(self.loader.get_pacing_type(data), expected_pacing_type)
@ddt.data(
{'field_course_id': ''},
{'field_course_id': 'EPtestx'},
{'field_course_id': 'Paradigms-comput'},
{'field_course_id': 'Bio Course ID'}
)
def test_process_node(self, data):
with LogCapture() as l:
self.loader.process_node(data)
l.check(
(
'course_discovery.apps.course_metadata.data_loaders.marketing_site',
'ERROR',
'Invalid course key [{}].'.format(data['field_course_id'])
)
)
def assert_course_loaded(self, data):
course = self._get_course(data)
......
Markdown is supported
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