Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
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
edx-platform
Commits
2d085c42
Commit
2d085c42
authored
Jul 24, 2013
by
Don Mitchell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add xlint check for any policy fields whose default changed.
Warn user that the course behavior may change.
parent
b76e7387
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
2 deletions
+24
-2
common/lib/xmodule/xmodule/modulestore/xml_importer.py
+24
-2
No files found.
common/lib/xmodule/xmodule/modulestore/xml_importer.py
View file @
2d085c42
...
@@ -138,7 +138,7 @@ def import_module_from_xml(modulestore, static_content_store, course_data_path,
...
@@ -138,7 +138,7 @@ def import_module_from_xml(modulestore, static_content_store, course_data_path,
# For example, what I'm seeing is <img src='foo.jpg' /> -> <img src='bar.jpg'>
# For example, what I'm seeing is <img src='foo.jpg' /> -> <img src='bar.jpg'>
# Note the dropped element closing tag. This causes the LMS to fail when rendering modules - that's
# Note the dropped element closing tag. This causes the LMS to fail when rendering modules - that's
# no good, so we have to do this kludge
# no good, so we have to do this kludge
if
isinstance
(
module
.
data
,
str
)
or
isinstance
(
module
.
data
,
unicode
):
# some module 'data' fields are non strings which blows up the link traversal code
if
isinstance
(
module
.
data
,
str
)
or
isinstance
(
module
.
data
,
unicode
):
# some module 'data' fields are non strings which blows up the link traversal code
lxml_rewrite_links
(
module
.
data
,
lambda
link
:
verify_content_links
(
module
,
course_data_path
,
static_content_store
,
link
,
remap_dict
))
lxml_rewrite_links
(
module
.
data
,
lambda
link
:
verify_content_links
(
module
,
course_data_path
,
static_content_store
,
link
,
remap_dict
))
for
key
in
remap_dict
.
keys
():
for
key
in
remap_dict
.
keys
():
...
@@ -315,7 +315,7 @@ def import_module(module, store, course_data_path, static_content_store, allow_n
...
@@ -315,7 +315,7 @@ def import_module(module, store, course_data_path, static_content_store, allow_n
# For example, what I'm seeing is <img src='foo.jpg' /> -> <img src='bar.jpg'>
# For example, what I'm seeing is <img src='foo.jpg' /> -> <img src='bar.jpg'>
# Note the dropped element closing tag. This causes the LMS to fail when rendering modules - that's
# Note the dropped element closing tag. This causes the LMS to fail when rendering modules - that's
# no good, so we have to do this kludge
# no good, so we have to do this kludge
if
isinstance
(
module_data
,
str
)
or
isinstance
(
module_data
,
unicode
):
# some module 'data' fields are non strings which blows up the link traversal code
if
isinstance
(
module_data
,
str
)
or
isinstance
(
module_data
,
unicode
):
# some module 'data' fields are non strings which blows up the link traversal code
lxml_rewrite_links
(
module_data
,
lambda
link
:
verify_content_links
(
module
,
course_data_path
,
static_content_store
,
link
,
remap_dict
))
lxml_rewrite_links
(
module_data
,
lambda
link
:
verify_content_links
(
module
,
course_data_path
,
static_content_store
,
link
,
remap_dict
))
for
key
in
remap_dict
.
keys
():
for
key
in
remap_dict
.
keys
():
...
@@ -523,6 +523,26 @@ def validate_data_source_paths(data_dir, course_dir):
...
@@ -523,6 +523,26 @@ def validate_data_source_paths(data_dir, course_dir):
return
err_cnt
,
warn_cnt
return
err_cnt
,
warn_cnt
def
validate_course_policy
(
module_store
,
course_id
):
"""
Validate that the course explicitly sets values for any fields whose defaults may have changed between
the export and the import.
Does not add to error count as these are just warnings.
"""
# is there a reliable way to get the module location just given the course_id?
warn_cnt
=
0
for
module
in
module_store
.
modules
[
course_id
]
.
itervalues
():
if
module
.
location
.
category
==
'course'
:
if
not
'rerandomize'
in
module
.
_model_data
:
warn_cnt
+=
1
print
'WARN: course policy does not specify value for "rerandomize" whose default is now "never". The behavior of your course may change.'
if
not
'showanswer'
in
module
.
_model_data
:
warn_cnt
+=
1
print
'WARN: course policy does not specify value for "showanswer" whose default is now "finished". The behavior of your course may change.'
return
warn_cnt
def
perform_xlint
(
data_dir
,
course_dirs
,
def
perform_xlint
(
data_dir
,
course_dirs
,
default_class
=
'xmodule.raw_module.RawDescriptor'
,
default_class
=
'xmodule.raw_module.RawDescriptor'
,
load_error_modules
=
True
):
load_error_modules
=
True
):
...
@@ -568,6 +588,8 @@ def perform_xlint(data_dir, course_dirs,
...
@@ -568,6 +588,8 @@ def perform_xlint(data_dir, course_dirs,
err_cnt
+=
validate_category_hierarchy
(
module_store
,
course_id
,
"chapter"
,
"sequential"
)
err_cnt
+=
validate_category_hierarchy
(
module_store
,
course_id
,
"chapter"
,
"sequential"
)
# constrain that sequentials only have 'verticals'
# constrain that sequentials only have 'verticals'
err_cnt
+=
validate_category_hierarchy
(
module_store
,
course_id
,
"sequential"
,
"vertical"
)
err_cnt
+=
validate_category_hierarchy
(
module_store
,
course_id
,
"sequential"
,
"vertical"
)
# validate the course policy overrides any defaults which have changed over time
warn_cnt
+=
validate_course_policy
(
module_store
,
course_id
)
# don't allow metadata on verticals, since we can't edit them in studio
# don't allow metadata on verticals, since we can't edit them in studio
err_cnt
+=
validate_no_non_editable_metadata
(
module_store
,
course_id
,
"vertical"
)
err_cnt
+=
validate_no_non_editable_metadata
(
module_store
,
course_id
,
"vertical"
)
# don't allow metadata on chapters, since we can't edit them in studio
# don't allow metadata on chapters, since we can't edit them in studio
...
...
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