This allows course authors to choose between two difference licenses for their course content: All Rights Reserved, or Creative Commons. In the backend, XBlocks that wish to allow custom licenses need only inherit from LicenseMixin, which adds a `license` field as a string. License information is displayed in the Studio editor view, and just below the rendered XBlock in the LMS. In addition, if the course block itself has a custom license set, this license will display just below the main body of the page on courseware pages. This entire feature is gated behind the LICENSING feature flag.
107 lines
3.7 KiB
Python
107 lines
3.7 KiB
Python
"""
|
|
Settings for bok choy tests
|
|
"""
|
|
|
|
import os
|
|
from path import path
|
|
|
|
# Pylint gets confused by path.py instances, which report themselves as class
|
|
# objects. As a result, pylint applies the wrong regex in validating names,
|
|
# and throws spurious errors. Therefore, we disable invalid-name checking.
|
|
# pylint: disable=invalid-name
|
|
|
|
|
|
########################## Prod-like settings ###################################
|
|
# These should be as close as possible to the settings we use in production.
|
|
# As in prod, we read in environment and auth variables from JSON files.
|
|
# Unlike in prod, we use the JSON files stored in this repo.
|
|
# This is a convenience for ensuring (a) that we can consistently find the files
|
|
# and (b) that the files are the same in Jenkins as in local dev.
|
|
os.environ['SERVICE_VARIANT'] = 'bok_choy'
|
|
os.environ['CONFIG_ROOT'] = path(__file__).abspath().dirname() # pylint: disable=no-value-for-parameter
|
|
|
|
from .aws import * # pylint: disable=wildcard-import, unused-wildcard-import
|
|
|
|
######################### Testing overrides ####################################
|
|
|
|
# Needed for the reset database management command
|
|
INSTALLED_APPS += ('django_extensions',)
|
|
|
|
# Redirect to the test_root folder within the repo
|
|
TEST_ROOT = CONFIG_ROOT.dirname().dirname() / "test_root" # pylint: disable=no-value-for-parameter
|
|
GITHUB_REPO_ROOT = (TEST_ROOT / "data").abspath()
|
|
LOG_DIR = (TEST_ROOT / "log").abspath()
|
|
|
|
# Configure modulestore to use the test folder within the repo
|
|
update_module_store_settings(
|
|
MODULESTORE,
|
|
module_store_options={
|
|
'fs_root': (TEST_ROOT / "data").abspath(), # pylint: disable=no-value-for-parameter
|
|
},
|
|
xml_store_options={
|
|
'data_dir': (TEST_ROOT / "data").abspath(),
|
|
},
|
|
default_store=os.environ.get('DEFAULT_STORE', 'draft'),
|
|
)
|
|
|
|
# Enable django-pipeline and staticfiles
|
|
STATIC_ROOT = (TEST_ROOT / "staticfiles").abspath()
|
|
|
|
# Silence noisy logs
|
|
import logging
|
|
LOG_OVERRIDES = [
|
|
('track.middleware', logging.CRITICAL),
|
|
('edx.discussion', logging.CRITICAL),
|
|
]
|
|
for log_name, log_level in LOG_OVERRIDES:
|
|
logging.getLogger(log_name).setLevel(log_level)
|
|
|
|
# Use the auto_auth workflow for creating users and logging them in
|
|
FEATURES['AUTOMATIC_AUTH_FOR_TESTING'] = True
|
|
|
|
# Enable milestones app
|
|
FEATURES['MILESTONES_APP'] = True
|
|
|
|
# Enable pre-requisite course
|
|
FEATURES['ENABLE_PREREQUISITE_COURSES'] = True
|
|
|
|
# Enable student notes
|
|
FEATURES['ENABLE_EDXNOTES'] = True
|
|
|
|
# Enable teams feature
|
|
FEATURES['ENABLE_TEAMS'] = True
|
|
|
|
# Enable custom content licensing
|
|
FEATURES['LICENSING'] = True
|
|
|
|
########################### Entrance Exams #################################
|
|
FEATURES['ENTRANCE_EXAMS'] = True
|
|
|
|
# Unfortunately, we need to use debug mode to serve staticfiles
|
|
DEBUG = True
|
|
|
|
# Point the URL used to test YouTube availability to our stub YouTube server
|
|
YOUTUBE_PORT = 9080
|
|
YOUTUBE['API'] = "127.0.0.1:{0}/get_youtube_api/".format(YOUTUBE_PORT)
|
|
YOUTUBE['TEST_URL'] = "127.0.0.1:{0}/test_youtube/".format(YOUTUBE_PORT)
|
|
YOUTUBE['TEXT_API']['url'] = "127.0.0.1:{0}/test_transcripts_youtube/".format(YOUTUBE_PORT)
|
|
|
|
FEATURES['ENABLE_COURSEWARE_INDEX'] = True
|
|
FEATURES['ENABLE_LIBRARY_INDEX'] = True
|
|
SEARCH_ENGINE = "search.tests.mock_search_engine.MockSearchEngine"
|
|
# Path at which to store the mock index
|
|
MOCK_SEARCH_BACKING_FILE = (
|
|
TEST_ROOT / "index_file.dat" # pylint: disable=no-value-for-parameter
|
|
).abspath()
|
|
|
|
# Generate a random UUID so that different runs of acceptance tests don't break each other
|
|
import uuid
|
|
SECRET_KEY = uuid.uuid4().hex
|
|
|
|
#####################################################################
|
|
# Lastly, see if the developer has any local overrides.
|
|
try:
|
|
from .private import * # pylint: disable=import-error
|
|
except ImportError:
|
|
pass
|