diff --git a/course_discovery/apps/course_metadata/data_loaders/api.py b/course_discovery/apps/course_metadata/data_loaders/api.py index 89ad052ecf..a63aca75e4 100644 --- a/course_discovery/apps/course_metadata/data_loaders/api.py +++ b/course_discovery/apps/course_metadata/data_loaders/api.py @@ -48,7 +48,10 @@ class CoursesApiDataLoader(AbstractDataLoader): def __init__(self, partner, api_url=None, max_workers=None, is_threadsafe=False, enable_api=True): super().__init__(partner, api_url, max_workers, is_threadsafe, enable_api) - self.default_product_source = Source.objects.get(slug=settings.DEFAULT_PRODUCT_SOURCE_SLUG) + self.default_product_source, __ = Source.objects.get_or_create( + name=settings.DEFAULT_PRODUCT_SOURCE_NAME, + slug=settings.DEFAULT_PRODUCT_SOURCE_SLUG + ) def ingest(self): logger.info('Refreshing Courses and CourseRuns from %s...', self.partner.courses_api_url) diff --git a/course_discovery/apps/course_metadata/data_loaders/tests/test_api.py b/course_discovery/apps/course_metadata/data_loaders/tests/test_api.py index 7ed32df84d..822848f648 100644 --- a/course_discovery/apps/course_metadata/data_loaders/tests/test_api.py +++ b/course_discovery/apps/course_metadata/data_loaders/tests/test_api.py @@ -70,7 +70,6 @@ class CoursesApiDataLoaderTests(DataLoaderTestMixin, TestCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.default_product_source = SourceFactory(slug=settings.DEFAULT_PRODUCT_SOURCE_SLUG) cls.non_default_product_source = SourceFactory(slug="not-default-product-source") @property @@ -181,7 +180,11 @@ def test_ingest(self, partner_uses_publisher, on_new_publisher, mock_logger): course = Course.everything.get(key=f"{datum['org']}+{datum['number']}", draft=False) mock_logger.info.assert_any_call(f"Course created with uuid {str(course.uuid)} and key {course.key}") self.assert_course_run_loaded(datum, partner_uses_publisher, new_pub=on_new_publisher) - assert course.product_source == self.default_product_source + default_product_source = SourceFactory.create( + slug=settings.DEFAULT_PRODUCT_SOURCE_SLUG, + name=settings.DEFAULT_PRODUCT_SOURCE_NAME, + ) + assert course.product_source.slug == default_product_source.slug # Verify multiple calls to ingest data do NOT result in data integrity errors. self.loader.ingest() diff --git a/course_discovery/settings/base.py b/course_discovery/settings/base.py index 1b18a45821..bbcb878b22 100644 --- a/course_discovery/settings/base.py +++ b/course_discovery/settings/base.py @@ -736,7 +736,8 @@ 'INPUT_TAB_ID': '', } -DEFAULT_PRODUCT_SOURCE_SLUG = '' +DEFAULT_PRODUCT_SOURCE_NAME = 'edX' +DEFAULT_PRODUCT_SOURCE_SLUG = 'edx' EXTERNAL_PRODUCT_SOURCE_SLUG = '' CONTENTFUL_SPACE_ID = None diff --git a/course_discovery/settings/test.py b/course_discovery/settings/test.py index 79f1257c71..f999f3a95d 100644 --- a/course_discovery/settings/test.py +++ b/course_discovery/settings/test.py @@ -124,6 +124,7 @@ 'PRODUCTS_DETAILS_URL' : 'https://test-getsmarter.com/api/v1/products?detail=2', } +DEFAULT_PRODUCT_SOURCE_NAME = 'Test Source' DEFAULT_PRODUCT_SOURCE_SLUG = 'test-source' EXTERNAL_PRODUCT_SOURCE_SLUG = 'external-test-source'