Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
9983c7a9
Commit
9983c7a9
authored
Sep 02, 2016
by
Clinton Blackburn
Committed by
GitHub
Sep 02, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated data loaders to pull course run start dates from the marketing site (#299)
ECOM-5468
parent
53ad61a7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
14 additions
and
3 deletions
+14
-3
course_discovery/apps/course_metadata/data_loaders/api.py
+3
-2
course_discovery/apps/course_metadata/data_loaders/marketing_site.py
+5
-0
course_discovery/apps/course_metadata/data_loaders/tests/test_api.py
+1
-1
course_discovery/apps/course_metadata/data_loaders/tests/test_marketing_site.py
+5
-0
No files found.
course_discovery/apps/course_metadata/data_loaders/api.py
View file @
9983c7a9
...
...
@@ -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'
],
...
...
course_discovery/apps/course_metadata/data_loaders/marketing_site.py
View file @
9983c7a9
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
:
...
...
course_discovery/apps/course_metadata/data_loaders/tests/test_api.py
View file @
9983c7a9
...
...
@@ -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'
]),
...
...
course_discovery/apps/course_metadata/data_loaders/tests/test_marketing_site.py
View file @
9983c7a9
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
():
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment