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
9a5a00bb
Commit
9a5a00bb
authored
Sep 13, 2016
by
Bill DeRusha
Committed by
GitHub
Sep 13, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #315 from edx/bderusha/title-override
Drupal data loader fixes
parents
601b43f8
a759ad84
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
3 deletions
+38
-3
course_discovery/apps/course_metadata/data_loaders/marketing_site.py
+11
-2
course_discovery/apps/course_metadata/data_loaders/tests/mock_data.py
+0
-0
course_discovery/apps/course_metadata/data_loaders/tests/test_marketing_site.py
+27
-1
No files found.
course_discovery/apps/course_metadata/data_loaders/marketing_site.py
View file @
9a5a00bb
...
@@ -369,7 +369,7 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
...
@@ -369,7 +369,7 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
defaults
=
{
defaults
=
{
'key'
:
key
,
'key'
:
key
,
'title'
:
data
[
'field_course_course_title'
][
'value'
]
,
'title'
:
self
.
clean_html
(
data
[
'field_course_course_title'
][
'value'
])
,
'number'
:
data
[
'field_course_code'
],
'number'
:
data
[
'field_course_code'
],
'full_description'
:
self
.
get_description
(
data
),
'full_description'
:
self
.
get_description
(
data
),
'video'
:
self
.
get_video
(
data
),
'video'
:
self
.
get_video
(
data
),
...
@@ -377,7 +377,16 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
...
@@ -377,7 +377,16 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
'level_type'
:
self
.
get_level_type
(
data
[
'field_course_level'
]),
'level_type'
:
self
.
get_level_type
(
data
[
'field_course_level'
]),
'card_image_url'
:
self
.
_get_nested_url
(
data
.
get
(
'field_course_image_promoted'
)),
'card_image_url'
:
self
.
_get_nested_url
(
data
.
get
(
'field_course_image_promoted'
)),
}
}
course
,
__
=
Course
.
objects
.
update_or_create
(
key__iexact
=
key
,
partner
=
self
.
partner
,
defaults
=
defaults
)
course
,
created
=
Course
.
objects
.
get_or_create
(
key__iexact
=
key
,
partner
=
self
.
partner
,
defaults
=
defaults
)
# If the course already exists update the fields only if the course_run we got from drupal is published.
# People often put temp data into required drupal fields for unpublished courses. We don't want to overwrite
# the course info with this data, so we only update course info from published sources.
published
=
self
.
get_course_run_status
(
data
)
==
CourseRun
.
Status
.
Published
if
not
created
and
published
:
for
attr
,
value
in
defaults
.
items
():
setattr
(
course
,
attr
,
value
)
course
.
save
()
self
.
set_subjects
(
course
,
data
)
self
.
set_subjects
(
course
,
data
)
self
.
set_authoring_organizations
(
course
,
data
)
self
.
set_authoring_organizations
(
course
,
data
)
...
...
course_discovery/apps/course_metadata/data_loaders/tests/mock_data.py
View file @
9a5a00bb
This diff is collapsed.
Click to expand it.
course_discovery/apps/course_metadata/data_loaders/tests/test_marketing_site.py
View file @
9a5a00bb
...
@@ -325,6 +325,8 @@ class PersonMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
...
@@ -325,6 +325,8 @@ class PersonMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
class
CourseMarketingSiteDataLoaderTests
(
AbstractMarketingSiteDataLoaderTestMixin
,
TestCase
):
class
CourseMarketingSiteDataLoaderTests
(
AbstractMarketingSiteDataLoaderTestMixin
,
TestCase
):
loader_class
=
CourseMarketingSiteDataLoader
loader_class
=
CourseMarketingSiteDataLoader
mocked_data
=
mock_data
.
MARKETING_SITE_API_COURSE_BODIES
mocked_data
=
mock_data
.
MARKETING_SITE_API_COURSE_BODIES
mocked_data
.
append
(
mock_data
.
MARKETING_SITE_API_UNPUBLISHED_COPY_COURSE_BODY
)
mocked_data
.
append
(
mock_data
.
MARKETING_SITE_API_PUBLISHED_COPY_COURSE_BODY
)
def
_get_uuids
(
self
,
items
):
def
_get_uuids
(
self
,
items
):
return
[
item
[
'uuid'
]
for
item
in
items
]
return
[
item
[
'uuid'
]
for
item
in
items
]
...
@@ -425,6 +427,19 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
...
@@ -425,6 +427,19 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
self
.
validate_relationships
(
data
,
data_map
)
self
.
validate_relationships
(
data
,
data_map
)
def
assert_no_override_unpublished_course_fields
(
self
,
data
):
course
=
self
.
_get_course
(
data
)
expected_values
=
{
'title'
:
data
[
'field_course_course_title'
][
'value'
],
'full_description'
:
self
.
loader
.
get_description
(
data
),
'short_description'
:
self
.
loader
.
clean_html
(
data
[
'field_course_sub_title_short'
]),
'card_image_url'
:
(
data
.
get
(
'field_course_image_promoted'
)
or
{})
.
get
(
'url'
),
}
for
field
,
value
in
expected_values
.
items
():
self
.
assertNotEqual
(
getattr
(
course
,
field
),
value
)
def
validate_relationships
(
self
,
data
,
data_map
):
def
validate_relationships
(
self
,
data
,
data_map
):
for
relationship
,
field
in
data_map
.
items
():
for
relationship
,
field
in
data_map
.
items
():
expected
=
sorted
(
self
.
_get_uuids
(
data
.
get
(
field
,
[])))
expected
=
sorted
(
self
.
_get_uuids
(
data
.
get
(
field
,
[])))
...
@@ -469,9 +484,20 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
...
@@ -469,9 +484,20 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
def
test_ingest
(
self
):
def
test_ingest
(
self
):
self
.
mock_login_response
()
self
.
mock_login_response
()
data
=
self
.
mock_api
()
data
=
self
.
mock_api
()
published_course_run_key
=
mock_data
.
MARKETING_SITE_API_PUBLISHED_COPY_COURSE_BODY
[
'field_course_id'
]
self
.
loader
.
ingest
()
self
.
loader
.
ingest
()
for
datum
in
data
:
for
datum
in
data
:
self
.
assert_course_run_loaded
(
datum
)
self
.
assert_course_run_loaded
(
datum
)
self
.
assert_course_loaded
(
datum
)
if
datum
[
'field_course_code'
]
==
mock_data
.
MULTI_COURSE_RUN_COURSE_NUMBER
:
# For the original course and the unpublished course ensure course fields are not present.
if
datum
[
'field_course_id'
]
!=
published_course_run_key
:
self
.
assert_no_override_unpublished_course_fields
(
datum
)
# For the latest published course ensure course fields match the latest saved course.
else
:
self
.
assert_course_loaded
(
datum
)
else
:
self
.
assert_course_loaded
(
datum
)
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