Commit 9983c7a9 by Clinton Blackburn Committed by GitHub

Updated data loaders to pull course run start dates from the marketing site (#299)

ECOM-5468
parent 53ad61a7
......@@ -121,16 +121,17 @@ class CoursesApiDataLoader(AbstractDataLoader):
key = body['id']
defaults = {
'key': key,
'start': self.parse_date(body['start']),
'end': self.parse_date(body['end']),
'enrollment_start': self.parse_date(body['enrollment_start']),
'enrollment_end': self.parse_date(body['enrollment_end']),
'pacing_type': self.get_pacing_type(body),
}
# When using a marketing site, only date and pacing information should come from the Course API
# When using a marketing site, only date (excluding start date) and pacing information
# should come from the Course API.
if not self.partner.has_marketing_site:
defaults.update({
'start': self.parse_date(body['start']),
'card_image_url': body['media'].get('image', {}).get('raw'),
'title_override': body['name'],
'short_description_override': body['short_description'],
......
import abc
import datetime
import logging
from urllib.parse import urlencode
from uuid import UUID
import pytz
import requests
from django.db.models import Q
from django.utils.functional import cached_property
......@@ -392,6 +394,8 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
slug = data['url'].split('/')[-1]
language_tags = self._extract_language_tags(data['field_course_languages'])
language = language_tags[0] if language_tags else None
start = data.get('field_course_start_date')
start = datetime.datetime.fromtimestamp(int(start), tz=pytz.UTC) if start else None
defaults = {
'key': key,
......@@ -401,6 +405,7 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
'slug': slug,
'card_image_url': self._get_nested_url(data.get('field_course_image_promoted')),
'status': self.get_course_run_status(data),
'start': start,
}
try:
......
......@@ -141,7 +141,6 @@ class CoursesApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCas
expected_values = {
'title': self.loader.clean_string(body['name']),
'short_description': self.loader.clean_string(body['short_description']),
'start': self.loader.parse_date(body['start']),
'end': self.loader.parse_date(body['end']),
'enrollment_start': self.loader.parse_date(body['enrollment_start']),
'enrollment_end': self.loader.parse_date(body['enrollment_end']),
......@@ -154,6 +153,7 @@ class CoursesApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCas
if not partner_has_marketing_site:
expected_values.update({
'start': self.loader.parse_date(body['start']),
'card_image_url': body['media'].get('image', {}).get('raw'),
'title_override': body['name'],
'short_description_override': self.loader.clean_string(body['short_description']),
......
import datetime
import json
from urllib.parse import parse_qs, urlparse
from uuid import UUID
import ddt
import mock
import pytz
import responses
from django.test import TestCase
from opaque_keys.edx.keys import CourseKey
......@@ -421,6 +423,8 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
course_run = course.course_runs.get(uuid=data['uuid'])
language_names = [language['name'] for language in data['field_course_languages']]
language = self.loader.get_language_tags_from_names(language_names).first()
start = data.get('field_course_start_date')
start = datetime.datetime.fromtimestamp(int(start), tz=pytz.UTC) if start else None
expected_values = {
'key': data['field_course_id'],
......@@ -428,6 +432,7 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
'slug': data['url'].split('/')[-1],
'card_image_url': (data.get('field_course_image_promoted') or {}).get('url'),
'status': self.loader.get_course_run_status(data),
'start': start
}
for field, value in expected_values.items():
......
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