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 ...@@ -10,6 +10,7 @@ import pytz
import requests import requests
from django.db.models import Q from django.db.models import Q
from django.utils.functional import cached_property from django.utils.functional import cached_property
from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from course_discovery.apps.course_metadata.choices import CourseRunStatus, CourseRunPacing from course_discovery.apps.course_metadata.choices import CourseRunStatus, CourseRunPacing
...@@ -389,8 +390,13 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader): ...@@ -389,8 +390,13 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
except AttributeError: except AttributeError:
pass pass
else: else:
course, created = self.get_or_create_course(data) created = False
course_run = self.create_course_run(course, data) 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: if created:
course.canonical_course_run = course_run course.canonical_course_run = course_run
course.save() course.save()
......
...@@ -6,11 +6,12 @@ from uuid import UUID ...@@ -6,11 +6,12 @@ from uuid import UUID
from dateutil import rrule from dateutil import rrule
import ddt import ddt
from django.test import TestCase
import mock import mock
from opaque_keys.edx.keys import CourseKey
import pytz import pytz
import responses import responses
from django.test import TestCase from testfixtures import LogCapture
from opaque_keys.edx.keys import CourseKey
from course_discovery.apps.course_metadata.choices import CourseRunStatus, CourseRunPacing from course_discovery.apps.course_metadata.choices import CourseRunStatus, CourseRunPacing
from course_discovery.apps.course_metadata.data_loaders.marketing_site import ( from course_discovery.apps.course_metadata.data_loaders.marketing_site import (
...@@ -427,6 +428,23 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi ...@@ -427,6 +428,23 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
data = {'field_course_self_paced': data_value} data = {'field_course_self_paced': data_value}
self.assertEqual(self.loader.get_pacing_type(data), expected_pacing_type) 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): def assert_course_loaded(self, data):
course = self._get_course(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