PR feedback (added docstring notes, cleared up log messages)

This commit is contained in:
Gavin Sidebottom
2018-01-25 16:09:13 -05:00
parent ec0263bc5b
commit 382b6069d8
2 changed files with 51 additions and 31 deletions

View File

@@ -27,10 +27,10 @@ class Command(BaseCommand):
parser.add_argument('--nopythonlib',
action='store_true',
help=(
'Skip import of custom code library if it exists'
'(NOTE: If static content is imported, the code library will also '
'be imported and this flag will be ignored)'
)),
'Skip import of course python library if it exists '
'(NOTE: If the static content import is not skipped, the python library '
'will be imported and this flag will be ignored)'
))
parser.add_argument('--python-lib-filename',
default=DEFAULT_PYTHON_LIB_FILENAME,
help='Filename of the course code library (if it exists)')
@@ -41,13 +41,23 @@ class Command(BaseCommand):
if len(source_dirs) == 0:
source_dirs = None
do_import_static = not options.get('nostatic', False)
do_import_python_lib = not options.get('nopythonlib', False)
# If the static content is not skipped, the python lib should be imported regardless
# of the 'nopythonlib' flag.
do_import_python_lib = do_import_static or not options.get('nopythonlib', False)
python_lib_filename = options.get('python_lib_filename')
self.stdout.write("Importing. Data_dir={data}, source_dirs={courses}\n".format(
output = (
"Importing...\n"
" data_dir={data}, source_dirs={courses}\n"
" Importing static content? {import_static}\n"
" Importing python lib? {import_python_lib}"
).format(
data=data_dir,
courses=source_dirs,
))
import_static=do_import_static,
import_python_lib=do_import_python_lib
)
self.stdout.write(output)
mstore = modulestore()
course_items = import_course_from_xml(

View File

@@ -182,9 +182,19 @@ class ImportManager(object):
time the course is loaded. Static content for some courses may also be
served directly by nginx, instead of going through django.
do_import_python_lib: if True, import a courselike's python lib file into static_content_store
if it exists. This can be useful if the static content import needs to be skipped
(e.g.: for performance reasons), but the python lib still needs to be imported. If static
content is imported, then the python lib file will be imported regardless of this value.
create_if_not_present: If True, then a new courselike is created if it doesn't already exist.
Otherwise, it throws an InvalidLocationError if the courselike does not exist.
static_content_subdir: The subdirectory that contains static content.
python_lib_filename: The filename of the courselike's python library. Course authors can optionally
create this file to implement custom logic in their course.
default_class, load_error_modules: are arguments for constructing the XMLModuleStore (see its doc)
"""
store_class = XMLModuleStore
@@ -237,38 +247,36 @@ class ImportManager(object):
"""
Import all static items into the content store.
"""
if self.static_content_store is None:
log.warning("Static content store is None. Skipping static content import...")
return
static_content_importer = StaticContentImporter(
self.static_content_store,
course_data_path=data_path,
target_id=dest_id
)
if self.verbose and not self.do_import_static:
log.debug(
"Skipping import of static content, "
"since do_import_static=%s", self.do_import_static
if self.do_import_static:
if self.verbose:
log.debug("Importing static content and python library")
# first pass to find everything in the static content directory
static_content_importer.import_static_content_directory(
content_subdir=self.static_content_subdir, verbose=self.verbose
)
if self.do_import_python_lib:
log.debug(
"Importing code library anyway "
"since do_import_python_lib=%s", self.do_import_python_lib
elif self.do_import_python_lib and self.python_lib_filename:
if self.verbose:
log.debug("Skipping static content import, still importing python library")
python_lib_dir_path = data_path / self.static_content_subdir
python_lib_full_path = python_lib_dir_path / self.python_lib_filename
if os.path.isfile(python_lib_full_path):
static_content_importer.import_static_file(
python_lib_full_path, base_dir=python_lib_dir_path
)
else:
if self.verbose:
log.debug("Skipping import of static content and python library")
if self.static_content_store is not None:
if self.do_import_static:
# first pass to find everything in the static content directory
static_content_importer.import_static_content_directory(
content_subdir=self.static_content_subdir, verbose=self.verbose
)
elif self.do_import_python_lib and self.python_lib_filename:
python_lib_dir_path = data_path / self.static_content_subdir
python_lib_full_path = python_lib_dir_path / self.python_lib_filename
if os.path.isfile(python_lib_full_path):
static_content_importer.import_static_file(
python_lib_full_path, base_dir=python_lib_dir_path
)
# no matter what do_import_static is, import "static_import" directory
# No matter what do_import_static is, import "static_import" directory.
# This is needed because the "about" pages (eg "overview") are
# loaded via load_extra_content, and do not inherit the lms
# metadata from the course module, and thus do not get
@@ -279,6 +287,8 @@ class ImportManager(object):
simport = 'static_import'
if os.path.exists(data_path / simport):
if self.verbose:
log.debug("Importing %s directory", simport)
static_content_importer.import_static_content_directory(
content_subdir=simport, verbose=self.verbose
)