- Moving xmodule folder to root as we're dissolving sub-projects of common folder in edx-platform
- More info: https://openedx.atlassian.net/browse/BOM-2579
- -e common/lib/xmodule has been removed from the requirements as xmodule has itself become the part of edx-platform and not being installed through requirements
- The test files common/lib/xmodule/test_files/ have been removed as they are not being used anymore
32 lines
1022 B
Python
32 lines
1022 B
Python
# lint-amnesty, pylint: disable=missing-module-docstring
|
|
|
|
from importlib import import_module
|
|
|
|
from django.conf import settings
|
|
|
|
_CONTENTSTORE = {}
|
|
|
|
|
|
def load_function(path):
|
|
"""
|
|
Load a function by name.
|
|
|
|
path is a string of the form "path.to.module.function"
|
|
returns the imported python object `function` from `path.to.module`
|
|
"""
|
|
module_path, _, name = path.rpartition('.')
|
|
return getattr(import_module(module_path), name)
|
|
|
|
|
|
def contentstore(name='default'): # lint-amnesty, pylint: disable=missing-function-docstring
|
|
if name not in _CONTENTSTORE:
|
|
class_ = load_function(settings.CONTENTSTORE['ENGINE'])
|
|
options = {}
|
|
options.update(settings.CONTENTSTORE['DOC_STORE_CONFIG'])
|
|
if 'ADDITIONAL_OPTIONS' in settings.CONTENTSTORE:
|
|
if name in settings.CONTENTSTORE['ADDITIONAL_OPTIONS']:
|
|
options.update(settings.CONTENTSTORE['ADDITIONAL_OPTIONS'][name])
|
|
_CONTENTSTORE[name] = class_(**options)
|
|
|
|
return _CONTENTSTORE[name]
|