diff --git a/cms/envs/common.py b/cms/envs/common.py index 52cc91764313..20db8ba7508c 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -73,40 +73,12 @@ # pylint: enable=useless-suppression -################ Enable credit eligibility feature #################### -ENABLE_CREDIT_ELIGIBILITY = True - -################################ Block Structures ################################### -BLOCK_STRUCTURES_SETTINGS = dict( - # Delay, in seconds, after a new edit of a course is published - # before updating the block structures cache. This is needed - # for a better chance at getting the latest changes when there - # are secondary reads in sharded mongoDB clusters. See TNL-5041 - # for more info. - COURSE_PUBLISH_TASK_DELAY=30, - - # Delay, in seconds, between retry attempts if a task fails. - TASK_DEFAULT_RETRY_DELAY=30, - - # Maximum number of retries per task. - TASK_MAX_RETRIES=5, -) - ############################ FEATURE CONFIGURATION ############################# -PLATFORM_NAME = _('Your Platform Name Here') - CONTACT_MAILING_ADDRESS = _('Your Contact Mailing Address Here') -PLATFORM_DESCRIPTION = _('Your Platform Description Here') - -PLATFORM_FACEBOOK_ACCOUNT = "http://www.facebook.com/YourPlatformFacebookAccount" -PLATFORM_TWITTER_ACCOUNT = "@YourPlatformTwitterAccount" - # Dummy secret key for dev/test SECRET_KEY = 'dev key' -FAVICON_PATH = 'images/favicon.ico' - # .. setting_name: STUDIO_NAME # .. setting_default: Your Platform Studio @@ -119,32 +91,12 @@ GITHUB_PUSH = False -# See annotations in lms/envs/common.py for details. -ENABLE_DISCUSSION_SERVICE = True -# See annotations in lms/envs/common.py for details. -ENABLE_TEXTBOOK = True - -# When True, all courses will be active, regardless of start date -# DO NOT SET TO True IN THIS FILE -# Doing so will cause all courses to be released on production -DISABLE_START_DATES = False - # email address for studio staff (eg to request course creation) STUDIO_REQUEST_EMAIL = '' # Segment - must explicitly turn it on for production CMS_SEGMENT_KEY = None -# Enable URL that shows information about the status of various services -ENABLE_SERVICE_STATUS = False - -# Don't autoplay videos for course authors -AUTOPLAY_VIDEOS = False - -# Move the course author to next page when a video finishes. Set to True to -# show an auto-advance button in videos. If False, videos never auto-advance. -ENABLE_AUTOADVANCE_VIDEOS = False - # If set to True, new Studio users won't be able to author courses unless # an Open edX admin has added them to the course creator group. ENABLE_CREATOR_GROUP = True @@ -170,10 +122,6 @@ # Hide any Personally Identifiable Information from application logs SQUELCH_PII_IN_LOGS = False -# Toggles the embargo functionality, which blocks users -# based on their location. -EMBARGO = False - # Allow creating courses with non-ascii characters in the course id ALLOW_UNICODE_COURSE_ID = False @@ -183,23 +131,10 @@ # Turn off Video Upload Pipeline through Studio, by default ENABLE_VIDEO_UPLOAD_PIPELINE = False -# See annotations in lms/envs/common.py for details. -ENABLE_EDXNOTES = False - -# Toggle to enable coordination with the Publisher tool (keep in sync with lms/envs/common.py) -ENABLE_PUBLISHER = False - # Show a new field in "Advanced settings" that can store custom data about a # course and that can be read from themes ENABLE_OTHER_COURSE_SETTINGS = False -# Write new CSM history to the extended table. -# This will eventually default to True and may be -# removed since all installs should have the separate -# extended history table. This is needed in the LMS and CMS -# for migration consistency. -ENABLE_CSMH_EXTENDED = True - # Enable support for content libraries. Note that content libraries are # only supported in courses using split mongo. ENABLE_CONTENT_LIBRARIES = True @@ -214,18 +149,9 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/27411 ENABLE_CONTENT_LIBRARIES_LTI_TOOL = False -# Milestones application flag -MILESTONES_APP = False - -# Prerequisite courses feature flag -ENABLE_PREREQUISITE_COURSES = False - # Toggle course entrance exams feature ENTRANCE_EXAMS = False -# Toggle platform-wide course licensing -LICENSING = False - # Enable the courseware search functionality ENABLE_COURSEWARE_INDEX = False @@ -243,113 +169,18 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6965 ALLOW_COURSE_RERUNS = True -# Certificates Web/HTML Views -CERTIFICATES_HTML_VIEW = False - -# Teams feature -ENABLE_TEAMS = True - -# Show video bumper in Studio -ENABLE_VIDEO_BUMPER = False - -# How many seconds to show the bumper again, default is 7 days: -SHOW_BUMPER_PERIODICITY = 7 * 24 * 3600 - -# Special Exams, aka Timed and Proctored Exams -ENABLE_SPECIAL_EXAMS = False - -# Show the language selector in the header -SHOW_HEADER_LANGUAGE_SELECTOR = False - -# At edX it's safe to assume that English transcripts are always available -# This is not the case for all installations. -# The default value in {lms,cms}/envs/common.py and xmodule/tests/test_video.py should be consistent. -FALLBACK_TO_ENGLISH_TRANSCRIPTS = True - -# Set this to False to facilitate cleaning up invalid xml from your modulestore. -ENABLE_XBLOCK_XML_VALIDATION = True - -# Allow public account creation -ALLOW_PUBLIC_ACCOUNT_CREATION = True - -# Allow showing the registration links -SHOW_REGISTRATION_LINKS = True - -# Whether or not the dynamic EnrollmentTrackUserPartition should be registered. -ENABLE_ENROLLMENT_TRACK_USER_PARTITION = True - -ENABLE_PASSWORD_RESET_FAILURE_EMAIL = False - # Whether archived courses (courses with end dates in the past) should be # shown in Studio in a separate list. ENABLE_SEPARATE_ARCHIVED_COURSES = True -# For acceptance and load testing -AUTOMATIC_AUTH_FOR_TESTING = False - -# Prevent auto auth from creating superusers or modifying existing users -RESTRICT_AUTOMATIC_AUTH = True - ENABLE_GRADE_DOWNLOADS = True -ENABLE_MKTG_SITE = False + ENABLE_DISCUSSION_HOME_PANEL = True -ENABLE_CORS_HEADERS = False -ENABLE_CROSS_DOMAIN_CSRF_COOKIE = False + ENABLE_COUNTRY_ACCESS = False ENABLE_CREDIT_API = False -ENABLE_OAUTH2_PROVIDER = False -ENABLE_MOBILE_REST_API = False -CUSTOM_COURSES_EDX = False -ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES = True -SHOW_FOOTER_LANGUAGE_SELECTOR = False -ENABLE_ENROLLMENT_RESET = False -# Settings for course import olx validation -ENABLE_COURSE_OLX_VALIDATION = False -# .. toggle_name: settings.DISABLE_MOBILE_COURSE_AVAILABLE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to remove Mobile Course Available UI Flag from Studio's Advanced Settings -# page else Mobile Course Available UI Flag will be available on Studio side. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2020-02-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/23073 -DISABLE_MOBILE_COURSE_AVAILABLE = False - -# .. toggle_name: settings.ENABLE_CHANGE_USER_PASSWORD_ADMIN -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to enable changing a user password through django admin. This is disabled by -# default because enabling allows a method to bypass password policy. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2020-02-21 -# .. toggle_tickets: 'https://github.com/openedx/edx-platform/pull/21616' -ENABLE_CHANGE_USER_PASSWORD_ADMIN = False ### ORA Feature Flags ### -# .. toggle_name: settings.ENABLE_ORA_ALL_FILE_URLS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: A "work-around" feature toggle meant to help in cases where some file uploads are not -# discoverable. If enabled, will iterate through all possible file key suffixes up to the max for displaying file -# metadata in staff assessments. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2020-03-03 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://openedx.atlassian.net/browse/EDUCATOR-4951 -# .. toggle_warning: This temporary feature toggle does not have a target removal date. -ENABLE_ORA_ALL_FILE_URLS = False - -# .. toggle_name: settings.ENABLE_ORA_USER_STATE_UPLOAD_DATA -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: A "work-around" feature toggle meant to help in cases where some file uploads are not -# discoverable. If enabled, will pull file metadata from StudentModule.state for display in staff assessments. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2020-03-03 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://openedx.atlassian.net/browse/EDUCATOR-4951 -# .. toggle_warning: This temporary feature toggle does not have a target removal date. -ENABLE_ORA_USER_STATE_UPLOAD_DATA = False # .. toggle_name: settings.DEPRECATE_OLD_COURSE_KEYS_IN_STUDIO # .. toggle_implementation: DjangoSetting @@ -379,28 +210,6 @@ # .. toggle_warning: Another toggle DISABLE_LIBRARY_CREATION overrides DISABLE_COURSE_CREATION, if present. DISABLE_COURSE_CREATION = False -# Can be turned off to disable the help link in the navbar -# .. toggle_name: settings.ENABLE_HELP_LINK -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: When True, a help link is displayed on the main navbar. Set False to hide it. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2021-03-05 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/26106 -ENABLE_HELP_LINK = True - -# .. toggle_name: settings.ENABLE_INTEGRITY_SIGNATURE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Whether to replace ID verification course/certificate requirement -# with an in-course Honor Code agreement -# (https://github.com/edx/edx-name-affirmation) -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2022-02-15 -# .. toggle_target_removal_date: None -# .. toggle_tickets: 'https://openedx.atlassian.net/browse/MST-1348' -ENABLE_INTEGRITY_SIGNATURE = False - # .. toggle_name: settings.ENABLE_LTI_PII_ACKNOWLEDGEMENT # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -411,31 +220,6 @@ # .. toggle_tickets: 'https://2u-internal.atlassian.net/browse/MST-2055' ENABLE_LTI_PII_ACKNOWLEDGEMENT = False -# .. toggle_name: MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: If enabled, the Library Content Block is marked as complete when users view it. -# Otherwise (by default), all children of this block must be completed. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2022-03-22 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/28268 -# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name -# in the LMS and CMS. -MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW = False - -# .. toggle_name: settings.DISABLE_UNENROLLMENT -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to disable self-unenrollments via REST API. -# This also hides the "Unenroll" button on the Learner Dashboard. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2021-10-11 -# .. toggle_warning: For consistency in user experience, keep the value in sync with the setting of the same name -# in the LMS and CMS. -# .. toggle_tickets: 'https://github.com/open-craft/edx-platform/pull/429' -DISABLE_UNENROLLMENT = False - # .. toggle_name: settings.DISABLE_ADVANCED_SETTINGS # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -469,23 +253,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/33952 ENABLE_HIDE_FROM_TOC_UI = False -# .. toggle_name: settings.ENABLE_GRADING_METHOD_IN_PROBLEMS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Enables the grading method feature in capa problems. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2024-03-22 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/33911 -ENABLE_GRADING_METHOD_IN_PROBLEMS = False - -# .. toggle_name: settings.BADGES_ENABLED -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to enable the Badges feature. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2024-04-10 -BADGES_ENABLED = False - # .. toggle_name: settings.IN_CONTEXT_DISCUSSION_ENABLED_DEFAULT # .. toggle_implementation: DjangoSetting # .. toggle_default: True @@ -510,22 +277,6 @@ ############################# MICROFRONTENDS ################################### COURSE_AUTHORING_MICROFRONTEND_URL = None -DISCUSSIONS_MICROFRONTEND_URL = None -DISCUSSIONS_MFE_FEEDBACK_URL = None -ACCOUNT_MICROFRONTEND_URL = None -LEARNING_MICROFRONTEND_URL = None - - -# .. toggle_name: ENABLE_DYNAMIC_REGISTRATION_FIELDS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When enabled, this toggle adds fields configured in -# REGISTRATION_EXTRA_FIELDS to Authn MFE -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2022-04-21 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://openedx.atlassian.net/browse/VAN-838 -ENABLE_DYNAMIC_REGISTRATION_FIELDS = False ############################# SOCIAL MEDIA SHARING ############################# SOCIAL_SHARING_SETTINGS = { @@ -555,19 +306,9 @@ DATA_DIR = COURSES_ROOT -DJFS = { - 'type': 'osfs', - 'directory_root': '/edx/var/edxapp/django-pyfs/static/django-pyfs', - 'url_root': '/static/django-pyfs', -} - ######################## BRANCH.IO ########################### BRANCH_IO_KEY = '' -######################## OPTIMIZELY ########################### -OPTIMIZELY_PROJECT_ID = None -OPTIMIZELY_FULLSTACK_SDK_KEY = None - ######################## GOOGLE ANALYTICS ########################### GOOGLE_ANALYTICS_ACCOUNT = None @@ -649,14 +390,10 @@ DEFAULT_TEMPLATE_ENGINE = TEMPLATES[0] #################################### AWS ####################################### -AWS_ACCESS_KEY_ID = None -AWS_SECRET_ACCESS_KEY = None AWS_SECURITY_TOKEN = None ############################################################################## -EDX_ROOT_URL = '' - # use the ratelimit backend to prevent brute force attacks AUTHENTICATION_BACKENDS = [ 'auth_backends.backends.EdXOAuth2', @@ -666,12 +403,6 @@ 'bridgekeeper.backends.RulePermissionBackend', ] -# License for serving content in China -ICP_LICENSE = None -ICP_LICENSE_INFO = {} - -LOGGING_ENV = 'sandbox' - LMS_BASE = None # Use LMS SSO for login, once enabled by setting LOGIN_URL (see docs/guides/studio_oauth.rst) @@ -686,52 +417,17 @@ ENTERPRISE_API_URL = Derived(lambda settings: settings.LMS_INTERNAL_ROOT_URL + '/enterprise/api/v1/') ENTERPRISE_CONSENT_API_URL = Derived(lambda settings: settings.LMS_INTERNAL_ROOT_URL + '/consent/api/v1/') -ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS = {} # Public domain name of Studio (should be resolvable from the end-user's browser) CMS_BASE = None CMS_ROOT_URL = None -LOG_DIR = '/edx/var/log/edx' - -LOCAL_LOGLEVEL = "INFO" - MAINTENANCE_BANNER_TEXT = 'Sample banner message' WIKI_ENABLED = True CERT_QUEUE = 'certificates' -ELASTIC_SEARCH_CONFIG = [ - { - 'use_ssl': False, - 'host': 'localhost', - 'port': 9200 - } -] - -######################### CSRF ######################################### - -# Forwards-compatibility with Django 1.7 -CSRF_COOKIE_AGE = 60 * 60 * 24 * 7 * 52 -# It is highly recommended that you override this in any environment accessed by -# end users -CSRF_COOKIE_SECURE = False - -CROSS_DOMAIN_CSRF_COOKIE_DOMAIN = '' -CROSS_DOMAIN_CSRF_COOKIE_NAME = '' - -#################### CAPA External Code Evaluation ############################# -XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds -XQUEUE_INTERFACE = { - 'url': 'http://localhost:18040', - 'basic_auth': ['edx', 'edx'], - 'django_auth': { - 'username': 'lms', - 'password': 'password' - } -} - ################################# Middleware ################################### MIDDLEWARE = [ @@ -820,12 +516,6 @@ EXTRA_MIDDLEWARE_CLASSES = [] -# Clickjacking protection can be disabled by setting this to 'ALLOW' -X_FRAME_OPTIONS = 'DENY' - -# Platform for Privacy Preferences header -P3P_HEADER = 'CP="Open EdX does not have a P3P policy."' - ############# XBlock Configuration ########## # Import after sys.path fixup @@ -850,30 +540,11 @@ AuthoringMixin, ) -# .. setting_name: XBLOCK_EXTRA_MIXINS -# .. setting_default: () -# .. setting_description: Custom mixins that will be dynamically added to every XBlock and XBlockAside instance. -# These can be classes or dotted-path references to classes. -# For example: `XBLOCK_EXTRA_MIXINS = ('my_custom_package.my_module.MyCustomMixin',)` -XBLOCK_EXTRA_MIXINS = () - -# Paths to wrapper methods which should be applied to every XBlock's FieldData. -XBLOCK_FIELD_DATA_WRAPPERS = () - -# .. setting_name: XBLOCK_RUNTIME_V2_EPHEMERAL_DATA_CACHE -# .. setting_default: default -# .. setting_description: The django cache key of the cache to use for storing anonymous user state for XBlocks. -XBLOCK_RUNTIME_V2_EPHEMERAL_DATA_CACHE = 'default' - ############################ ORA 2 ############################################ # By default, don't use a file prefix ORA2_FILE_PREFIX = 'default_env-default_deployment/ora2' -# Default File Upload Storage bucket and prefix. Used by the FileUpload Service. -FILE_UPLOAD_STORAGE_BUCKET_NAME = 'SET-ME-PLEASE (ex. bucket-name)' -FILE_UPLOAD_STORAGE_PREFIX = 'submissions_attachments' - ############################ Modulestore Configuration ################################ DOC_STORE_CONFIG = { @@ -951,43 +622,6 @@ # require student context. MODULESTORE_FIELD_OVERRIDE_PROVIDERS = () -DATABASES = { - # edxapp's edxapp-migrate scripts and the edxapp_migrate play - # will ensure that any DB not named read_replica will be migrated - # for both the lms and cms. - 'default': { - 'ATOMIC_REQUESTS': True, - 'CONN_MAX_AGE': 0, - 'ENGINE': 'django.db.backends.mysql', - 'HOST': '127.0.0.1', - 'NAME': 'edxapp', - 'OPTIONS': {}, - 'PASSWORD': 'password', - 'PORT': '3306', - 'USER': 'edxapp001' - }, - 'read_replica': { - 'CONN_MAX_AGE': 0, - 'ENGINE': 'django.db.backends.mysql', - 'HOST': '127.0.0.1', - 'NAME': 'edxapp', - 'OPTIONS': {}, - 'PASSWORD': 'password', - 'PORT': '3306', - 'USER': 'edxapp001' - }, - 'student_module_history': { - 'CONN_MAX_AGE': 0, - 'ENGINE': 'django.db.backends.mysql', - 'HOST': '127.0.0.1', - 'NAME': 'edxapp_csmh', - 'OPTIONS': {}, - 'PASSWORD': 'password', - 'PORT': '3306', - 'USER': 'edxapp001' - } -} - DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' DEFAULT_HASHING_ALGORITHM = 'sha256' @@ -1019,49 +653,8 @@ "limit_overrides": {}, } -# Some courses are allowed to run unsafe code. This is a list of regexes, one -# of them must match the course id for that course to run unsafe code. -# -# For example: -# -# COURSES_WITH_UNSAFE_CODE = [ -# r"Harvard/XY123.1/.*" -# ] - -COURSES_WITH_UNSAFE_CODE = [] - -# Cojail REST service -ENABLE_CODEJAIL_REST_SERVICE = False -# .. setting_name: CODE_JAIL_REST_SERVICE_REMOTE_EXEC -# .. setting_default: 'xmodule.capa.safe_exec.remote_exec.send_safe_exec_request_v0' -# .. setting_description: Set the python package.module.function that is reponsible of -# calling the remote service in charge of jailed code execution -CODE_JAIL_REST_SERVICE_REMOTE_EXEC = 'xmodule.capa.safe_exec.remote_exec.send_safe_exec_request_v0' -# .. setting_name: CODE_JAIL_REST_SERVICE_HOST -# .. setting_default: 'http://127.0.0.1:8550' -# .. setting_description: Set the codejail remote service host -CODE_JAIL_REST_SERVICE_HOST = 'http://127.0.0.1:8550' -# .. setting_name: CODE_JAIL_REST_SERVICE_CONNECT_TIMEOUT -# .. setting_default: 0.5 -# .. setting_description: Set the number of seconds CMS will wait to establish an internal -# connection to the codejail remote service. -CODE_JAIL_REST_SERVICE_CONNECT_TIMEOUT = 0.5 # time in seconds -# .. setting_name: CODE_JAIL_REST_SERVICE_READ_TIMEOUT -# .. setting_default: 3.5 -# .. setting_description: Set the number of seconds CMS will wait for a response from the -# codejail remote service endpoint. -CODE_JAIL_REST_SERVICE_READ_TIMEOUT = 3.5 # time in seconds - ############################ DJANGO_BUILTINS ################################ -# Change DEBUG in your environment settings files, not here -SESSION_COOKIE_SECURE = False -SESSION_SAVE_EVERY_REQUEST = False -SESSION_SERIALIZER = 'openedx.core.lib.session_serializers.PickleSerializer' -SESSION_COOKIE_NAME = 'sessionid' - -# Site info -SITE_NAME = "localhost" -HTTPS = 'on' + ROOT_URLCONF = 'cms.urls' COURSE_IMPORT_EXPORT_BUCKET = '' @@ -1069,8 +662,6 @@ ALTERNATE_WORKER_QUEUES = 'lms' -X_FRAME_OPTIONS = 'DENY' - # .. setting_name: GIT_REPO_EXPORT_DIR # .. setting_default: '/edx/var/edxapp/export_course_repos' # .. setting_description: When courses are exported to git, either with the export_git management command or the git @@ -1096,11 +687,6 @@ SERVER_EMAIL = 'devops@example.com' UNIVERSITY_EMAIL = 'university@example.com' PRESS_EMAIL = 'press@example.com' -ADMINS = [] -MANAGERS = ADMINS - -# Initialize to 'release', but read from JSON in production.py -EDX_PLATFORM_REVISION = 'release' # Static content STATIC_URL = '/static/studio/' @@ -1115,32 +701,10 @@ XMODULE_ROOT / "static", ] -# Locale/Internationalization -CELERY_TIMEZONE = 'UTC' -TIME_ZONE = 'UTC' -LANGUAGE_CODE = 'en' # http://www.i18nguy.com/unicode/language-identifiers.html - -# Languages supported for custom course certificate templates -CERTIFICATE_TEMPLATE_LANGUAGES = { - 'en': 'English', - 'es': 'Español', -} - -USE_I18N = True -USE_L10N = True - -STATICI18N_FILENAME_FUNCTION = 'statici18n.utils.legacy_filename' -STATICI18N_ROOT = PROJECT_ROOT / "static" - -# Messages -MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' - COURSE_IMPORT_EXPORT_STORAGE = 'django.core.files.storage.FileSystemStorage' COURSE_METADATA_EXPORT_STORAGE = 'django.core.files.storage.FileSystemStorage' - -##### EMBARGO ##### -EMBARGO_SITE_REDIRECT_URL = None +STATICI18N_ROOT = PROJECT_ROOT / "static" ##### custom vendor plugin variables ##### @@ -1295,10 +859,6 @@ ################################# DJANGO-REQUIRE ############################### - -# The baseUrl to pass to the r.js optimizer, relative to STATIC_ROOT. -REQUIRE_BASE_URL = "./" - # The name of a build profile to use for your project, relative to REQUIRE_BASE_URL. # A sensible value would be 'app.build.js'. Leave blank to use the built-in default build profile. # Set to False to disable running the default profile (e.g. if only using it to build Standalone @@ -1308,9 +868,6 @@ # The name of the require.js script used by your project, relative to REQUIRE_BASE_URL. REQUIRE_JS = "js/vendor/requiresjs/require.js" -# Whether to run django-require in debug mode. -REQUIRE_DEBUG = False - ########################## DJANGO WEBPACK LOADER ############################## WEBPACK_LOADER = { @@ -1324,7 +881,6 @@ } } - ############################ SERVICE_VARIANT ################################## # SERVICE_VARIANT specifies name of the variant used, which decides what JSON @@ -1339,30 +895,6 @@ ################################# CELERY ###################################### -# Message configuration - -CELERY_TASK_SERIALIZER = 'json' -CELERY_RESULT_SERIALIZER = 'json' - -CELERY_MESSAGE_COMPRESSION = 'gzip' - -# Results configuration - -CELERY_IGNORE_RESULT = False -CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True - -# Events configuration - -CELERY_TRACK_STARTED = True - -CELERY_SEND_EVENTS = True -CELERY_SEND_TASK_SENT_EVENT = True - -# Exchange configuration - -CELERY_DEFAULT_EXCHANGE = 'edx.core' -CELERY_DEFAULT_EXCHANGE_TYPE = 'direct' - # Name the exchange and queues for each variant QUEUE_VARIANT = CONFIG_PREFIX.lower() @@ -1384,10 +916,6 @@ # Queues configuration -CELERY_QUEUE_HA_POLICY = 'all' - -CELERY_CREATE_MISSING_QUEUES = True - CLEAR_REQUEST_CACHE_ON_TASK_COMPLETION = True BROKER_USE_SSL = Derived(lambda settings: settings.CELERY_BROKER_USE_SSL) @@ -1400,27 +928,6 @@ ############################## Video ########################################## -YOUTUBE = { - # YouTube JavaScript API - 'API': 'https://www.youtube.com/iframe_api', - - 'TEST_TIMEOUT': 1500, - - # URL to get YouTube metadata - 'METADATA_URL': 'https://www.googleapis.com/youtube/v3/videos', - - # Web page mechanism for scraping transcript information from youtube video pages - 'TRANSCRIPTS': { - 'CAPTION_TRACKS_REGEX': r"captionTracks\"\:\[(?P[^\]]+)", - 'YOUTUBE_URL_BASE': 'https://www.youtube.com/watch?v=', - 'ALLOWED_LANGUAGE_CODES': ["en", "en-US", "en-GB"], - }, - - 'IMAGE_API': 'http://img.youtube.com/vi/{youtube_id}/0.jpg', # /maxresdefault.jpg for 1920*1080 -} - -YOUTUBE_API_KEY = 'PUT_YOUR_API_KEY_HERE' - # Additional languages that should be supported for video transcripts, not included in ALL_LANGUAGES EXTENDED_VIDEO_TRANSCRIPT_LANGUAGES = [] @@ -1700,17 +1207,8 @@ ################# EDX MARKETING SITE ################################## -EDXMKTG_LOGGED_IN_COOKIE_NAME = 'edxloggedin' -EDXMKTG_USER_INFO_COOKIE_NAME = 'edx-user-info' -EDXMKTG_USER_INFO_COOKIE_VERSION = 1 - -MKTG_URLS = {} -MKTG_URL_OVERRIDES = {} -MKTG_URL_LINK_MAP = { - -} +MKTG_URL_LINK_MAP = {} -SUPPORT_SITE_LINK = '' ID_VERIFICATION_SUPPORT_LINK = '' PASSWORD_RESET_SUPPORT_LINK = '' ACTIVATION_EMAIL_SUPPORT_LINK = '' @@ -1777,11 +1275,6 @@ EVENT_TRACKING_SEGMENTIO_EMIT_WHITELIST = [] -#### PASSWORD POLICY SETTINGS ##### -PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG = { - 'ENFORCE_COMPLIANCE_ON_LOGIN': False -} - ##### ACCOUNT LOCKOUT DEFAULT PARAMETERS ##### MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED = 6 MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS = 30 * 60 @@ -1836,15 +1329,6 @@ except (IndexError, ValueError): INSTALLED_APPS.append(app_name) - -### External auth usage -- prefixes for ENROLLMENT_DOMAIN -SHIBBOLETH_DOMAIN_PREFIX = 'shib:' - -# Set request limits for maximum size of a request body and maximum number of GET/POST parameters. (>=Django 1.10) -# Limits are currently disabled - but can be used for finer-grained denial-of-service protection. -DATA_UPLOAD_MAX_MEMORY_SIZE = None -DATA_UPLOAD_MAX_NUMBER_FIELDS = None - ### Size of chunks into which asset uploads will be divided UPLOAD_CHUNK_SIZE_IN_MB = 10 @@ -1884,12 +1368,6 @@ ############### Settings for Retirement ##################### # See annotations in lms/envs/common.py for details. -RETIRED_USERNAME_PREFIX = 'retired__user_' -# See annotations in lms/envs/common.py for details. -RETIRED_EMAIL_PREFIX = 'retired__user_' -# See annotations in lms/envs/common.py for details. -RETIRED_EMAIL_DOMAIN = 'retired.invalid' -# See annotations in lms/envs/common.py for details. RETIRED_USERNAME_FMT = Derived(lambda settings: settings.RETIRED_USERNAME_PREFIX + '{}') # See annotations in lms/envs/common.py for details. RETIRED_EMAIL_FMT = Derived(lambda settings: settings.RETIRED_EMAIL_PREFIX + '{}@' + settings.RETIRED_EMAIL_DOMAIN) @@ -1898,39 +1376,6 @@ # See annotations in lms/envs/common.py for details. RETIREMENT_SERVICE_WORKER_USERNAME = 'RETIREMENT_SERVICE_USER' -# These states are the default, but are designed to be overridden in configuration. -# See annotations in lms/envs/common.py for details. -RETIREMENT_STATES = [ - 'PENDING', - - 'LOCKING_ACCOUNT', - 'LOCKING_COMPLETE', - - # Use these states only when ENABLE_DISCUSSION_SERVICE is True. - 'RETIRING_FORUMS', - 'FORUMS_COMPLETE', - - # TODO - Change these states to be the LMS-only email opt-out - PLAT-2189 - 'RETIRING_EMAIL_LISTS', - 'EMAIL_LISTS_COMPLETE', - - 'RETIRING_ENROLLMENTS', - 'ENROLLMENTS_COMPLETE', - - # Use these states only when ENABLE_STUDENT_NOTES is True. - 'RETIRING_NOTES', - 'NOTES_COMPLETE', - - 'RETIRING_LMS', - 'LMS_COMPLETE', - - 'ERRORED', - 'ABORTED', - 'COMPLETE', -] - -USERNAME_REPLACEMENT_WORKER = "REPLACE WITH VALID USERNAME" - # Files and Uploads type filter values FILES_AND_UPLOAD_TYPE_FILTERS = { @@ -1970,182 +1415,28 @@ 'text/coffeescript', 'text/x-matlab', 'application/sql', 'text/php', ] } -# Default to no Search Engine -SEARCH_ENGINE = None ELASTIC_FIELD_MAPPINGS = { "start_date": { "type": "date" } } -XBLOCK_SETTINGS = {} XBLOCK_FS_STORAGE_BUCKET = None XBLOCK_FS_STORAGE_PREFIX = None STUDIO_FRONTEND_CONTAINER_URL = None -################################ Settings for Credit Course Requirements ################################ -# Initial delay used for retrying tasks. -# Additional retries use longer delays. -# Value is in seconds. -CREDIT_TASK_DEFAULT_RETRY_DELAY = 30 - -# Maximum number of retries per task for errors that are not related -# to throttling. -CREDIT_TASK_MAX_RETRIES = 5 - -# Maximum age in seconds of timestamps we will accept -# when a credit provider notifies us that a student has been approved -# or denied for credit. -CREDIT_PROVIDER_TIMESTAMP_EXPIRATION = 15 * 60 - -CREDIT_PROVIDER_SECRET_KEYS = {} - -# .. setting_name: COMPREHENSIVE_THEME_DIRS -# .. setting_default: [] -# .. setting_description: A list of paths to directories, each of which will -# be searched for comprehensive themes. Do not override this Django setting directly. -# Instead, set the COMPREHENSIVE_THEME_DIRS environment variable, using colons (:) to -# separate paths. -COMPREHENSIVE_THEME_DIRS = os.environ.get("COMPREHENSIVE_THEME_DIRS", "").split(":") - -# .. setting_name: DEFAULT_SITE_THEME -# .. setting_default: None -# .. setting_description: See LMS annotation. -DEFAULT_SITE_THEME = None - -# .. toggle_name: ENABLE_COMPREHENSIVE_THEMING -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: See LMS annotation. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2016-06-30 -ENABLE_COMPREHENSIVE_THEMING = False - -# .. setting_name: CUSTOM_RESOURCE_TEMPLATES_DIRECTORY -# .. setting_default: None -# .. setting_description: Path to an existing directory of YAML files containing -# html content to be used with the subclasses of xmodule.x_module.ResourceTemplates. -# Default example templates can be found in xmodule/templates/html. -# Note that the extension used is ".yaml" and not ".yml". -# See xmodule.x_module.ResourceTemplates for usage. -# "CUSTOM_RESOURCE_TEMPLATES_DIRECTORY" : null -CUSTOM_RESOURCE_TEMPLATES_DIRECTORY = None - ############################ Global Database Configuration ##################### DATABASE_ROUTERS = [ 'openedx.core.lib.django_courseware_routers.StudentModuleHistoryExtendedRouter', ] -############################ Cache Configuration ############################### - -CACHES = { - 'course_structure_cache': { - 'KEY_PREFIX': 'course_structure', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'TIMEOUT': '604800', # 1 week - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'celery': { - 'KEY_PREFIX': 'celery', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'TIMEOUT': '7200', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'mongo_metadata_inheritance': { - 'KEY_PREFIX': 'mongo_metadata_inheritance', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'TIMEOUT': 300, - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'staticfiles': { - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'staticfiles_general', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'default': { - 'VERSION': '1', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'default', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'configuration': { - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'configuration', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'general': { - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'general', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, -} - ############################ OAUTH2 Provider ################################### # 5 minute expiration time for JWT id tokens issued for external API requests. OAUTH_ID_TOKEN_EXPIRATION = 5 * 60 -# Partner support link for CMS footer -PARTNER_SUPPORT_EMAIL = '' - -# Affiliate cookie tracking -AFFILIATE_COOKIE_NAME = 'dev_affiliate_id' - -# API access management -API_ACCESS_FROM_EMAIL = 'api-requests@example.com' -API_ACCESS_MANAGER_EMAIL = 'api-access@example.com' - EDX_DRF_EXTENSIONS = { # Set this value to an empty dict in order to prevent automatically updating # user data from values in (possibly stale) JWTs. @@ -2155,66 +1446,17 @@ ############## Settings for Studio Context Sensitive Help ############## HELP_TOKENS_INI_FILE = REPO_ROOT / "cms" / "envs" / "help_tokens.ini" -HELP_TOKENS_LANGUAGE_CODE = Derived(lambda settings: settings.LANGUAGE_CODE) -HELP_TOKENS_VERSION = Derived(lambda settings: doc_version()) -HELP_TOKENS_BOOKS = { - 'learner': 'https://edx.readthedocs.io/projects/open-edx-learner-guide', - 'course_author': 'https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course', -} - -# Used with Email sending -RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS = 5 -RETRY_ACTIVATION_EMAIL_TIMEOUT = 0.5 - -# Software Secure request retry settings -# Time in seconds before a retry of the task should be 60 mints. -SOFTWARE_SECURE_REQUEST_RETRY_DELAY = 60 * 60 -# Maximum of 6 retries before giving up. -SOFTWARE_SECURE_RETRY_MAX_ATTEMPTS = 6 ############## DJANGO-USER-TASKS ############## # How long until database records about the outcome of a task and its artifacts get deleted? USER_TASKS_MAX_AGE = timedelta(days=7) -############## Settings for the Enterprise App ###################### - -ENTERPRISE_SERVICE_WORKER_USERNAME = 'enterprise_worker' -ENTERPRISE_API_CACHE_TIMEOUT = 3600 # Value is in seconds -# The default value of this needs to be a 16 character string -ENTERPRISE_CUSTOMER_CATALOG_DEFAULT_CONTENT_FILTER = {} - -# The setting key maps to the channel code (e.g. 'SAP' for success factors), Channel code is defined as -# part of django model of each integrated channel in edx-enterprise. -# The absence of a key/value pair translates to NO LIMIT on the number of "chunks" transmitted per cycle. -INTEGRATED_CHANNELS_API_CHUNK_TRANSMISSION_LIMIT = {} - -BASE_COOKIE_DOMAIN = 'localhost' - -############## Settings for the Discovery App ###################### - -COURSE_CATALOG_URL_ROOT = 'http://localhost:8008' -COURSE_CATALOG_API_URL = f'{COURSE_CATALOG_URL_ROOT}/api/v1' - -# which access.py permission name to check in order to determine if a course is visible in -# the course catalog. We default this to the legacy permission 'see_exists'. -COURSE_CATALOG_VISIBILITY_PERMISSION = 'see_exists' - -# which access.py permission name to check in order to determine if a course about page is -# visible. We default this to the legacy permission 'see_exists'. -COURSE_ABOUT_VISIBILITY_PERMISSION = 'see_exists' - -DEFAULT_COURSE_VISIBILITY_IN_CATALOG = "both" -DEFAULT_MOBILE_AVAILABLE = False - ############################# Persistent Grades #################################### # Queue to use for updating persistent grades RECALCULATE_GRADES_ROUTING_KEY = DEFAULT_PRIORITY_QUEUE -# Rate limit for regrading tasks that a grading policy change can kick off -POLICY_CHANGE_TASK_RATE_LIMIT = '900/h' - # .. setting_name: DEFAULT_GRADE_DESIGNATIONS # .. setting_default: ['A', 'B', 'C', 'D'] # .. setting_description: The default 'pass' grade cutoff designations to be used. The failure grade @@ -2255,24 +1497,8 @@ VIDEO_IMAGE_ASPECT_RATIO_ERROR_MARGIN = 0.1 ###################### ZENDESK ###################### -ZENDESK_URL = '' ZENDESK_USER = '' ZENDESK_API_KEY = '' -ZENDESK_CUSTOM_FIELDS = {} -ZENDESK_OAUTH_ACCESS_TOKEN = '' -# A mapping of string names to Zendesk Group IDs -# To get the IDs of your groups you can go to -# {zendesk_url}/api/v2/groups.json -ZENDESK_GROUP_ID_MAPPING = {} - -############## Settings for Completion API ######################### - -# Once a user has watched this percentage of a video, mark it as complete: -# (0.0 = 0%, 1.0 = 100%) -COMPLETION_VIDEO_COMPLETE_PERCENTAGE = 0.95 - -############### Settings for edx-rbac ############### -SYSTEM_WIDE_ROLE_CLASSES = [] ############## Installed Django Apps ######################### @@ -2287,38 +1513,13 @@ # See: https://docs.python.org/2/library/wsgiref.html#wsgiref.util.FileWrapper COURSE_EXPORT_DOWNLOAD_CHUNK_SIZE = 8192 -# E-Commerce API Configuration -ECOMMERCE_PUBLIC_URL_ROOT = 'http://localhost:8002' -ECOMMERCE_API_URL = 'http://localhost:8002/api/v2' -ECOMMERCE_API_SIGNING_KEY = 'SET-ME-PLEASE' - -CREDENTIALS_INTERNAL_SERVICE_URL = 'http://localhost:8005' -CREDENTIALS_PUBLIC_SERVICE_URL = 'http://localhost:8005' -CREDENTIALS_SERVICE_USERNAME = 'credentials_service_user' -# time between scheduled runs, in seconds -NOTIFY_CREDENTIALS_FREQUENCY = 14400 - -ANALYTICS_DASHBOARD_URL = 'http://localhost:18110/courses' -ANALYTICS_DASHBOARD_NAME = 'Your Platform Name Here Insights' - COMMENTS_SERVICE_URL = 'http://localhost:18080' COMMENTS_SERVICE_KEY = 'password' EXAMS_SERVICE_URL = 'http://localhost:18740/api/v1' EXAMS_SERVICE_USERNAME = 'edx_exams_worker' -FINANCIAL_REPORTS = { - 'STORAGE_TYPE': 'localfs', - 'BUCKET': None, - 'ROOT_PATH': 'sandbox', -} - ############# CORS headers for cross-domain requests ################# -if ENABLE_CORS_HEADERS: - CORS_ALLOW_CREDENTIALS = True - CORS_ORIGIN_WHITELIST = () - CORS_ORIGIN_ALLOW_ALL = False - CORS_ALLOW_INSECURE = False # Set CORS_ALLOW_HEADERS regardless of whether we've enabled ENABLE_CORS_HEADERS # because that decision might happen in a later config file. (The headers to @@ -2329,10 +1530,6 @@ 'content-disposition', ) -LOGIN_REDIRECT_WHITELIST = [] - -DEPRECATED_ADVANCED_COMPONENT_TYPES = [] - ########################## VIDEO IMAGE STORAGE ############################ VIDEO_IMAGE_SETTINGS = dict( @@ -2351,19 +1548,6 @@ VIDEO_IMAGE_MAX_AGE = 31536000 ########################## VIDEO TRANSCRIPTS STORAGE ############################ -VIDEO_TRANSCRIPTS_SETTINGS = dict( - VIDEO_TRANSCRIPTS_MAX_BYTES=3 * 1024 * 1024, # 3 MB - # Backend storage - # STORAGE_CLASS='storages.backends.s3boto3.S3Boto3Storage', - # STORAGE_KWARGS=dict(bucket='video-transcripts-bucket'), - STORAGE_KWARGS=dict( - location=MEDIA_ROOT, - ), - DIRECTORY_PREFIX='video-transcripts/', - BASE_URL=MEDIA_URL, -) - -VIDEO_TRANSCRIPTS_MAX_AGE = 31536000 TRANSCRIPT_LANG_CACHE_TIMEOUT = 60 * 60 * 24 @@ -2382,17 +1566,6 @@ # a bulk email message. BULK_EMAIL_LOG_SENT_EMAILS = False -############### Settings for django file storage ################## -STORAGES = { - 'default': { - 'BACKEND': 'django.core.files.storage.FileSystemStorage' - }, - 'staticfiles': { - 'BACKEND': 'openedx.core.storage.ProductionStorage' - } -} - - ###################### Grade Downloads ###################### # These keys are used for all of our asynchronous downloadable files, including # the ones that contain information other than grades. @@ -2407,59 +1580,21 @@ } ############### Settings swift ##################################### -SWIFT_USERNAME = None -SWIFT_KEY = None -SWIFT_TENANT_ID = None -SWIFT_TENANT_NAME = None -SWIFT_AUTH_URL = None -SWIFT_AUTH_VERSION = None -SWIFT_REGION_NAME = None SWIFT_USE_TEMP_URLS = False -SWIFT_TEMP_URL_KEY = None -SWIFT_TEMP_URL_DURATION = 1800 # seconds - -############### The SAML private/public key values ################ -SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "" -SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "" -SOCIAL_AUTH_SAML_SP_PRIVATE_KEY_DICT = {} -SOCIAL_AUTH_SAML_SP_PUBLIC_CERT_DICT = {} ############### Settings for facebook ############################## FACEBOOK_APP_ID = 'FACEBOOK_APP_ID' FACEBOOK_APP_SECRET = 'FACEBOOK_APP_SECRET' FACEBOOK_API_VERSION = 'v2.1' -############### Settings for django-fernet-fields ################## -FERNET_KEYS = [ - 'DUMMY KEY CHANGE BEFORE GOING TO PRODUCTION', -] - -### Proctoring configuration (redirct URLs and keys shared between systems) #### -PROCTORING_BACKENDS = { - 'DEFAULT': 'null', - # The null key needs to be quoted because - # null is a language independent type in YAML - 'null': {} -} - +###################### PROCTORING SETTINGS ########################## PROCTORING_SETTINGS = {} ###################### LEARNER PORTAL ################################ LEARNER_PORTAL_URL_ROOT = 'https://learner-portal-localhost:18000' ############################ JWT ################################# -JWT_ISSUER = 'http://127.0.0.1:8000/oauth2' -DEFAULT_JWT_ISSUER = { - 'ISSUER': 'http://127.0.0.1:8000/oauth2', - 'AUDIENCE': 'SET-ME-PLEASE', - 'SECRET_KEY': 'SET-ME-PLEASE' -} -JWT_EXPIRATION = 30 -JWT_PRIVATE_SIGNING_KEY = None - -SYSLOG_SERVER = '' -FEEDBACK_SUBMISSION_EMAIL = '' REGISTRATION_EXTRA_FIELDS = { 'confirm_email': 'hidden', 'level_of_education': 'optional', @@ -2476,9 +1611,6 @@ EDXAPP_PARSE_KEYS = {} PARSE_KEYS = {} -############################ AI_TRANSLATIONS ################################## -AI_TRANSLATIONS_API_URL = 'http://localhost:18760/api/v1' - ###################### DEPRECATED URLS ########################## # .. toggle_name: DISABLE_DEPRECATED_SIGNIN_URL @@ -2503,33 +1635,12 @@ # .. toggle_tickets: ARCH-1253 DISABLE_DEPRECATED_SIGNUP_URL = False -##### LOGISTRATION RATE LIMIT SETTINGS ##### -LOGISTRATION_RATELIMIT_RATE = '100/5m' -LOGISTRATION_PER_EMAIL_RATELIMIT_RATE = '30/5m' -LOGISTRATION_API_RATELIMIT = '20/m' -LOGIN_AND_REGISTER_FORM_RATELIMIT = '100/5m' -RESET_PASSWORD_TOKEN_VALIDATE_API_RATELIMIT = '30/7d' -RESET_PASSWORD_API_RATELIMIT = '30/7d' - ##### REGISTRATION RATE LIMIT SETTINGS ##### -REGISTRATION_VALIDATION_RATELIMIT = '30/7d' -REGISTRATION_RATELIMIT = '60/7d' OPTIONAL_FIELD_API_RATELIMIT = '10/h' -##### PASSWORD RESET RATE LIMIT SETTINGS ##### -PASSWORD_RESET_IP_RATE = '1/m' -PASSWORD_RESET_EMAIL_RATE = '2/h' - ######################## Setting for content libraries ######################## MAX_BLOCKS_PER_CONTENT_LIBRARY = 100_000 -################# Student Verification ################# -VERIFY_STUDENT = { - "DAYS_GOOD_FOR": 365, # How many days is a verficiation good for? - # The variable represents the window within which a verification is considered to be "expiring soon." - "EXPIRING_SOON_WINDOW": 28, -} - ######################## Organizations ######################## # .. toggle_name: ORGANIZATIONS_AUTOCREATE @@ -2548,39 +1659,9 @@ # .. toggle_tickets: https://github.com/openedx/edx-organizations/blob/master/docs/decisions/0001-phase-in-db-backed-organizations-to-all.rst ORGANIZATIONS_AUTOCREATE = True -################# Settings for brand logos. ################# -LOGO_IMAGE_EXTRA_TEXT = '' -LOGO_URL = None -LOGO_URL_PNG = None -LOGO_TRADEMARK_URL = None -FAVICON_URL = None -DEFAULT_EMAIL_LOGO_URL = 'https://edx-cdn.org/v3/default/logo.png' - -############## Settings for course import olx validation ############################ -COURSE_OLX_VALIDATION_STAGE = 1 -COURSE_OLX_VALIDATION_IGNORE_LIST = None - -################# show account activate cta after register ######################## -SHOW_ACTIVATE_CTA_POPUP_COOKIE_NAME = 'show-account-activation-popup' -SHOW_ACCOUNT_ACTIVATION_CTA = False - ################# Documentation links for course apps ################# -# pylint: disable=line-too-long -CALCULATOR_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/add_calculator.html" -DISCUSSIONS_HELP_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_discussions.html" -EDXNOTES_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/enable_notes.html" -PROGRESS_HELP_URL = "https://docs.openedx.org/en/latest/educators/references/data/progress_page.html" -TEAMS_HELP_URL = "https://docs.openedx.org/en/latest/educators/navigation/advanced_features.html#use-teams-in-your-course" -TEXTBOOKS_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/manage_textbooks.html" -WIKI_HELP_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_wiki.html" -CUSTOM_PAGES_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/manage_custom_page.html" COURSE_LIVE_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/add_course_live.html" -ORA_SETTINGS_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/Manage_ORA_Assignment.html" -# pylint: enable=line-too-long - -# keys for big blue button live provider -COURSE_LIVE_GLOBAL_CREDENTIALS = {} ######################## Registration ######################## @@ -2591,9 +1672,6 @@ # Redirect URL for inactive user. If not set, user will be redirected to /login after the login itself (loop) INACTIVE_USER_URL = f'http://{CMS_BASE}' -# String length for the configurable part of the auto-generated username -AUTO_GENERATED_USERNAME_RANDOM_STRING_LENGTH = 4 - ######################## Discussion Forum settings ######################## # Feedback link in upgraded discussion notification alert @@ -2604,21 +1682,12 @@ DISCUSSIONS_INCONTEXT_LEARNMORE_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_discussions.html" # pylint: enable=line-too-long -#### django-simple-history## -# disable indexing on date field its coming django-simple-history. -SIMPLE_HISTORY_DATE_INDEX = False - #### Event bus producing #### def _should_send_xblock_events(settings): return settings.ENABLE_SEND_XBLOCK_LIFECYCLE_EVENTS_OVER_BUS - -def _should_send_learning_badge_events(settings): - return settings.BADGES_ENABLED - - # .. setting_name: EVENT_BUS_PRODUCER_CONFIG # .. setting_default: all events disabled # .. setting_description: Dictionary of event_types mapped to dictionaries of topic to topic-related configuration. @@ -2671,13 +1740,13 @@ def _should_send_learning_badge_events(settings): "org.openedx.learning.course.passing.status.updated.v1": { "learning-badges-lifecycle": { "event_key_field": "course_passing_status.course.course_key", - "enabled": Derived(_should_send_learning_badge_events), + "enabled": Derived(should_send_learning_badge_events), }, }, "org.openedx.learning.ccx.course.passing.status.updated.v1": { "learning-badges-lifecycle": { "event_key_field": "course_passing_status.course.ccx_course_key", - "enabled": Derived(_should_send_learning_badge_events), + "enabled": Derived(should_send_learning_badge_events), }, }, } @@ -2687,8 +1756,6 @@ def _should_send_learning_badge_events(settings): # This affects the Authoring API swagger docs but not the legacy swagger docs under /api-docs/. REST_FRAMEWORK['DEFAULT_SCHEMA_CLASS'] = 'drf_spectacular.openapi.AutoSchema' -BEAMER_PRODUCT_ID = "" - ################### Studio Search (beta), using Meilisearch ################### # Enable Studio search features (powered by Meilisearch) (beta, off by default) @@ -2731,28 +1798,6 @@ def _should_send_learning_badge_events(settings): 'word_cloud', ] -############## NOTIFICATIONS EXPIRY ############## -NOTIFICATIONS_EXPIRY = 60 -EXPIRED_NOTIFICATIONS_DELETE_BATCH_SIZE = 10000 -NOTIFICATION_CREATION_BATCH_SIZE = 76 -NOTIFICATIONS_DEFAULT_FROM_EMAIL = "no-reply@example.com" -NOTIFICATION_DIGEST_LOGO = DEFAULT_EMAIL_LOGO_URL - - -SOCIAL_MEDIA_FOOTER_ACE_URLS = { - 'reddit': 'http://www.reddit.com/r/edx', - 'twitter': 'https://twitter.com/edXOnline', - 'linkedin': 'http://www.linkedin.com/company/edx', - 'facebook': 'http://www.facebook.com/EdxOnline', -} - -SOCIAL_MEDIA_LOGO_URLS = { - 'reddit': 'http://email-media.s3.amazonaws.com/edX/2021/social_5_reddit.png', - 'twitter': 'http://email-media.s3.amazonaws.com/edX/2021/social_2_twitter.png', - 'linkedin': 'http://email-media.s3.amazonaws.com/edX/2021/social_3_linkedin.png', - 'facebook': 'http://email-media.s3.amazonaws.com/edX/2021/social_1_fb.png', -} - # .. setting_name: DEFAULT_ORG_LOGO_URL # .. setting_default: Derived(lambda settings: settings.STATIC_URL + 'images/logo.png') # .. setting_description: The default logo url for organizations that do not have a logo set. diff --git a/lms/envs/common.py b/lms/envs/common.py index 4740cf59fb84..046b7cfef3ea 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -65,7 +65,6 @@ ) from openedx.core.lib.derived import Derived -from openedx.core.release import doc_version from openedx.envs.common import * # pylint: disable=wildcard-import from lms.djangoapps.lms_xblock.mixin import LmsBlockMixin @@ -75,20 +74,8 @@ FEATURES = FeaturesProxy(globals()) ################################### FEATURES ################################### -# .. setting_name: PLATFORM_NAME -# .. setting_default: Your Platform Name Here -# .. setting_description: The display name of the platform to be used in -# templates/emails/etc. -PLATFORM_NAME = _('Your Platform Name Here') -PLATFORM_DESCRIPTION = _('Your Platform Description Here') -CC_MERCHANT_NAME = Derived(lambda settings: settings.PLATFORM_NAME) - -PLATFORM_FACEBOOK_ACCOUNT = "http://www.facebook.com/YourPlatformFacebookAccount" -PLATFORM_TWITTER_ACCOUNT = "@YourPlatformTwitterAccount" - -ENABLE_JASMINE = False -# FEATURES +CC_MERCHANT_NAME = Derived(lambda settings: settings.PLATFORM_NAME) # .. toggle_name: settings.DISPLAY_DEBUG_INFO_TO_STAFF # .. toggle_implementation: DjangoSetting @@ -113,43 +100,6 @@ REROUTE_ACTIVATION_EMAIL = False # nonempty string = address for all activation emails -# .. toggle_name: settings.DISABLE_START_DATES -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When True, all courses will be active, regardless of start -# date. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2012-07-24 -# .. toggle_warning: This will cause ALL courses to be immediately visible. -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/17913 -## DO NOT SET TO True IN THIS FILE -## Doing so will cause all courses to be released on production -DISABLE_START_DATES = False - -# .. toggle_name: settings.ENABLE_DISCUSSION_SERVICE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: When True, it will enable the Discussion tab in courseware for all courses. Setting this -# to False will not contain inline discussion components and discussion tab in any courses. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2012-08-14 -# .. toggle_warning: If the discussion panel is present in the course and the value for this flag is False then, -# attempting to expand those components will cause errors. So, this should only be set to False with an LMS that -# is running courses that do not contain discussion components. -# For consistency in user-experience, keep the value in sync with the setting of the same name in the CMS. -ENABLE_DISCUSSION_SERVICE = True - -# .. toggle_name: settings.ENABLE_TEXTBOOK -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: Add PDF and HTML textbook tabs to the courseware. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2014-03-27 -# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name -# in the CMS. -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/3064 -ENABLE_TEXTBOOK = True - # .. toggle_name: settings.ENABLE_DISCUSSION_HOME_PANEL # .. toggle_implementation: DjangoSetting # .. toggle_default: True @@ -216,17 +166,6 @@ # .. toggle_creation_date: 2013-12-03 DISABLE_LOGIN_BUTTON = False -# .. toggle_name: settings.ENABLE_OAUTH2_PROVIDER -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Enable this feature to allow this Open edX platform to be an OAuth2 authentication -# provider. This is necessary to enable some other features, such as the REST API for the mobile application. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2014-09-09 -# .. toggle_target_removal_date: None -# .. toggle_warning: This temporary feature toggle does not have a target removal date. -ENABLE_OAUTH2_PROVIDER = False - # .. toggle_name: settings.ENABLE_XBLOCK_VIEW_ENDPOINT # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -238,10 +177,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2968 ENABLE_XBLOCK_VIEW_ENDPOINT = False -# Allows to configure the LMS to provide CORS headers to serve requests from other -# domains -ENABLE_CORS_HEADERS = False - # Can be turned off if course lists need to be hidden. Effects views and templates. # .. toggle_name: settings.COURSES_ARE_BROWSABLE # .. toggle_implementation: DjangoSetting @@ -254,16 +189,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/1073 COURSES_ARE_BROWSABLE = True -# Can be turned off to disable the help link in the navbar -# .. toggle_name: settings.ENABLE_HELP_LINK -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: When True, a help link is displayed on the main navbar. Set False to hide it. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2021-03-05 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/26106 -ENABLE_HELP_LINK = True - # .. toggle_name: settings.HIDE_DASHBOARD_COURSES_UNTIL_ACTIVATED # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -288,16 +213,6 @@ # sandbox, for testing whether it's enabled properly. ENABLE_DEBUG_RUN_PYTHON = False -# Enable URL that shows information about the status of various services -ENABLE_SERVICE_STATUS = False - -# Don't autoplay videos for students -AUTOPLAY_VIDEOS = False - -# Move the student to next page when a video finishes. Set to True to show -# an auto-advance button in videos. If False, videos never auto-advance. -ENABLE_AUTOADVANCE_VIDEOS = False - # Enable instructor dash to submit background tasks ENABLE_INSTRUCTOR_BACKGROUND_TASKS = True @@ -308,23 +223,8 @@ # True. INDIVIDUAL_DUE_DATES = False -# .. toggle_name: CUSTOM_COURSES_EDX -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to enable Custom Courses for edX, a feature that is more commonly known as -# CCX. Documentation for configuring and using this feature is available at -# https://docs.openedx.org/en/latest/site_ops/install_configure_run_guide/configuration/enable_ccx.html -# .. toggle_warning: When set to true, 'lms.djangoapps.ccx.overrides.CustomCoursesForEdxOverrideProvider' will -# be added to MODULESTORE_FIELD_OVERRIDE_PROVIDERS -# .. toggle_use_cases: opt_in, circuit_breaker -# .. toggle_creation_date: 2015-04-10 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6636 -CUSTOM_COURSES_EDX = False - # Toggle to enable certificates of courses on dashboard ENABLE_VERIFIED_CERTIFICATES = False -# Settings for course import olx validation -ENABLE_COURSE_OLX_VALIDATION = False # .. toggle_name: settings.DISABLE_HONOR_CERTIFICATES # .. toggle_implementation: DjangoSetting @@ -338,30 +238,6 @@ DISABLE_AUDIT_CERTIFICATES = False # Toggle to disable audit certificates -# .. toggle_name: settings.AUTOMATIC_AUTH_FOR_TESTING -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to perform acceptance and load test. Auto auth view is responsible for load -# testing and is controlled by this feature flag. Session verification (of CacheBackedAuthenticationMiddleware) -# is a security feature, but it can be turned off by enabling this feature flag. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2013-07-25 -# .. toggle_warning: If this has been set to True then the account activation email will be skipped. -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/417 -AUTOMATIC_AUTH_FOR_TESTING = False - -# .. toggle_name: settings.RESTRICT_AUTOMATIC_AUTH -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: Prevent auto auth from creating superusers or modifying existing users. Auto auth is a -# mechanism where superusers can simply modify attributes of other users by accessing the "/auto_auth url" with -# the right -# querystring parameters. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2018-05-07 -# .. toggle_tickets: https://openedx.atlassian.net/browse/TE-2545 -RESTRICT_AUTOMATIC_AUTH = True - # .. toggle_name: settings.ENABLE_LOGIN_MICROFRONTEND # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -434,20 +310,6 @@ # Hide any Personally Identifiable Information from application logs SQUELCH_PII_IN_LOGS = True -# .. toggle_name: settings.EMBARGO -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Turns on embargo functionality, which blocks users from -# the site or courses based on their location. Embargo can restrict users by states -# and whitelist/blacklist (IP Addresses (ie. 10.0.0.0), Networks (ie. 10.0.0.0/24)), or the user profile country. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2014-02-27 -# .. toggle_target_removal_date: None -# .. toggle_warning: reverse proxy should be configured appropriately for example Client IP address headers -# (e.g HTTP_X_FORWARDED_FOR) should be configured. -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2749 -EMBARGO = False - # Whether the Wiki subsystem should be accessible via the direct /wiki/ paths. Setting this to True means # that people can submit content and modify the Wiki in any arbitrary manner. We're leaving this as True in the # defaults, so that we maintain current behavior @@ -464,16 +326,6 @@ # .. toggle_creation_date: 2014-09-15 ENABLE_THIRD_PARTY_AUTH = False -# .. toggle_name: settings.ENABLE_MKTG_SITE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Toggle to enable alternate urls for marketing links. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2014-03-24 -# .. toggle_warning: When this is enabled, the MKTG_URLS setting should be defined. The use case of this feature -# toggle is uncertain. -ENABLE_MKTG_SITE = False - # Prevent concurrent logins per user PREVENT_CONCURRENT_LOGINS = True @@ -509,10 +361,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/19604 ENABLE_COURSE_HOME_REDIRECT = True -# Expose Mobile REST API. Note that if you use this, you must also set -# ENABLE_OAUTH2_PROVIDER to True -ENABLE_MOBILE_REST_API = False - # .. toggle_name: settings.ENABLE_COMBINED_LOGIN_REGISTRATION_FOOTER # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -539,29 +387,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6588 ENABLE_FOOTER_MOBILE_APP_LINKS = False -# Let students save and manage their annotations -# .. toggle_name: settings.ENABLE_EDXNOTES -# .. toggle_implementation: SettingToggle -# .. toggle_default: False -# .. toggle_description: This toggle enables the students to save and manage their annotations in the -# course using the notes service. The bulk of the actual work in storing the notes is done by -# a separate service (see the edx-notes-api repo). -# .. toggle_warning: Requires the edx-notes-api service properly running and to have configured the django settings -# EDXNOTES_INTERNAL_API and EDXNOTES_PUBLIC_API. If you update this setting, also update it in Studio. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2015-01-04 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6321 -ENABLE_EDXNOTES = False - -# Toggle to enable coordination with the Publisher tool (keep in sync with cms/envs/common.py) -ENABLE_PUBLISHER = False - -# Milestones application flag -MILESTONES_APP = False - -# Prerequisite courses feature flag -ENABLE_PREREQUISITE_COURSES = False - # For easily adding modes to courses during acceptance testing MODE_CREATION_FOR_TESTING = False @@ -610,29 +435,6 @@ # log all information from cybersource callbacks LOG_POSTPAY_CALLBACKS = True -# .. toggle_name: settings.LICENSING -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Toggle platform-wide course licensing. The course.license attribute is then used to append -# license information to the courseware. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2015-05-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7315 -LICENSING = False - -# .. toggle_name: settings.CERTIFICATES_HTML_VIEW -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to enable course certificates on your instance of Open edX. -# .. toggle_warning: You must enable this feature flag in both Studio and the LMS and complete the configuration tasks -# described here: -# https://docs.openedx.org/en/latest/site_ops/install_configure_run_guide/configuration/enable_certificates.html pylint: disable=line-too-long,useless-suppression -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2015-03-13 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7113 -CERTIFICATES_HTML_VIEW = False - # .. toggle_name: settings.CUSTOM_CERTIFICATE_TEMPLATES_ENABLED # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -705,72 +507,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7689 ENABLE_LTI_PROVIDER = False -# .. toggle_name: settings.SHOW_HEADER_LANGUAGE_SELECTOR -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When set to True, language selector will be visible in the header. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2017-05-25 -# .. toggle_warning: You should set the languages in the DarkLangConfig table to get this working. If you have -# not set any languages in the DarkLangConfig table then the language selector will not be visible in the header. -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15133 -SHOW_HEADER_LANGUAGE_SELECTOR = False - -# At edX it's safe to assume that English transcripts are always available -# This is not the case for all installations. -# The default value in {lms,cms}/envs/common.py and xmodule/tests/test_video.py should be consistent. -FALLBACK_TO_ENGLISH_TRANSCRIPTS = True - -# .. toggle_name: settings.SHOW_FOOTER_LANGUAGE_SELECTOR -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When set to True, language selector will be visible in the footer. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2017-05-25 -# .. toggle_warning: LANGUAGE_COOKIE_NAME is required to use footer-language-selector, set it if it has not been set. -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15133 -SHOW_FOOTER_LANGUAGE_SELECTOR = False - -# .. toggle_name: settings.ENABLE_CSMH_EXTENDED -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: Write Courseware Student Module History (CSMH) to the extended table: this logs all -# student activities to MySQL, in a separate database. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2020-11-05 -# .. toggle_warning: Even though most Open edX instances run with a separate CSMH database, it may not always be -# the case. When disabling this feature flag, remember to remove "lms.djangoapps.coursewarehistoryextended" -# from the INSTALLED_APPS and the "StudentModuleHistoryExtendedRouter" from the DATABASE_ROUTERS. -ENABLE_CSMH_EXTENDED = True - -# Read from both the CSMH and CSMHE history tables. -# This is the default, but can be disabled if all history -# lives in the Extended table, saving the frontend from -# making multiple queries. -ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES = True - -# Set this to False to facilitate cleaning up invalid xml from your modulestore. -ENABLE_XBLOCK_XML_VALIDATION = True - -# .. toggle_name: settings.ALLOW_PUBLIC_ACCOUNT_CREATION -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: Allow public account creation. If this is disabled, users will no longer have access to -# the signup page. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2017-04-12 -# .. toggle_tickets: https://openedx.atlassian.net/browse/YONK-513 -ALLOW_PUBLIC_ACCOUNT_CREATION = True - -# .. toggle_name: settings.SHOW_REGISTRATION_LINKS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: True -# .. toggle_description: Allow registration links. If this is disabled, users will no longer see buttons to the -# the signup page. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2023-03-27 -SHOW_REGISTRATION_LINKS = True - # .. toggle_name: settings.ENABLE_COOKIE_CONSENT # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -781,9 +517,6 @@ # .. toggle_tickets: https://openedx.atlassian.net/browse/OSPR-1560 ENABLE_COOKIE_CONSENT = False -# Whether or not the dynamic EnrollmentTrackUserPartition should be registered. -ENABLE_ENROLLMENT_TRACK_USER_PARTITION = True - # Enable one click program purchase # See LEARNER-493 ENABLE_ONE_CLICK_PROGRAM_PURCHASE = False @@ -823,18 +556,6 @@ # .. toggle_tickets: https://openedx.atlassian.net/browse/OSPR-1880 ENABLE_HTML_XBLOCK_STUDENT_VIEW_DATA = False -# .. toggle_name: settings.ENABLE_PASSWORD_RESET_FAILURE_EMAIL -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Whether to send an email for failed password reset attempts or not. This happens when a -# user asks for a password reset but they don't have an account associated to their email. This is useful for -# notifying users that they don't have an account associated with email addresses they believe they've registered -# with. This setting can be overridden by a site-specific configuration. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2017-07-20 -# .. toggle_tickets: https://openedx.atlassian.net/browse/OSPR-1832 -ENABLE_PASSWORD_RESET_FAILURE_EMAIL = False - # Sets the default browser support. For more information go to http://browser-update.org/customize.html UNSUPPORTED_BROWSER_ALERT_VERSIONS = "{i:10,f:-3,o:-3,s:-3,c:-3}" @@ -848,20 +569,6 @@ # .. toggle_tickets: https://github.com/openedx/edx-platform/pull/18298 ENABLE_ACCOUNT_DELETION = True -# Enable feature to remove enrollments and users. Used to reset state of master's integration environments -ENABLE_ENROLLMENT_RESET = False -DISABLE_MOBILE_COURSE_AVAILABLE = False - -# .. toggle_name: settings.ENABLE_CHANGE_USER_PASSWORD_ADMIN -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to enable changing a user password through django admin. This is disabled by -# default because enabling allows a method to bypass password policy. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2020-02-21 -# .. toggle_tickets: 'https://github.com/openedx/edx-platform/pull/21616' -ENABLE_CHANGE_USER_PASSWORD_ADMIN = False - # .. toggle_name: settings.ENABLE_AUTHN_MICROFRONTEND # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -884,30 +591,6 @@ ENABLE_CATALOG_MICROFRONTEND = False ### ORA Feature Flags ### -# .. toggle_name: settings.ENABLE_ORA_ALL_FILE_URLS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: A "work-around" feature toggle meant to help in cases where some file uploads are not -# discoverable. If enabled, will iterate through all possible file key suffixes up to the max for displaying -# file metadata in staff assessments. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2020-03-03 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://openedx.atlassian.net/browse/EDUCATOR-4951 -# .. toggle_warning: This temporary feature toggle does not have a target removal date. -ENABLE_ORA_ALL_FILE_URLS = False - -# .. toggle_name: settings.ENABLE_ORA_USER_STATE_UPLOAD_DATA -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: A "work-around" feature toggle meant to help in cases where some file uploads are not -# discoverable. If enabled, will pull file metadata from StudentModule.state for display in staff assessments. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2020-03-03 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://openedx.atlassian.net/browse/EDUCATOR-4951 -# .. toggle_warning: This temporary feature toggle does not have a target removal date. -ENABLE_ORA_USER_STATE_UPLOAD_DATA = False # .. toggle_name: settings.ENABLE_ORA_USERNAMES_ON_DATA_EXPORT # .. toggle_implementation: DjangoSetting @@ -953,27 +636,6 @@ # .. toggle_tickets: 'https://openedx.atlassian.net/browse/OSPR-5290' ENABLE_BULK_USER_RETIREMENT = False -# .. toggle_name: settings.ENABLE_INTEGRITY_SIGNATURE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Whether to display honor code agreement for learners before their first grade assignment -# (https://github.com/edx/edx-name-affirmation) -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2022-02-15 -# .. toggle_target_removal_date: None -# .. toggle_tickets: 'https://openedx.atlassian.net/browse/MST-1348' -ENABLE_INTEGRITY_SIGNATURE = False - -# .. toggle_name: settings.ENABLE_LTI_PII_ACKNOWLEDGEMENT -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Enables the lti pii acknowledgement feature for a course -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2023-10 -# .. toggle_target_removal_date: None -# .. toggle_tickets: 'https://2u-internal.atlassian.net/browse/MST-2055' -ENABLE_LTI_PII_ACKNOWLEDGEMENT = False - # .. toggle_name: settings.ENABLE_NEW_BULK_EMAIL_EXPERIENCE # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -986,31 +648,6 @@ # .. toggle_tickets: 'https://openedx.atlassian.net/browse/MICROBA-1758' ENABLE_NEW_BULK_EMAIL_EXPERIENCE = False -# .. toggle_name: MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: If enabled, the Library Content Block is marked as complete when users view it. -# Otherwise (by default), all children of this block must be completed. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2022-03-22 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/28268 -# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name -# in the LMS and CMS. -MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW = False - -# .. toggle_name: settings.DISABLE_UNENROLLMENT -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Set to True to disable self-unenrollments via REST API. -# This also hides the "Unenroll" button on the Learner Dashboard. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2021-10-11 -# .. toggle_warning: For consistency in user experience, keep the value in sync with the setting of the same name -# in the LMS and CMS. -# .. toggle_tickets: 'https://github.com/open-craft/edx-platform/pull/429' -DISABLE_UNENROLLMENT = False - # .. toggle_name: settings.ENABLE_CERTIFICATES_IDV_REQUIREMENT # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -1043,15 +680,6 @@ # .. toggle_tickets: https://github.com/openedx/openedx-events/issues/210 SEND_LEARNING_CERTIFICATE_LIFECYCLE_EVENTS_TO_BUS = False -# .. toggle_name: settings.ENABLE_GRADING_METHOD_IN_PROBLEMS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Enables the grading method feature in capa problems. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2024-03-22 -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/33911 -ENABLE_GRADING_METHOD_IN_PROBLEMS = False - # .. toggle_name: settings.ENABLE_COURSEWARE_SEARCH_VERIFIED_REQUIRED # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -1106,41 +734,8 @@ # .. setting_description: Sets the number of days after which the gradebook will freeze following the course's end. GRADEBOOK_FREEZE_DAYS = 30 -# Used with XQueue -XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds -XQUEUE_INTERFACE = { - 'url': 'http://localhost:18040', - 'basic_auth': ['edx', 'edx'], - 'django_auth': { - 'username': 'lms', - 'password': 'password' - } -} - -# Used with Email sending -RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS = 5 -RETRY_ACTIVATION_EMAIL_TIMEOUT = 0.5 - -# Software Secure request retry settings -# Time in seconds before a retry of the task should be 60 mints. -SOFTWARE_SECURE_REQUEST_RETRY_DELAY = 60 * 60 -# Maximum of 6 retries before giving up. -SOFTWARE_SECURE_RETRY_MAX_ATTEMPTS = 6 - RETRY_CALENDAR_SYNC_EMAIL_MAX_ATTEMPTS = 5 -MARKETING_EMAILS_OPT_IN = False - -# .. toggle_name: ENABLE_COPPA_COMPLIANCE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When True, enforces COPPA compliance and removes YOB field from registration form and account -# .. settings page. Also hide YOB banner from profile page. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2021-10-27 -# .. toggle_tickets: 'https://openedx.atlassian.net/browse/VAN-622' -ENABLE_COPPA_COMPLIANCE = False - ############################# SET PATH INFORMATION ############################# PROJECT_ROOT = path(__file__).abspath().dirname().dirname() # /edx-platform/lms REPO_ROOT = PROJECT_ROOT.dirname() @@ -1165,103 +760,6 @@ 'edx_django_utils.db.read_replica.ReadReplicaRouter', ] -############################ Cache Configuration ############################### - -CACHES = { - 'course_structure_cache': { - 'KEY_PREFIX': 'course_structure', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'TIMEOUT': '604800', # 1 week - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'celery': { - 'KEY_PREFIX': 'celery', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'TIMEOUT': '7200', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'mongo_metadata_inheritance': { - 'KEY_PREFIX': 'mongo_metadata_inheritance', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'TIMEOUT': 300, - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'staticfiles': { - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'staticfiles_general', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'default': { - 'VERSION': '1', - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'default', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'configuration': { - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'configuration', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, - 'general': { - 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', - 'LOCATION': ['localhost:11211'], - 'KEY_PREFIX': 'general', - 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', - 'OPTIONS': { - 'no_delay': True, - 'ignore_exc': True, - 'use_pooling': True, - 'connect_timeout': 0.5 - } - }, -} - -############################ OAUTH2 Provider ################################### -OAUTH_EXPIRE_CONFIDENTIAL_CLIENT_DAYS = 365 -OAUTH_EXPIRE_PUBLIC_CLIENT_DAYS = 30 - ################################## DJANGO OAUTH TOOLKIT ####################################### # Scope description strings are presented to the user @@ -1418,53 +916,26 @@ STUDENT_FILEUPLOAD_MAX_SIZE = 4 * 1000 * 1000 # 4 MB MAX_FILEUPLOADS_PER_INPUT = 20 -# Set request limits for maximum size of a request body and maximum number of GET/POST parameters. (>=Django 1.10) -# Limits are currently disabled - but can be used for finer-grained denial-of-service protection. -DATA_UPLOAD_MAX_MEMORY_SIZE = None -DATA_UPLOAD_MAX_NUMBER_FIELDS = None - # Configuration option for when we want to grab server error pages STATIC_GRAB = False DEV_CONTENT = True -# License for serving content in China -ICP_LICENSE = None -ICP_LICENSE_INFO = {} - -ELASTIC_SEARCH_CONFIG = [ - { - 'use_ssl': False, - 'host': 'localhost', - 'port': 9200 - } -] - SEARCH_COURSEWARE_CONTENT_LOG_PARAMS = False - # .. setting_name: ELASTIC_SEARCH_INDEX_PREFIX # .. setting_default: '' # .. setting_description: Specifies the prefix used when naming elasticsearch indexes related to edx-search. ELASTICSEARCH_INDEX_PREFIX = "" -LOGGING_ENV = 'sandbox' - -EDX_ROOT_URL = '' EDX_API_KEY = None LOGIN_REDIRECT_URL = EDX_ROOT_URL + '/login' LOGIN_URL = EDX_ROOT_URL + '/login' -PARTNER_SUPPORT_EMAIL = '' - CERT_QUEUE = 'test-pull' ALTERNATE_WORKER_QUEUES = 'cms' -LOCAL_LOGLEVEL = "INFO" - -LOG_DIR = '/edx/var/log/edx' - DATA_DIR = '/edx/var/edxapp/data' # .. setting_name: MAINTENANCE_BANNER_TEXT @@ -1474,12 +945,6 @@ # The banner is only rendered when the switch is activated. MAINTENANCE_BANNER_TEXT = None -DJFS = { - 'type': 'osfs', - 'directory_root': '/edx/var/edxapp/django-pyfs/static/django-pyfs', - 'url_root': '/static/django-pyfs', -} - # Set certificate issued date format. It supports all formats supported by # `common.djangoapps.util.date_utils.strftime_localized`. CERTIFICATE_DATE_FORMAT = "%B %-d, %Y" @@ -1585,10 +1050,6 @@ ######################## BRANCH.IO ########################### BRANCH_IO_KEY = None -######################## OPTIMIZELY ########################### -OPTIMIZELY_PROJECT_ID = None -OPTIMIZELY_FULLSTACK_SDK_KEY = None - ######################## HOTJAR ########################### HOTJAR_SITE_ID = 00000 @@ -1617,34 +1078,6 @@ EditInfoMixin, ) -# .. setting_name: XBLOCK_EXTRA_MIXINS -# .. setting_default: () -# .. setting_description: Custom mixins that will be dynamically added to every XBlock and XBlockAside instance. -# These can be classes or dotted-path references to classes. -# For example: `XBLOCK_EXTRA_MIXINS = ('my_custom_package.my_module.MyCustomMixin',)` -XBLOCK_EXTRA_MIXINS = () - -# .. setting_name: XBLOCK_FIELD_DATA_WRAPPERS -# .. setting_default: () -# .. setting_description: Paths to wrapper methods which should be applied to every XBlock's FieldData. -XBLOCK_FIELD_DATA_WRAPPERS = () - -XBLOCK_FS_STORAGE_BUCKET = None -XBLOCK_FS_STORAGE_PREFIX = None - -# .. setting_name: XBLOCK_SETTINGS -# .. setting_default: {} -# .. setting_description: Dictionary containing server-wide configuration of XBlocks on a per-type basis. -# By default, keys should match the XBlock `block_settings_key` attribute/property. If the attribute/property -# is not defined, use the XBlock class name. Check `xmodule.services.SettingsService` -# for more reference. -XBLOCK_SETTINGS = {} - -# .. setting_name: XBLOCK_RUNTIME_V2_EPHEMERAL_DATA_CACHE -# .. setting_default: default -# .. setting_description: The django cache key of the cache to use for storing anonymous user state for XBlocks. -XBLOCK_RUNTIME_V2_EPHEMERAL_DATA_CACHE = 'default' - ############# ModuleStore Configuration ########## MODULESTORE_BRANCH = 'published-only' @@ -1716,48 +1149,6 @@ } } - -DATABASES = { - # edxapp's edxapp-migrate scripts and the edxapp_migrate play - # will ensure that any DB not named read_replica will be migrated - # for both the lms and cms. - 'default': { - 'ATOMIC_REQUESTS': True, - 'CONN_MAX_AGE': 0, - 'ENGINE': 'django.db.backends.mysql', - 'HOST': '127.0.0.1', - 'NAME': 'edxapp', - 'OPTIONS': {}, - 'PASSWORD': 'password', - 'PORT': '3306', - 'USER': 'edxapp001' - }, - 'read_replica': { - 'CONN_MAX_AGE': 0, - 'ENGINE': 'django.db.backends.mysql', - 'HOST': '127.0.0.1', - 'NAME': 'edxapp', - 'OPTIONS': {}, - 'PASSWORD': 'password', - 'PORT': '3306', - 'USER': 'edxapp001' - }, - 'student_module_history': { - 'CONN_MAX_AGE': 0, - 'ENGINE': 'django.db.backends.mysql', - 'HOST': '127.0.0.1', - 'NAME': 'edxapp_csmh', - 'OPTIONS': {}, - 'PASSWORD': 'password', - 'PORT': '3306', - 'USER': 'edxapp001' - } -} - - -DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' -DEFAULT_HASHING_ALGORITHM = 'sha256' - HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS = {} MONGODB_LOG = {} @@ -1788,38 +1179,6 @@ "limit_overrides": {}, } -# Some courses are allowed to run unsafe code. This is a list of regexes, one -# of them must match the course id for that course to run unsafe code. -# -# For example: -# -# COURSES_WITH_UNSAFE_CODE = [ -# r"Harvard/XY123.1/.*" -# ] -COURSES_WITH_UNSAFE_CODE = [] - -# Code jail REST service -ENABLE_CODEJAIL_REST_SERVICE = False -# .. setting_name: CODE_JAIL_REST_SERVICE_REMOTE_EXEC -# .. setting_default: 'xmodule.capa.safe_exec.remote_exec.send_safe_exec_request_v0' -# .. setting_description: Set the python package.module.function that is reponsible of -# calling the remote service in charge of jailed code execution -CODE_JAIL_REST_SERVICE_REMOTE_EXEC = 'xmodule.capa.safe_exec.remote_exec.send_safe_exec_request_v0' -# .. setting_name: CODE_JAIL_REST_SERVICE_HOST -# .. setting_default: 'http://127.0.0.1:8550' -# .. setting_description: Set the codejail remote service host -CODE_JAIL_REST_SERVICE_HOST = 'http://127.0.0.1:8550' -# .. setting_name: CODE_JAIL_REST_SERVICE_CONNECT_TIMEOUT -# .. setting_default: 0.5 -# .. setting_description: Set the number of seconds LMS will wait to establish an internal -# connection to the codejail remote service. -CODE_JAIL_REST_SERVICE_CONNECT_TIMEOUT = 0.5 # time in seconds -# .. setting_name: CODE_JAIL_REST_SERVICE_READ_TIMEOUT -# .. setting_default: 3.5 -# .. setting_description: Set the number of seconds LMS will wait for a response from the -# codejail remote service endpoint. -CODE_JAIL_REST_SERVICE_READ_TIMEOUT = 3.5 # time in seconds - # .. setting_name: PYTHON_LIB_FILENAME # .. setting_default: python_lib.zip # .. setting_description: Name of the course file to make available to code in @@ -1828,11 +1187,6 @@ PYTHON_LIB_FILENAME = 'python_lib.zip' ############################### DJANGO BUILT-INS ############################### -# Change DEBUG in your environment settings files, not here -SESSION_COOKIE_SECURE = False -SESSION_SAVE_EVERY_REQUEST = False -SESSION_SERIALIZER = 'openedx.core.lib.session_serializers.PickleSerializer' -SESSION_COOKIE_NAME = 'sessionid' # django-session-cookie middleware DCS_SESSION_COOKIE_SAMESITE = 'None' @@ -1849,8 +1203,6 @@ STUDIO_SHORT_NAME = 'Studio' # Site info -SITE_NAME = "localhost" -HTTPS = 'on' ROOT_URLCONF = 'lms.urls' # NOTE: Please set ALLOWED_HOSTS to some sane value, as we do not allow the default '*' # Platform Email @@ -1871,9 +1223,6 @@ # Account activation email sender address ACTIVATION_EMAIL_FROM_ADDRESS = '' -ADMINS = () -MANAGERS = ADMINS - # Static content STATIC_URL = '/static/' STATIC_ROOT = os.environ.get('STATIC_ROOT_LMS', ENV_ROOT / "staticfiles") @@ -1888,36 +1237,14 @@ XMODULE_ROOT / "static", ] -FAVICON_PATH = 'images/favicon.ico' - -# Locale/Internationalization -CELERY_TIMEZONE = 'UTC' -TIME_ZONE = 'UTC' -LANGUAGE_CODE = 'en' # http://www.i18nguy.com/unicode/language-identifiers.html - -# Languages supported for custom course certificate templates -CERTIFICATE_TEMPLATE_LANGUAGES = { - 'en': 'English', - 'es': 'Español', -} - -USE_I18N = True -USE_L10N = True - -STATICI18N_FILENAME_FUNCTION = 'statici18n.utils.legacy_filename' STATICI18N_ROOT = PROJECT_ROOT / "static" -# Messages -MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' - # Guidelines for translators TRANSLATORS_GUIDE = 'https://docs.openedx.org/en/latest/translators/index.html' #################################### AWS ####################################### # The number of seconds that a generated URL is valid for. AWS_QUERYSTRING_EXPIRE = 10 * 365 * 24 * 60 * 60 # 10 years -AWS_ACCESS_KEY_ID = None -AWS_SECRET_ACCESS_KEY = None ################################# SIMPLEWIKI ################################### SIMPLE_WIKI_REQUIRE_LOGIN_EDIT = True @@ -1972,21 +1299,8 @@ WIKI_LINK_DEFAULT_LEVEL = 2 ##### Zendesk ##### -ZENDESK_URL = '' ZENDESK_USER = None ZENDESK_API_KEY = None -ZENDESK_CUSTOM_FIELDS = {} -ZENDESK_OAUTH_ACCESS_TOKEN = '' -# A mapping of string names to Zendesk Group IDs -# To get the IDs of your groups you can go to -# {zendesk_url}/api/v2/groups.json -ZENDESK_GROUP_ID_MAPPING = {} - -##### EMBARGO ##### -EMBARGO_SITE_REDIRECT_URL = None - -##### shoppingcart Payment ##### -PAYMENT_SUPPORT_EMAIL = 'billing@example.com' # Setting for PAID_COURSE_REGISTRATION, DOES NOT AFFECT VERIFIED STUDENTS PAID_COURSE_REGISTRATION_CURRENCY = ['usd', '$'] @@ -2180,12 +1494,6 @@ 'openedx.core.djangoapps.site_configuration.middleware.SessionCookieDomainOverrideMiddleware', ] -# Clickjacking protection can be disbaled by setting this to 'ALLOW' -X_FRAME_OPTIONS = 'DENY' - -# Platform for Privacy Preferences header -P3P_HEADER = 'CP="Open EdX does not have a P3P policy."' - ############################### PIPELINE ####################################### PIPELINE = { @@ -2590,9 +1898,6 @@ ################################# DJANGO-REQUIRE ############################### -# The baseUrl to pass to the r.js optimizer, relative to STATIC_ROOT. -REQUIRE_BASE_URL = "./" - # The name of a build profile to use for your project, relative to REQUIRE_BASE_URL. # A sensible value would be 'app.build.js'. Leave blank to use the built-in default build profile. # Set to False to disable running the default profile (e.g. if only using it to build Standalone @@ -2602,9 +1907,6 @@ # The name of the require.js script used by your project, relative to REQUIRE_BASE_URL. REQUIRE_JS = "common/js/vendor/require.js" -# Whether to run django-require in debug mode. -REQUIRE_DEBUG = False - # In production, the Django pipeline appends a file hash to JavaScript file names. # This makes it difficult for RequireJS to load its requirements, since module names # specified in JavaScript code do not include the hash. @@ -2661,31 +1963,6 @@ # These packages are added in addition to those added by CELERY_IMPORTS. CELERY_EXTRA_IMPORTS = [] -# Message configuration - -CELERY_TASK_SERIALIZER = 'json' -CELERY_RESULT_SERIALIZER = 'json' - -CELERY_MESSAGE_COMPRESSION = 'gzip' - -# Results configuration - -CELERY_IGNORE_RESULT = False -CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True - -# Events configuration - -CELERY_TRACK_STARTED = True - -CELERY_SEND_EVENTS = True -CELERY_SEND_TASK_SENT_EVENT = True - -# Exchange configuration - -CELERY_DEFAULT_EXCHANGE = 'edx.core' -CELERY_DEFAULT_EXCHANGE_TYPE = 'direct' - - # SERVICE_VARIANT specifies name of the variant used, which decides what JSON # configuration files are read during startup. SERVICE_VARIANT = os.environ.get('SERVICE_VARIANT', "lms") @@ -2718,10 +1995,6 @@ CELERY_ROUTES = "openedx.core.lib.celery.routers.route_task" CELERYBEAT_SCHEDULE = {} # For scheduling tasks, entries can be added to this dict -CELERY_QUEUE_HA_POLICY = 'all' - -CELERY_CREATE_MISSING_QUEUES = True - # let logging work as configured: CELERYD_HIJACK_ROOT_LOGGER = False @@ -2731,49 +2004,8 @@ HEARTBEAT_CELERY_ROUTING_KEY = HIGH_PRIORITY_QUEUE -################################ Block Structures ################################### - -# .. setting_name: BLOCK_STRUCTURES_SETTINGS -# .. setting_default: dict of settings -# .. setting_description: Stores all the settings used by block structures and block structure -# related tasks. See BLOCK_STRUCTURES_SETTINGS[XXX] documentation for details of each setting. -# For more information, check https://github.com/openedx/edx-platform/pull/13388. -BLOCK_STRUCTURES_SETTINGS = dict( - # .. setting_name: BLOCK_STRUCTURES_SETTINGS['COURSE_PUBLISH_TASK_DELAY'] - # .. setting_default: 30 - # .. setting_description: Delay, in seconds, after a new edit of a course is published before - # updating the block structures cache. This is needed for a better chance at getting - # the latest changes when there are secondary reads in sharded mongoDB clusters. - # For more information, check https://github.com/openedx/edx-platform/pull/13388 and - # https://github.com/openedx/edx-platform/pull/14571. - COURSE_PUBLISH_TASK_DELAY=30, - - # .. setting_name: BLOCK_STRUCTURES_SETTINGS['TASK_DEFAULT_RETRY_DELAY'] - # .. setting_default: 30 - # .. setting_description: Delay, in seconds, between retry attempts if a block structure task - # fails. For more information, check https://github.com/openedx/edx-platform/pull/13388 and - # https://github.com/openedx/edx-platform/pull/14571. - TASK_DEFAULT_RETRY_DELAY=30, - - # .. setting_name: BLOCK_STRUCTURES_SETTINGS['TASK_MAX_RETRIES'] - # .. setting_default: 5 - # .. setting_description: Maximum number of retries per block structure task. - # If the maximum number of retries is exceeded, then you can attempt to either manually run - # the celery task, or wait for it to be triggered again. - # For more information, check https://github.com/openedx/edx-platform/pull/13388 and - # https://github.com/openedx/edx-platform/pull/14571. - TASK_MAX_RETRIES=5, -) - ################################ Bulk Email ################################### -# Suffix used to construct 'from' email address for bulk emails. -# A course-specific identifier is prepended. -BULK_EMAIL_DEFAULT_FROM_EMAIL = 'no-reply@example.com' - -# Parameters for breaking down course enrollment into subtasks. -BULK_EMAIL_EMAILS_PER_TASK = 500 - # Initial delay used for retrying tasks. Additional retries use # longer delays. Value is in seconds. BULK_EMAIL_DEFAULT_RETRY_DELAY = 30 @@ -2799,10 +2031,6 @@ # sent to self and staff BULK_EMAIL_JOB_SIZE_THRESHOLD = 100 -# Flag to indicate if individual email addresses should be logged as they are sent -# a bulk email message. -BULK_EMAIL_LOG_SENT_EMAILS = False - # Delay in seconds to sleep between individual mail messages being sent, # when a bulk email task is retried for rate-related reasons. Choose this # value depending on the number of workers that might be sending email in @@ -2814,28 +2042,6 @@ # Minimum age for organization-wide email opt in EMAIL_OPTIN_MINIMUM_AGE = PARENTAL_CONSENT_AGE_LIMIT -############################## Video ########################################## - -YOUTUBE = { - # YouTube JavaScript API - 'API': 'https://www.youtube.com/iframe_api', - - 'TEST_TIMEOUT': 1500, - - # URL to get YouTube metadata - 'METADATA_URL': 'https://www.googleapis.com/youtube/v3/videos/', - - # Web page mechanism for scraping transcript information from youtube video pages - 'TRANSCRIPTS': { - 'CAPTION_TRACKS_REGEX': r"captionTracks\"\:\[(?P[^\]]+)", - 'YOUTUBE_URL_BASE': 'https://www.youtube.com/watch?v=', - 'ALLOWED_LANGUAGE_CODES': ["en", "en-US", "en-GB"], - }, - - 'IMAGE_API': 'http://img.youtube.com/vi/{youtube_id}/0.jpg', # /maxresdefault.jpg for 1920*1080 -} -YOUTUBE_API_KEY = 'PUT_YOUR_API_KEY_HERE' - ################################### APPS ###################################### # The order of INSTALLED_APPS is important, when adding new apps here remember to check that you are not creating new @@ -3182,73 +2388,15 @@ "openedx_learning.apps.authoring.sections", ] -######################### CSRF ######################################### - -# Forwards-compatibility with Django 1.7 -CSRF_COOKIE_AGE = 60 * 60 * 24 * 7 * 52 -# It is highly recommended that you override this in any environment accessed by -# end users -CSRF_COOKIE_SECURE = False - -# If setting a cross-domain cookie, it's really important to choose -# a name for the cookie that is DIFFERENT than the cookies used -# by each subdomain. For example, suppose the applications -# at these subdomains are configured to use the following cookie names: -# -# 1) foo.example.com --> "csrftoken" -# 2) baz.example.com --> "csrftoken" -# 3) bar.example.com --> "csrftoken" -# -# For the cross-domain version of the CSRF cookie, you need to choose -# a name DIFFERENT than "csrftoken"; otherwise, the new token configured -# for ".example.com" could conflict with the other cookies, -# non-deterministically causing 403 responses. -CROSS_DOMAIN_CSRF_COOKIE_NAME = '' - -# When setting the domain for the "cross-domain" version of the CSRF -# cookie, you should choose something like: ".example.com" -# (note the leading dot), where both the referer and the host -# are subdomains of "example.com". -# -# Browser security rules require that -# the cookie domain matches the domain of the server; otherwise -# the cookie won't get set. And once the cookie gets set, the client -# needs to be on a domain that matches the cookie domain, otherwise -# the client won't be able to read the cookie. -CROSS_DOMAIN_CSRF_COOKIE_DOMAIN = '' - - ######################### Django Rest Framework ######################## -# .. setting_name: REGISTRATION_VALIDATION_RATELIMIT -# .. setting_default: 30/7d -# .. setting_description: Whenever a user tries to register on edx, the data entered during registration -# is validated via RegistrationValidationView. -# It's POST endpoint is rate-limited up to 30 requests per IP Address in a week by default. -# It was introduced because an attacker can guess or brute force a series of names to enumerate valid users. -# .. setting_tickets: https://github.com/openedx/edx-platform/pull/24664 -REGISTRATION_VALIDATION_RATELIMIT = '30/7d' - -# .. setting_name: REGISTRATION_RATELIMIT -# .. setting_default: 60/7d -# .. setting_description: New users are registered on edx via RegistrationView. -# It's POST end-point is rate-limited up to 60 requests per IP Address in a week by default. -# Purpose of this setting is to restrict an attacker from registering numerous fake accounts. -# .. setting_tickets: https://github.com/openedx/edx-platform/pull/27060 -REGISTRATION_RATELIMIT = '60/7d' - SWAGGER_SETTINGS = { 'DEFAULT_INFO': 'openedx.core.apidocs.api_info', 'DEEP_LINKING': True, } ######################### MARKETING SITE ############################### -EDXMKTG_LOGGED_IN_COOKIE_NAME = 'edxloggedin' -EDXMKTG_USER_INFO_COOKIE_NAME = 'edx-user-info' -EDXMKTG_USER_INFO_COOKIE_VERSION = 1 -MKTG_URLS = {} -MKTG_URL_OVERRIDES = {} MKTG_URL_LINK_MAP = { 'ABOUT': 'about', 'CONTACT': 'contact', @@ -3270,7 +2418,6 @@ STATIC_TEMPLATE_VIEW_DEFAULT_FILE_EXTENSION = 'html' -SUPPORT_SITE_LINK = '' SEND_ACTIVATION_EMAIL_URL = '' ACTIVATION_EMAIL_SUPPORT_LINK = Derived(lambda settings: settings.SUPPORT_SITE_LINK) ID_VERIFICATION_SUPPORT_LINK = Derived(lambda settings: settings.SUPPORT_SITE_LINK) @@ -3315,15 +2462,6 @@ "reddit", ] -# The footer URLs dictionary maps social footer names -# to URLs defined in configuration. -SOCIAL_MEDIA_FOOTER_ACE_URLS = { - 'reddit': 'http://www.reddit.com/r/edx', - 'twitter': 'https://twitter.com/edXOnline', - 'linkedin': 'http://www.linkedin.com/company/edx', - 'facebook': 'http://www.facebook.com/EdxOnline', -} - # The mobile store URLs dictionary maps mobile store names # to URLs defined in configuration. MOBILE_STORE_ACE_URLS = { @@ -3331,15 +2469,6 @@ 'apple': 'https://itunes.apple.com/us/app/edx/id945480667?mt=8', } -# The social media logo urls dictionary maps social media names -# to the respective icons -SOCIAL_MEDIA_LOGO_URLS = { - 'reddit': 'http://email-media.s3.amazonaws.com/edX/2021/social_5_reddit.png', - 'twitter': 'http://email-media.s3.amazonaws.com/edX/2021/social_2_twitter.png', - 'linkedin': 'http://email-media.s3.amazonaws.com/edX/2021/social_3_linkedin.png', - 'facebook': 'http://email-media.s3.amazonaws.com/edX/2021/social_1_fb.png', -} - # The mobile store logo urls dictionary maps mobile store names # to the respective icons MOBILE_STORE_LOGO_URLS = { @@ -3422,13 +2551,6 @@ #################SOCAIL AUTH OAUTH###################### SOCIAL_AUTH_OAUTH_SECRETS = {} -################# Student Verification ################# -VERIFY_STUDENT = { - "DAYS_GOOD_FOR": 365, # How many days is a verficiation good for? - # The variable represents the window within which a verification is considered to be "expiring soon." - "EXPIRING_SOON_WINDOW": 28, -} - ################# Student Verification Expiry Email ################# VERIFICATION_EXPIRY_EMAIL = { "RESEND_DAYS": 15, @@ -3438,12 +2560,6 @@ ############# Cross-domain requests ################# -if ENABLE_CORS_HEADERS: - CORS_ALLOW_CREDENTIALS = True - CORS_ORIGIN_WHITELIST = () - CORS_ORIGIN_ALLOW_ALL = False - CORS_ALLOW_INSECURE = False - # Set CORS_ALLOW_HEADERS regardless of whether we've enabled ENABLE_CORS_HEADERS # because that decision might happen in a later config file. (The headers to # allow is an application logic, and not site policy.) @@ -3459,12 +2575,6 @@ # to simulate cross-domain requests. XDOMAIN_PROXY_CACHE_TIMEOUT = 60 * 15 -# .. setting_name: LOGIN_REDIRECT_WHITELIST -# .. setting_default: empty list ([]) -# .. setting_description: While logout, if logout request has a redirect-url as query strings, -# then the redirect-url is validated through LOGIN_REDIRECT_WHITELIST. -LOGIN_REDIRECT_WHITELIST = [] - ###################### Registration ################################## # .. setting_name: REGISTRATION_EXTRA_FIELDS @@ -3515,9 +2625,6 @@ "terms_of_service", ] -# String length for the configurable part of the auto-generated username -AUTO_GENERATED_USERNAME_RANDOM_STRING_LENGTH = 4 - REGISTRATION_CODE_LENGTH = 8 ########################## CERTIFICATE NAME ######################## @@ -3531,31 +2638,6 @@ RECALCULATE_GRADES_ROUTING_KEY = 'edx.lms.core.default' -GRADES_DOWNLOAD = { - 'STORAGE_CLASS': 'django.core.files.storage.FileSystemStorage', - 'STORAGE_KWARGS': { - 'location': '/tmp/edx-s3/grades', - }, - 'STORAGE_TYPE': None, - 'BUCKET': None, - 'ROOT_PATH': None, -} - -FINANCIAL_REPORTS = { - 'STORAGE_TYPE': 'localfs', - 'BUCKET': None, - 'ROOT_PATH': 'sandbox', -} - -#### Grading policy change-related settings ##### -# Rate limit for regrading tasks that a grading policy change can kick off -POLICY_CHANGE_TASK_RATE_LIMIT = '900/h' - -#### PASSWORD POLICY SETTINGS ##### -PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG = { - 'ENFORCE_COMPLIANCE_ON_LOGIN': False -} - ############################ ORA 2 ############################################ ORA_WORKFLOW_UPDATE_ROUTING_KEY = "edx.lms.core.ora_workflow_update" @@ -3572,66 +2654,11 @@ # .. setting_description: Amount of time before a lease on a staff submission expires ORA_STAFF_LEASE_EXPIRATION_HOURS = 8 -# Default File Upload Storage bucket and prefix. Used by the FileUpload Service. -FILE_UPLOAD_STORAGE_BUCKET_NAME = 'SET-ME-PLEASE (ex. bucket-name)' -FILE_UPLOAD_STORAGE_PREFIX = 'submissions_attachments' - -##### ACCOUNT LOCKOUT DEFAULT PARAMETERS ##### -# .. setting_name: MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED -# .. setting_default: 6 -# .. setting_description: Specifies the maximum failed login attempts allowed to users. Once the user reaches this -# failure threshold then the account will be locked for a configurable amount of seconds (30 minutes) which will -# prevent additional login attempts until this time period has passed. This setting is related with -# MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS and only used when ENABLE_MAX_FAILED_LOGIN_ATTEMPTS is enabled. -MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED = 6 - -# .. setting_name: MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS -# .. setting_default: 30 * 60 -# .. setting_description: Specifies the lockout period in seconds for consecutive failed login attempts. Once the user -# reaches the threshold of the login failure, then the account will be locked for the given amount of seconds -# (30 minutes) which will prevent additional login attempts until this time period has passed. This setting is -# related with MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED and only used when ENABLE_MAX_FAILED_LOGIN_ATTEMPTS is enabled. -MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS = 30 * 60 - - ##### LMS DEADLINE DISPLAY TIME_ZONE ####### TIME_ZONE_DISPLAYED_FOR_DEADLINES = 'UTC' - -########################## VIDEO IMAGE STORAGE ############################ - -VIDEO_IMAGE_SETTINGS = dict( - VIDEO_IMAGE_MAX_BYTES=2 * 1024 * 1024, # 2 MB - VIDEO_IMAGE_MIN_BYTES=2 * 1024, # 2 KB - # Backend storage - # STORAGE_CLASS='storages.backends.s3boto3.S3Boto3Storage', - # STORAGE_KWARGS=dict(bucket='video-image-bucket'), - STORAGE_KWARGS=dict( - location=MEDIA_ROOT, - ), - DIRECTORY_PREFIX='video-images/', - BASE_URL=MEDIA_URL, - -) - -VIDEO_IMAGE_MAX_AGE = 31536000 - ########################## VIDEO TRANSCRIPTS STORAGE ############################ -VIDEO_TRANSCRIPTS_SETTINGS = dict( - VIDEO_TRANSCRIPTS_MAX_BYTES=3 * 1024 * 1024, # 3 MB - # Backend storage - # STORAGE_CLASS='storages.backends.s3boto3.S3Boto3Storage', - # STORAGE_KWARGS=dict(bucket='video-transcripts-bucket'), - STORAGE_KWARGS=dict( - location=MEDIA_ROOT, - ), - DIRECTORY_PREFIX='video-transcripts/', - BASE_URL=MEDIA_URL, -) - -VIDEO_TRANSCRIPTS_MAX_AGE = 31536000 - ### Apps only installed in some instances # The order of INSTALLED_APPS matters, so this tuple is the app name and the item in INSTALLED_APPS # that this app should be inserted *before*. A None here means it should be appended to the list. @@ -3693,14 +2720,9 @@ except (IndexError, ValueError): INSTALLED_APPS.append(app_name) -### External auth usage -- prefixes for ENROLLMENT_DOMAIN -SHIBBOLETH_DOMAIN_PREFIX = 'shib:' - ### Analytics API ANALYTICS_API_KEY = "" ANALYTICS_API_URL = "http://localhost:18100" -ANALYTICS_DASHBOARD_URL = 'http://localhost:18110/courses' -ANALYTICS_DASHBOARD_NAME = 'Your Platform Name Here Insights' # REGISTRATION CODES DISPLAY INFORMATION SUBTITUTIONS IN THE INVOICE ATTACHMENT INVOICE_CORP_ADDRESS = "Please place your corporate address\nin this configuration" @@ -3714,27 +2736,6 @@ 'XK': _('Kosovo'), } -# which access.py permission name to check in order to determine if a course is visible in -# the course catalog. We default this to the legacy permission 'see_exists'. -COURSE_CATALOG_VISIBILITY_PERMISSION = 'see_exists' - -# which access.py permission name to check in order to determine if a course about page is -# visible. We default this to the legacy permission 'see_exists'. -COURSE_ABOUT_VISIBILITY_PERMISSION = 'see_exists' - -DEFAULT_COURSE_VISIBILITY_IN_CATALOG = "both" - -# .. toggle_name: DEFAULT_MOBILE_AVAILABLE -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: This specifies if the courses are available for mobile by default. To make any individual -# course available for mobile one can set the value of Mobile Course Available to true in Advanced Settings from the -# studio when this is False. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2021-01-26 -# .. toggle_tickets: https://openedx.atlassian.net/browse/OSPR-1985 -DEFAULT_MOBILE_AVAILABLE = False - # Enrollment API Cache Timeout ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT = 60 @@ -3755,8 +2756,6 @@ # Height of the Co-brand Logo in mm PDF_RECEIPT_COBRAND_LOGO_HEIGHT_MM = 12 -# Use None for the default search engine -SEARCH_ENGINE = None # Use LMS specific search initializer SEARCH_INITIALIZER = "lms.lib.courseware_search.lms_search_initializer.LmsSearchInitializer" # Use the LMS specific result processor @@ -3878,15 +2877,9 @@ FIRST_PURCHASE_DISCOUNT_OVERRIDE_PERCENTAGE = 15 # E-Commerce API Configuration -ECOMMERCE_PUBLIC_URL_ROOT = 'http://localhost:8002' -ECOMMERCE_API_URL = 'http://localhost:8002/api/v2' ECOMMERCE_API_TIMEOUT = 5 ECOMMERCE_ORDERS_API_CACHE_TIMEOUT = 3600 ECOMMERCE_SERVICE_WORKER_USERNAME = 'ecommerce_worker' -ECOMMERCE_API_SIGNING_KEY = 'SET-ME-PLEASE' - -# Exam Service -EXAMS_SERVICE_URL = 'http://localhost:18740/api/v1' ############## Settings for JWT token handling ############## TOKEN_SIGNING = { @@ -3903,14 +2896,6 @@ # This will output asymmetric JWTs to use here. Read more on this on: # https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0008-use-asymmetric-jwts.rst -COURSE_CATALOG_URL_ROOT = 'http://localhost:8008' -COURSE_CATALOG_API_URL = f'{COURSE_CATALOG_URL_ROOT}/api/v1' - -CREDENTIALS_INTERNAL_SERVICE_URL = 'http://localhost:8005' -CREDENTIALS_PUBLIC_SERVICE_URL = 'http://localhost:8005' -# time between scheduled runs, in seconds -NOTIFY_CREDENTIALS_FREQUENCY = 14400 - COMMENTS_SERVICE_URL = '' COMMENTS_SERVICE_KEY = '' @@ -3944,26 +2929,6 @@ COURSE_MEMBER_API_ENROLLMENT_LIMIT = 1000 ################################ Settings for Credit Courses ################################ -# Initial delay used for retrying tasks. -# Additional retries use longer delays. -# Value is in seconds. -CREDIT_TASK_DEFAULT_RETRY_DELAY = 30 - -# Maximum number of retries per task for errors that are not related -# to throttling. -CREDIT_TASK_MAX_RETRIES = 5 - -# Secret keys shared with credit providers. -# Used to digitally sign credit requests (us --> provider) -# and validate responses (provider --> us). -# Each key in the dictionary is a credit provider ID, and -# the value is the 32-character key. -CREDIT_PROVIDER_SECRET_KEYS = {} - -# Maximum age in seconds of timestamps we will accept -# when a credit provider notifies us that a student has been approved -# or denied for credit. -CREDIT_PROVIDER_TIMESTAMP_EXPIRATION = 15 * 60 # The Help link to the FAQ page about the credit CREDIT_HELP_LINK_URL = "" @@ -4003,15 +2968,6 @@ ################################ Settings for JWTs ################################ -JWT_ISSUER = 'http://127.0.0.1:8000/oauth2' -DEFAULT_JWT_ISSUER = { - 'ISSUER': 'http://127.0.0.1:8000/oauth2', - 'AUDIENCE': 'change-me', - 'SECRET_KEY': 'SET-ME-PLEASE' -} -JWT_EXPIRATION = 30 -JWT_PRIVATE_SIGNING_KEY = None - EDX_DRF_EXTENSIONS = { # Set this value to an empty dict in order to prevent automatically updating # user data from values in (possibly stale) JWTs. @@ -4070,65 +3026,15 @@ ################################ Settings for Credentials Service ################################ -CREDENTIALS_SERVICE_USERNAME = 'credentials_service_user' CREDENTIALS_GENERATION_ROUTING_KEY = Derived(lambda settings: settings.DEFAULT_PRIORITY_QUEUE) CREDENTIALS_COURSE_COMPLETION_STATE = 'awarded' # Queue to use for award program certificates PROGRAM_CERTIFICATES_ROUTING_KEY = Derived(lambda settings: settings.DEFAULT_PRIORITY_QUEUE) -# .. setting_name: COMPREHENSIVE_THEME_DIRS -# .. setting_default: [] -# .. setting_description: A list of paths to directories, each of which will -# be searched for comprehensive themes. Do not override this Django setting directly. -# Instead, set the COMPREHENSIVE_THEME_DIRS environment variable, using colons (:) to -# separate paths. -COMPREHENSIVE_THEME_DIRS = os.environ.get("COMPREHENSIVE_THEME_DIRS", "").split(":") - -# .. setting_name: DEFAULT_SITE_THEME -# .. setting_default: None -# .. setting_description: Theme to use when no site or site theme is defined, for example -# "dark-theme". Set to None if you want to use openedx default theme. -# .. setting_warning: The theme folder needs to be in 'edx-platform/themes' or define the path -# to the theme folder in COMPREHENSIVE_THEME_DIRS. To be effective, ENABLE_COMPREHENSIVE_THEMING -# has to be enabled. -DEFAULT_SITE_THEME = None - -# .. toggle_name: ENABLE_COMPREHENSIVE_THEMING -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When enabled, this toggle activates the use of the custom theme -# defined by DEFAULT_SITE_THEME. -# .. toggle_use_cases: open_edx -# .. toggle_creation_date: 2016-06-30 -ENABLE_COMPREHENSIVE_THEMING = False - -# .. setting_name: CUSTOM_RESOURCE_TEMPLATES_DIRECTORY -# .. setting_default: None -# .. setting_description: Path to an existing directory of YAML files containing -# html content to be used with the subclasses of xmodule.x_module.ResourceTemplates. -# Default example templates can be found in xmodule/templates/html. -# Note that the extension used is ".yaml" and not ".yml". -# See xmodule.x_module.ResourceTemplates for usage. -# "CUSTOM_RESOURCE_TEMPLATES_DIRECTORY" : null -CUSTOM_RESOURCE_TEMPLATES_DIRECTORY = None - -# API access management -API_ACCESS_FROM_EMAIL = 'api-requests@example.com' -API_ACCESS_MANAGER_EMAIL = 'api-access@example.com' - -# Affiliate cookie tracking -AFFILIATE_COOKIE_NAME = 'dev_affiliate_id' - ############## Settings for LMS Context Sensitive Help ############## HELP_TOKENS_INI_FILE = REPO_ROOT / "lms" / "envs" / "help_tokens.ini" -HELP_TOKENS_LANGUAGE_CODE = Derived(lambda settings: settings.LANGUAGE_CODE) -HELP_TOKENS_VERSION = Derived(lambda settings: doc_version()) -HELP_TOKENS_BOOKS = { - 'learner': 'https://edx.readthedocs.io/projects/open-edx-learner-guide', - 'course_author': 'https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course', -} ############## OPEN EDX ENTERPRISE SERVICE CONFIGURATION ###################### # The Open edX Enterprise service is currently hosted via the LMS container/process. @@ -4143,16 +3049,9 @@ ) ENTERPRISE_COURSE_ENROLLMENT_AUDIT_MODES = ['audit', 'honor'] ENTERPRISE_SUPPORT_URL = '' -ENTERPRISE_CUSTOMER_CATALOG_DEFAULT_CONTENT_FILTER = {} ENTERPRISE_CUSTOMER_SUCCESS_EMAIL = "customersuccess@edx.org" ENTERPRISE_INTEGRATIONS_EMAIL = "enterprise-integrations@edx.org" - -# The setting key maps to the channel code (e.g. 'SAP' for success factors), Channel code is defined as -# part of django model of each integrated channel in edx-enterprise. -# The absence of a key/value pair translates to NO LIMIT on the number of "chunks" transmitted per cycle. -INTEGRATED_CHANNELS_API_CHUNK_TRANSMISSION_LIMIT = {} - ############## ENTERPRISE SERVICE API CLIENT CONFIGURATION ###################### # The LMS communicates with the Enterprise service via the requests.Session() client # These default settings are utilized by the LMS when interacting with the service, @@ -4172,8 +3071,6 @@ ) ) ENTERPRISE_CONSENT_API_URL = DEFAULT_ENTERPRISE_CONSENT_API_URL -ENTERPRISE_SERVICE_WORKER_USERNAME = 'enterprise_worker' -ENTERPRISE_API_CACHE_TIMEOUT = 3600 # Value is in seconds ENTERPRISE_CUSTOMER_LOGO_IMAGE_SIZE = 512 # Enterprise logo image size limit in KB's # Defines the usernames of service users who should be throttled # at a higher rate than normal users when making requests of enterprise endpoints. @@ -4221,7 +3118,7 @@ 'country', ] ENTERPRISE_CUSTOMER_COOKIE_NAME = 'enterprise_customer_uuid' -BASE_COOKIE_DOMAIN = 'localhost' + SYSTEM_TO_FEATURE_ROLE_MAPPING = { ENTERPRISE_LEARNER_ROLE: [ DEFAULT_ENTERPRISE_ENROLLMENT_INTENTIONS_ROLE, @@ -4250,8 +3147,6 @@ DATA_CONSENT_SHARE_CACHE_TIMEOUT = 8 * 60 * 60 # 8 hours -ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS = {} -ENTERPRISE_TAGLINE = '' TRANSCRIPT_LANG_CACHE_TIMEOUT = 60 * 60 * 24 # 24 hours @@ -4259,15 +3154,8 @@ COURSES_API_CACHE_TIMEOUT = 3600 # Value is in seconds - -# Initialize to 'unknown', but read from JSON in production.py -EDX_PLATFORM_REVISION = 'release' - ############## Settings for Completion API ######################### -# Once a user has watched this percentage of a video, mark it as complete: -# (0.0 = 0%, 1.0 = 100%) -COMPLETION_VIDEO_COMPLETE_PERCENTAGE = 0.95 COMPLETION_BY_VIEWING_DELAY_MS = 5000 ############### Settings for Django Rate limit ##################### @@ -4293,121 +3181,9 @@ # .. setting_tickets: https://github.com/openedx/edx-platform/pull/16951 RATELIMIT_RATE = '120/m' -##### LOGISTRATION RATE LIMIT SETTINGS ##### -LOGISTRATION_RATELIMIT_RATE = '100/5m' -LOGISTRATION_PER_EMAIL_RATELIMIT_RATE = '30/5m' -LOGISTRATION_API_RATELIMIT = '20/m' -LOGIN_AND_REGISTER_FORM_RATELIMIT = '100/5m' -RESET_PASSWORD_TOKEN_VALIDATE_API_RATELIMIT = '30/7d' -RESET_PASSWORD_API_RATELIMIT = '30/7d' -OPTIONAL_FIELD_API_RATELIMIT = '10/h' - -##### PASSWORD RESET RATE LIMIT SETTINGS ##### -PASSWORD_RESET_IP_RATE = '1/m' -PASSWORD_RESET_EMAIL_RATE = '2/h' - # Keeping this for back compatibility with learner dashboard api GENERAL_RECOMMENDATION = {} -############### Settings for Retirement ##################### -# .. setting_name: RETIRED_USERNAME_PREFIX -# .. setting_default: retired__user_ -# .. setting_description: Set the prefix part of hashed usernames for retired users. Used by the derived -# setting RETIRED_USERNAME_FMT. -RETIRED_USERNAME_PREFIX = 'retired__user_' -# .. setting_name: RETIRED_EMAIL_PREFIX -# .. setting_default: retired__user_ -# .. setting_description: Set the prefix part of hashed emails for retired users. Used by the derived -# setting RETIRED_EMAIL_FMT. -RETIRED_EMAIL_PREFIX = 'retired__user_' -# .. setting_name: RETIRED_EMAIL_DOMAIN -# .. setting_default: retired.invalid -# .. setting_description: Set the domain part of hashed emails for retired users. Used by the derived -# setting RETIRED_EMAIL_FMT. -RETIRED_EMAIL_DOMAIN = 'retired.invalid' -# .. setting_name: RETIRED_USERNAME_FMT -# .. setting_default: retired__user_{} -# .. setting_description: Set the format a retired user username field gets transformed into, where {} -# is replaced with the hash of the original username. This is a derived setting that depends on -# RETIRED_USERNAME_PREFIX value. -RETIRED_USERNAME_FMT = Derived(lambda settings: settings.RETIRED_USERNAME_PREFIX + '{}') -# .. setting_name: RETIRED_EMAIL_FMT -# .. setting_default: retired__user_{}@retired.invalid -# .. setting_description: Set the format a retired user email field gets transformed into, where {} is -# replaced with the hash of the original email. This is a derived setting that depends on -# RETIRED_EMAIL_PREFIX and RETIRED_EMAIL_DOMAIN values. -RETIRED_EMAIL_FMT = Derived(lambda settings: settings.RETIRED_EMAIL_PREFIX + '{}@' + settings.RETIRED_EMAIL_DOMAIN) -# .. setting_name: RETIRED_USER_SALTS -# .. setting_default: ['abc', '123'] -# .. setting_description: Set a list of salts used for hashing usernames and emails on users retirement. -# .. setting_warning: Only the last item in this list is used as a salt for all new retirements, but -# historical salts are preserved in order to guarantee that all hashed usernames and emails can still -# be checked. -RETIRED_USER_SALTS = ['abc', '123'] -# .. setting_name: RETIREMENT_SERVICE_WORKER_USERNAME -# .. setting_default: RETIREMENT_SERVICE_USER -# .. setting_description: Set the username of the retirement service worker user. Retirement scripts -# authenticate with LMS as this user with oauth client credentials. -RETIREMENT_SERVICE_WORKER_USERNAME = 'RETIREMENT_SERVICE_USER' - -# These states are the default, but are designed to be overridden in configuration. -# .. setting_name: RETIREMENT_STATES -# .. setting_default: -# [ -# 'PENDING', -# 'LOCKING_ACCOUNT', -# 'LOCKING_COMPLETE', -# 'RETIRING_FORUMS', -# 'FORUMS_COMPLETE', -# 'RETIRING_EMAIL_LISTS', -# 'EMAIL_LISTS_COMPLETE', -# 'RETIRING_ENROLLMENTS', -# 'ENROLLMENTS_COMPLETE', -# 'RETIRING_NOTES', -# 'NOTES_COMPLETE', -# 'RETIRING_LMS', -# 'LMS_COMPLETE', -# 'ERRORED', -# 'ABORTED', -# 'COMPLETE', -# ] -# .. setting_description: Set a list that defines the name and order of states for the retirement -# workflow. -# .. setting_warning: These states are stored in the database and it is the responsibility of the -# administrator to populate the state list since the states can vary across different installations. -# There must be, at minimum, a PENDING state at the beginning, and COMPLETED, ERRORED, and ABORTED -# states at the end of the list. -RETIREMENT_STATES = [ - 'PENDING', - - 'LOCKING_ACCOUNT', - 'LOCKING_COMPLETE', - - # Use these states only when ENABLE_DISCUSSION_SERVICE is True. - 'RETIRING_FORUMS', - 'FORUMS_COMPLETE', - - # TODO - Change these states to be the LMS-only email opt-out - PLAT-2189 - 'RETIRING_EMAIL_LISTS', - 'EMAIL_LISTS_COMPLETE', - - 'RETIRING_ENROLLMENTS', - 'ENROLLMENTS_COMPLETE', - - # Use these states only when ENABLE_STUDENT_NOTES is True. - 'RETIRING_NOTES', - 'NOTES_COMPLETE', - - 'RETIRING_LMS', - 'LMS_COMPLETE', - - 'ERRORED', - 'ABORTED', - 'COMPLETE', -] - -USERNAME_REPLACEMENT_WORKER = "REPLACE WITH VALID USERNAME" - ############## Settings for Microfrontends ######################### # If running a Gradebook container locally, # modify lms/envs/private.py to give it a non-null value @@ -4419,19 +3195,10 @@ # learner_profile.redirect_to_microfrontend waffle flag PROFILE_MICROFRONTEND_URL = None ORDER_HISTORY_MICROFRONTEND_URL = None -# .. setting_name: ACCOUNT_MICROFRONTEND_URL -# .. setting_default: None -# .. setting_description: Base URL of the micro-frontend-based account settings page. -# .. setting_warning: Also set site's ENABLE_ACCOUNT_MICROFRONTEND and -# account.redirect_to_microfrontend waffle flag -ACCOUNT_MICROFRONTEND_URL = None + AUTHN_MICROFRONTEND_URL = None AUTHN_MICROFRONTEND_DOMAIN = None PROGRAM_CONSOLE_MICROFRONTEND_URL = None -# .. setting_name: LEARNING_MICROFRONTEND_URL -# .. setting_default: None -# .. setting_description: Base URL of the micro-frontend-based courseware page. -LEARNING_MICROFRONTEND_URL = None # .. setting_name: ORA_GRADING_MICROFRONTEND_URL # .. setting_default: None # .. setting_description: Base URL of the micro-frontend-based openassessment grading page. @@ -4446,15 +3213,6 @@ # .. setting_warning: Also set site's openresponseassessment.mfe_views # waffle flag. ORA_MICROFRONTEND_URL = None -# .. setting_name: DISCUSSIONS_MICROFRONTEND_URL -# .. setting_default: None -# .. setting_description: Base URL of the micro-frontend-based discussions page. -# .. setting_warning: Also set site's courseware.discussions_mfe waffle flag. -DISCUSSIONS_MICROFRONTEND_URL = None -# .. setting_name: DISCUSSIONS_MFE_FEEDBACK_URL -# .. setting_default: None -# .. setting_description: Base URL of the discussions micro-frontend google form based feedback. -DISCUSSIONS_MFE_FEEDBACK_URL = None # .. setting_name: EXAMS_DASHBOARD_MICROFRONTEND_URL # .. setting_default: None # .. setting_description: Base URL of the exams dashboard micro-frontend for instructors. @@ -4534,17 +3292,6 @@ # See ENABLE_AUTHN_LOGIN_BLOCK_HIBP_POLICY for more details. HIBP_LOGIN_BLOCK_PASSWORD_FREQUENCY_THRESHOLD = 5.0 -# .. toggle_name: ENABLE_DYNAMIC_REGISTRATION_FIELDS -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: When enabled, this toggle adds fields configured in -# REGISTRATION_EXTRA_FIELDS to Authn MFE -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2022-04-21 -# .. toggle_target_removal_date: None -# .. toggle_tickets: https://openedx.atlassian.net/browse/VAN-838 -ENABLE_DYNAMIC_REGISTRATION_FIELDS = False - ############## Settings for EmailChangeMiddleware ############### # .. toggle_name: ENFORCE_SESSION_EMAIL_MATCH @@ -4566,34 +3313,17 @@ ACE_ROUTING_KEY = ace_common_settings.ACE_ROUTING_KEY ############### Settings swift ##################################### -SWIFT_USERNAME = None -SWIFT_KEY = None -SWIFT_TENANT_ID = None -SWIFT_TENANT_NAME = None -SWIFT_AUTH_URL = None -SWIFT_AUTH_VERSION = None -SWIFT_REGION_NAME = None SWIFT_USE_TEMP_URLS = None -SWIFT_TEMP_URL_KEY = None -SWIFT_TEMP_URL_DURATION = 1800 # seconds ############### Settings for facebook ############################## FACEBOOK_APP_ID = None FACEBOOK_APP_SECRET = None FACEBOOK_API_VERSION = None -############### Settings for django-fernet-fields ################## -FERNET_KEYS = [ - 'DUMMY KEY CHANGE BEFORE GOING TO PRODUCTION', -] - ############### Settings for user-state-client ################## # Maximum number of rows to fetch in XBlockUserStateClient calls. Adjust for performance USER_STATE_BATCH_SIZE = 5000 -############### Settings for edx-rbac ############### -SYSTEM_WIDE_ROLE_CLASSES = [] - ############## Plugin Django Apps ######################### from edx_django_utils.plugins import get_plugin_apps, add_plugins # pylint: disable=wrong-import-position,wrong-import-order @@ -4601,8 +3331,6 @@ INSTALLED_APPS.extend(get_plugin_apps(ProjectType.LMS)) add_plugins(__name__, ProjectType.LMS, SettingsType.COMMON) -DEPRECATED_ADVANCED_COMPONENT_TYPES = [] - ############### Settings for video pipeline ################## VIDEO_UPLOAD_PIPELINE = { 'VEM_S3_BUCKET': '', @@ -4610,16 +3338,6 @@ 'ROOT_PATH': '', } -############### Settings for django file storage ################## -STORAGES = { - 'default': { - 'BACKEND': 'django.core.files.storage.FileSystemStorage' - }, - 'staticfiles': { - 'BACKEND': 'openedx.core.storage.ProductionStorage' - } -} - ### Proctoring configuration (redirct URLs and keys shared between systems) #### PROCTORING_BACKENDS = { 'DEFAULT': 'null', @@ -4630,12 +3348,6 @@ PROCTORED_EXAM_VIEWABLE_PAST_DUE = False -############### The SAML private/public key values ################ -SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "" -SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "" -SOCIAL_AUTH_SAML_SP_PRIVATE_KEY_DICT = {} -SOCIAL_AUTH_SAML_SP_PUBLIC_CERT_DICT = {} - ######################### rate limit for yt_video_metadata api ############## RATE_LIMIT_FOR_VIDEO_METADATA_API = '10/minute' @@ -4643,8 +3355,6 @@ ########################## MAILCHIMP SETTINGS ################################# MAILCHIMP_NEW_USER_LIST_ID = "" -SYSLOG_SERVER = '' -FEEDBACK_SUBMISSION_EMAIL = '' GITHUB_REPO_ROOT = '/edx/var/edxapp/data' ##################### SUPPORT URL ############################ @@ -4661,42 +3371,9 @@ # https://github.com/SmileyChris/django-countries#show-certain-countries-first COUNTRIES_FIRST = [] -################# Settings for brand logos. ################# -LOGO_IMAGE_EXTRA_TEXT = '' -LOGO_URL = None -LOGO_URL_PNG = None -LOGO_TRADEMARK_URL = None -FAVICON_URL = None -DEFAULT_EMAIL_LOGO_URL = 'https://edx-cdn.org/v3/default/logo.png' - -################# Settings for olx validation. ################# -COURSE_OLX_VALIDATION_STAGE = 1 -COURSE_OLX_VALIDATION_IGNORE_LIST = None - -################# show account activate cta after register ######################## -SHOW_ACTIVATE_CTA_POPUP_COOKIE_NAME = 'show-account-activation-popup' -# .. toggle_name: SOME_FEATURE_NAME -# .. toggle_implementation: DjangoSetting -# .. toggle_default: False -# .. toggle_description: Flag would be used to show account activation popup after the registration -# .. toggle_use_cases: open_edx -# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/27661 -# .. toggle_creation_date: 2021-06-10 -SHOW_ACCOUNT_ACTIVATION_CTA = False - ################# Documentation links for course apps ################# -# pylint: disable=line-too-long -CALCULATOR_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/add_calculator.html" -DISCUSSIONS_HELP_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_discussions.html" -EDXNOTES_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/enable_notes.html" -PROGRESS_HELP_URL = "https://docs.openedx.org/en/latest/educators/references/data/progress_page.html" -TEAMS_HELP_URL = "https://docs.openedx.org/en/latest/educators/navigation/advanced_features.html#use-teams-in-your-course" -TEXTBOOKS_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/manage_textbooks.html" -WIKI_HELP_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_wiki.html" -CUSTOM_PAGES_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/manage_custom_page.html" COURSE_BULK_EMAIL_HELP_URL = "https://docs.openedx.org/en/latest/educators/references/communication/bulk_email.html" -ORA_SETTINGS_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/Manage_ORA_Assignment.html" ################# Bulk Course Email Settings ################# # If set, recipients of bulk course email messages will be filtered based on the last_login date of their User account. @@ -4733,9 +3410,6 @@ FINANCIAL_ASSISTANCE_APPLICATION_STATUS_URL = "/core/api/financial_assistance_application/status/" CREATE_FINANCIAL_ASSISTANCE_APPLICATION_URL = '/core/api/financial_assistance_applications' -# keys for big blue button live provider -COURSE_LIVE_GLOBAL_CREDENTIALS = {} - # .. toggle_name: ENABLE_MFE_CONFIG_API # .. toggle_implementation: DjangoSetting # .. toggle_default: False @@ -4812,13 +3486,8 @@ AVAILABLE_DISCUSSION_TOURS = [] ############## NOTIFICATIONS ############## -NOTIFICATIONS_EXPIRY = 60 -EXPIRED_NOTIFICATIONS_DELETE_BATCH_SIZE = 10000 -NOTIFICATION_CREATION_BATCH_SIZE = 76 -NOTIFICATIONS_DEFAULT_FROM_EMAIL = "no-reply@example.com" NOTIFICATION_TYPE_ICONS = {} DEFAULT_NOTIFICATION_ICON_URL = "" -NOTIFICATION_DIGEST_LOGO = DEFAULT_EMAIL_LOGO_URL ############## SELF PACED EMAIL ############## SELF_PACED_BANNER_URL = "" @@ -4836,13 +3505,6 @@ # .. eg ['BTDx', 'MYTx'] DISABLED_ORGS_FOR_PROGRAM_NUDGE = [] -############################ AI_TRANSLATIONS ################################## -AI_TRANSLATIONS_API_URL = 'http://localhost:18760/api/v1' - -#### django-simple-history## -# disable indexing on date field its coming from django-simple-history. -SIMPLE_HISTORY_DATE_INDEX = False - def _should_send_certificate_events(settings): return settings.SEND_LEARNING_CERTIFICATE_LIFECYCLE_EVENTS_TO_BUS @@ -4850,9 +3512,6 @@ def _should_send_certificate_events(settings): #### Event bus producing #### -def _should_send_learning_badge_events(settings): - return settings.BADGES_ENABLED - # .. setting_name: EVENT_BUS_PRODUCER_CONFIG # .. setting_default: all events disabled # .. setting_description: Dictionary of event_types mapped to dictionaries of topic to topic-related configuration. @@ -4932,19 +3591,17 @@ def _should_send_learning_badge_events(settings): "org.openedx.learning.course.passing.status.updated.v1": { "learning-badges-lifecycle": { "event_key_field": "course_passing_status.course.course_key", - "enabled": Derived(_should_send_learning_badge_events), + "enabled": Derived(should_send_learning_badge_events), }, }, "org.openedx.learning.ccx.course.passing.status.updated.v1": { "learning-badges-lifecycle": { "event_key_field": "course_passing_status.course.ccx_course_key", - "enabled": Derived(_should_send_learning_badge_events), + "enabled": Derived(should_send_learning_badge_events), }, }, } -BEAMER_PRODUCT_ID = "" - #### Survey Report #### # .. toggle_name: SURVEY_REPORT_ENABLE # .. toggle_implementation: DjangoSetting diff --git a/openedx/envs/common.py b/openedx/envs/common.py index 31fdf1903e6e..18fa201382a6 100644 --- a/openedx/envs/common.py +++ b/openedx/envs/common.py @@ -6,6 +6,14 @@ Service-specific settings should import from this module and override as needed. +WARNING: Mutable values defined in this file may be unintentionally modified +downstream, if settings are shared across services. Some settings modules +(cms/envs/common.py, cms/envs/test.py) import settings across services +(the CMS imports settings from the LMS). In such cases, if an LMS settings +module modifies a mutable value defined here, the final value of the corresponding +CMS setting may also be affected. To avoid this risk, create a deep copy of the +value in the module that modifies it. + Note: More settings will be added to this file as the effort to simplify settings moves forward. See docs/decisions/0022-settings-simplification.rst for more details on the effort to simplify settings across Open edX services. @@ -23,7 +31,7 @@ def center_with_hashes(text: str, width: int = 76): from django.utils.translation import gettext_lazy as _ from openedx.core.lib.derived import Derived - +from openedx.core.release import doc_version from openedx.core.djangoapps.theming.helpers_dirs import ( get_themes_unchecked, get_theme_base_dirs_from_settings @@ -101,9 +109,61 @@ def _make_locale_paths(settings): SESSION_COOKIE_DOMAIN = None SESSION_COOKIE_HTTPONLY = True +SESSION_COOKIE_NAME = 'sessionid' +SESSION_COOKIE_SECURE = False SESSION_ENGINE = 'django.contrib.sessions.backends.cache' +SESSION_SAVE_EVERY_REQUEST = False +SESSION_SERIALIZER = 'openedx.core.lib.session_serializers.PickleSerializer' -STATICI18N_OUTPUT_DIR = "js/i18n" +ADMINS = [] +MANAGERS = ADMINS + +DEFAULT_FROM_EMAIL = 'registration@example.com' +SERVER_EMAIL = 'devops@example.com' + +# See https://github.com/openedx/edx-django-sites-extensions for more info. +# Default site to use if site matching request headers does not exist. +SITE_ID = 1 + +# Clickjacking protection can be disbaled by setting this to 'ALLOW' +X_FRAME_OPTIONS = 'DENY' + +AUTH_PASSWORD_VALIDATORS = [ + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "common.djangoapps.util.password_policy_validators.MinimumLengthValidator", + "OPTIONS": { + "min_length": 8 + } + }, + { + "NAME": "common.djangoapps.util.password_policy_validators.MaximumLengthValidator", + "OPTIONS": { + "max_length": 75 + } + }, +] + +STORAGES = { + 'default': { + 'BACKEND': 'django.core.files.storage.FileSystemStorage' + }, + 'staticfiles': { + 'BACKEND': 'openedx.core.storage.ProductionStorage' + } +} + +# Messages +MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' + +# these languages display right to left +LANGUAGES_BIDI = ("he", "ar", "fa", "ur", "fa-ir", "rtl") + +LANGUAGE_COOKIE_NAME = "openedx-language-preference" + +LOCALE_PATHS = Derived(_make_locale_paths) # Sourced from http://www.localeplanet.com/icu/ and wikipedia LANGUAGES = [ @@ -189,34 +249,18 @@ def _make_locale_paths(settings): ('zh-tw', '中文 (台灣)'), # Chinese (Taiwan) ] -# these languages display right to left -LANGUAGES_BIDI = ("he", "ar", "fa", "ur", "fa-ir", "rtl") +############################## Site Settings ############################### -LANGUAGE_COOKIE_NAME = "openedx-language-preference" +HTTPS = 'on' +SITE_NAME = "localhost" +FAVICON_PATH = 'images/favicon.ico' -LOCALE_PATHS = Derived(_make_locale_paths) - -AUTH_PASSWORD_VALIDATORS = [ - { - "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", - }, - { - "NAME": "common.djangoapps.util.password_policy_validators.MinimumLengthValidator", - "OPTIONS": { - "min_length": 8 - } - }, - { - "NAME": "common.djangoapps.util.password_policy_validators.MaximumLengthValidator", - "OPTIONS": { - "max_length": 75 - } - }, -] - -# See https://github.com/openedx/edx-django-sites-extensions for more info. -# Default site to use if site matching request headers does not exist. -SITE_ID = 1 +BUGS_EMAIL = 'bugs@example.com' +CONTACT_EMAIL = 'info@example.com' +DEFAULT_FEEDBACK_EMAIL = 'feedback@example.com' +PRESS_EMAIL = 'press@example.com' +TECH_SUPPORT_EMAIL = 'technical@example.com' +UNIVERSITY_EMAIL = 'university@example.com' ################################# Language ################################# @@ -444,6 +488,23 @@ def _make_locale_paths(settings): }, } +# .. setting_name: REGISTRATION_VALIDATION_RATELIMIT +# .. setting_default: 30/7d +# .. setting_description: Whenever a user tries to register on edx, the data entered during registration +# is validated via RegistrationValidationView. +# It's POST endpoint is rate-limited up to 30 requests per IP Address in a week by default. +# It was introduced because an attacker can guess or brute force a series of names to enumerate valid users. +# .. setting_tickets: https://github.com/openedx/edx-platform/pull/24664 +REGISTRATION_VALIDATION_RATELIMIT = '30/7d' + +# .. setting_name: REGISTRATION_RATELIMIT +# .. setting_default: 60/7d +# .. setting_description: New users are registered on edx via RegistrationView. +# It's POST end-point is rate-limited up to 60 requests per IP Address in a week by default. +# Purpose of this setting is to restrict an attacker from registering numerous fake accounts. +# .. setting_tickets: https://github.com/openedx/edx-platform/pull/27060 +REGISTRATION_RATELIMIT = '60/7d' + ################################## Celery ################################## BROKER_HEARTBEAT = 60.0 @@ -458,6 +519,30 @@ def _make_locale_paths(settings): CELERY_RESULT_BACKEND = 'django-cache' CELERY_EVENT_QUEUE_TTL = None +CELERY_TASK_SERIALIZER = 'json' +CELERY_RESULT_SERIALIZER = 'json' + +# Message configuration +CELERY_MESSAGE_COMPRESSION = 'gzip' + +# Results configuration +CELERY_IGNORE_RESULT = False +CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True + +# Events configuration +CELERY_TRACK_STARTED = True + +CELERY_SEND_EVENTS = True +CELERY_SEND_TASK_SENT_EVENT = True + +# Exchange configuration +CELERY_DEFAULT_EXCHANGE = 'edx.core' +CELERY_DEFAULT_EXCHANGE_TYPE = 'direct' + +# Queues configuration +CELERY_QUEUE_HA_POLICY = 'all' +CELERY_CREATE_MISSING_QUEUES = True + # Checks run in normal mode by the heartbeat djangoapp HEARTBEAT_CHECKS = [ 'openedx.core.djangoapps.heartbeat.default_checks.check_modulestore', @@ -527,6 +612,736 @@ def _make_locale_paths(settings): 'JWT_AUTH_HEADER_PREFIX': 'JWT', } +# These JWT settings appear to be vestigial. They are duplicates of settings +# defined in JWT_AUTH above, and don't seem to be used anymore. See issue +# https://github.com/openedx/edx-drf-extensions/issues/332. +JWT_ISSUER = 'http://127.0.0.1:8000/oauth2' +DEFAULT_JWT_ISSUER = { + 'ISSUER': 'http://127.0.0.1:8000/oauth2', + 'AUDIENCE': 'SET-ME-PLEASE', + 'SECRET_KEY': 'SET-ME-PLEASE' +} +JWT_EXPIRATION = 30 +JWT_PRIVATE_SIGNING_KEY = None + + +################################# Features ################################# + +# .. setting_name: PLATFORM_NAME +# .. setting_default: Your Platform Name Here +# .. setting_description: The display name of the platform to be used in +# templates/emails/etc. +PLATFORM_NAME = _('Your Platform Name Here') +PLATFORM_DESCRIPTION = _('Your Platform Description Here') + +PLATFORM_FACEBOOK_ACCOUNT = "http://www.facebook.com/YourPlatformFacebookAccount" +PLATFORM_TWITTER_ACCOUNT = "@YourPlatformTwitterAccount" + +ENABLE_JASMINE = False + +# .. toggle_name: DISABLE_START_DATES +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: When True, all courses will be active, regardless of start +# date. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2012-07-24 +# .. toggle_warning: This will cause ALL courses to be immediately visible. +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/17913 +## DO NOT SET TO True IN THIS FILE +## Doing so will cause all courses to be released on production +DISABLE_START_DATES = False + +# .. toggle_name: ENABLE_DISCUSSION_SERVICE +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: When True, it will enable the Discussion tab in courseware for all courses. Setting this +# to False will not contain inline discussion components and discussion tab in any courses. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2012-08-14 +# .. toggle_warning: If the discussion panel is present in the course and the value for this flag is False then, +# attempting to expand those components will cause errors. So, this should only be set to False with an LMS that +# is running courses that do not contain discussion components. +# For consistency in user-experience, keep the value in sync with the setting of the same name in the CMS. +ENABLE_DISCUSSION_SERVICE = True + +# .. toggle_name: ENABLE_TEXTBOOK +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: Add PDF and HTML textbook tabs to the courseware. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2014-03-27 +# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name +# in the CMS. +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/3064 +ENABLE_TEXTBOOK = True + +# .. toggle_name: ENABLE_OAUTH2_PROVIDER +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Enable this feature to allow this Open edX platform to be an OAuth2 authentication +# provider. This is necessary to enable some other features, such as the REST API for the mobile application. +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2014-09-09 +# .. toggle_target_removal_date: None +# .. toggle_warning: This temporary feature toggle does not have a target removal date. +ENABLE_OAUTH2_PROVIDER = False + +# Allows to configure the LMS to provide CORS headers to serve requests from other +# domains +ENABLE_CORS_HEADERS = False + +# Can be turned off to disable the help link in the navbar +# .. toggle_name: ENABLE_HELP_LINK +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: When True, a help link is displayed on the main navbar. Set False to hide it. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2021-03-05 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/26106 +ENABLE_HELP_LINK = True + +# Enable URL that shows information about the status of various services +ENABLE_SERVICE_STATUS = False + +# Don't autoplay videos for students/course authors +AUTOPLAY_VIDEOS = False + +# Move the student/course author to next page when a video finishes. Set to +# True to show an auto-advance button in videos. If False, videos never +# auto-advance. +ENABLE_AUTOADVANCE_VIDEOS = False + +# .. toggle_name: CUSTOM_COURSES_EDX +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to enable Custom Courses for edX, a feature that is more commonly known as +# CCX. Documentation for configuring and using this feature is available at +# https://docs.openedx.org/en/latest/site_ops/install_configure_run_guide/configuration/enable_ccx.html +# .. toggle_warning: When set to true, 'lms.djangoapps.ccx.overrides.CustomCoursesForEdxOverrideProvider' will +# be added to MODULESTORE_FIELD_OVERRIDE_PROVIDERS +# .. toggle_use_cases: opt_in, circuit_breaker +# .. toggle_creation_date: 2015-04-10 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6636 +CUSTOM_COURSES_EDX = False + +# Settings for course import olx validation +ENABLE_COURSE_OLX_VALIDATION = False + +# .. toggle_name: AUTOMATIC_AUTH_FOR_TESTING +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to perform acceptance and load test. Auto auth view is responsible for load +# testing and is controlled by this feature flag. Session verification (of CacheBackedAuthenticationMiddleware) +# is a security feature, but it can be turned off by enabling this feature flag. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2013-07-25 +# .. toggle_warning: If this has been set to True then the account activation email will be skipped. +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/417 +AUTOMATIC_AUTH_FOR_TESTING = False + +# .. toggle_name: RESTRICT_AUTOMATIC_AUTH +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: Prevent auto auth from creating superusers or modifying existing users. Auto auth is a +# mechanism where superusers can simply modify attributes of other users by accessing the "/auto_auth url" with +# the right +# querystring parameters. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2018-05-07 +# .. toggle_tickets: https://openedx.atlassian.net/browse/TE-2545 +RESTRICT_AUTOMATIC_AUTH = True + +# .. toggle_name: EMBARGO +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Turns on embargo functionality, which blocks users from +# the site or courses based on their location. Embargo can restrict users by states +# and whitelist/blacklist (IP Addresses (ie. 10.0.0.0), Networks (ie. 10.0.0.0/24)), or the user profile country. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2014-02-27 +# .. toggle_target_removal_date: None +# .. toggle_warning: reverse proxy should be configured appropriately for example Client IP address headers +# (e.g HTTP_X_FORWARDED_FOR) should be configured. +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2749 +EMBARGO = False + +# .. toggle_name: ENABLE_MKTG_SITE +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Toggle to enable alternate urls for marketing links. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2014-03-24 +# .. toggle_warning: When this is enabled, the MKTG_URLS setting should be defined. The use case of this feature +# toggle is uncertain. +ENABLE_MKTG_SITE = False + +# Expose Mobile REST API. Note that if you use this, you must also set +# ENABLE_OAUTH2_PROVIDER to True +ENABLE_MOBILE_REST_API = False + +# Let students save and manage their annotations +# .. toggle_name: settings.ENABLE_EDXNOTES +# .. toggle_implementation: SettingToggle +# .. toggle_default: False +# .. toggle_description: This toggle enables the students to save and manage their annotations in the +# course using the notes service. The bulk of the actual work in storing the notes is done by +# a separate service (see the edx-notes-api repo). +# .. toggle_warning: Requires the edx-notes-api service properly running and to have configured the django settings +# EDXNOTES_INTERNAL_API and EDXNOTES_PUBLIC_API. If you update this setting, also update it in Studio. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2015-01-04 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6321 +ENABLE_EDXNOTES = False + +# Toggle to enable coordination with the Publisher tool (keep in sync between the LMS and CMS) +ENABLE_PUBLISHER = False + +# Milestones application flag +MILESTONES_APP = False + +# Prerequisite courses feature flag +ENABLE_PREREQUISITE_COURSES = False + +# .. toggle_name: LICENSING +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Toggle platform-wide course licensing. The course.license attribute is then used to append +# license information to the courseware. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2015-05-14 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7315 +LICENSING = False + +# .. toggle_name: CERTIFICATES_HTML_VIEW +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to enable course certificates on your instance of Open edX. +# .. toggle_warning: You must enable this feature flag in both Studio and the LMS and complete the configuration tasks +# described here: +# https://docs.openedx.org/en/latest/site_ops/install_configure_run_guide/configuration/enable_certificates.html pylint: disable=line-too-long,useless-suppression +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2015-03-13 +# .. toggle_target_removal_date: None +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7113 +CERTIFICATES_HTML_VIEW = False + +# Teams feature +ENABLE_TEAMS = True + +# Show video bumper +ENABLE_VIDEO_BUMPER = False + +# How many seconds to show the bumper again, default is 7 days: +SHOW_BUMPER_PERIODICITY = 7 * 24 * 3600 + +# .. toggle_name: ENABLE_SPECIAL_EXAMS +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Enable to use special exams, aka timed and proctored exams. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2015-09-04 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/9744 +ENABLE_SPECIAL_EXAMS = False + +# .. toggle_name: SHOW_HEADER_LANGUAGE_SELECTOR +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: When set to True, language selector will be visible in the header. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2017-05-25 +# .. toggle_warning: You should set the languages in the DarkLangConfig table to get this working. If you have +# not set any languages in the DarkLangConfig table then the language selector will not be visible in the header. +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15133 +SHOW_HEADER_LANGUAGE_SELECTOR = False + +# At edX it's safe to assume that English transcripts are always available +# This is not the case for all installations. +# The default value here and in xmodule/tests/test_video.py should be consistent. +FALLBACK_TO_ENGLISH_TRANSCRIPTS = True + +# .. toggle_name: SHOW_FOOTER_LANGUAGE_SELECTOR +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: When set to True, language selector will be visible in the footer. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2017-05-25 +# .. toggle_warning: LANGUAGE_COOKIE_NAME is required to use footer-language-selector, set it if it has not been set. +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15133 +SHOW_FOOTER_LANGUAGE_SELECTOR = False + +# .. toggle_name: ENABLE_CSMH_EXTENDED +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: Write Courseware Student Module History (CSMH) to the extended table: this logs all +# student activities to MySQL, in a separate database. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2020-11-05 +# .. toggle_warning: Even though most Open edX instances run with a separate CSMH database, it may not always be +# the case. When disabling this feature flag, remember to remove "lms.djangoapps.coursewarehistoryextended" +# from the INSTALLED_APPS and the "StudentModuleHistoryExtendedRouter" from the DATABASE_ROUTERS. This is needed +# in the LMS and CMS for migration consistency. +ENABLE_CSMH_EXTENDED = True + +# Read from both the CSMH and CSMHE history tables. +# This is the default, but can be disabled if all history +# lives in the Extended table, saving the frontend from +# making multiple queries. +ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES = True + +# Set this to False to facilitate cleaning up invalid xml from your modulestore. +ENABLE_XBLOCK_XML_VALIDATION = True + +# .. toggle_name: ALLOW_PUBLIC_ACCOUNT_CREATION +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: Allow public account creation. If this is disabled, users will no longer have access to +# the signup page. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2017-04-12 +# .. toggle_tickets: https://openedx.atlassian.net/browse/YONK-513 +ALLOW_PUBLIC_ACCOUNT_CREATION = True + +# .. toggle_name: SHOW_REGISTRATION_LINKS +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: Allow registration links. If this is disabled, users will no longer see buttons to the +# the signup page. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2023-03-27 +SHOW_REGISTRATION_LINKS = True + +# Whether or not the dynamic EnrollmentTrackUserPartition should be registered. +ENABLE_ENROLLMENT_TRACK_USER_PARTITION = True + +# .. toggle_name: ENABLE_PASSWORD_RESET_FAILURE_EMAIL +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Whether to send an email for failed password reset attempts or not. This happens when a +# user asks for a password reset but they don't have an account associated to their email. This is useful for +# notifying users that they don't have an account associated with email addresses they believe they've registered +# with. This setting can be overridden by a site-specific configuration. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2017-07-20 +# .. toggle_tickets: https://openedx.atlassian.net/browse/OSPR-1832 +ENABLE_PASSWORD_RESET_FAILURE_EMAIL = False + +# Enable feature to remove enrollments and users. Used to reset state of master's integration environments +ENABLE_ENROLLMENT_RESET = False + +# .. toggle_name: settings.DISABLE_MOBILE_COURSE_AVAILABLE +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to remove Mobile Course Available UI Flag from Studio's Advanced Settings +# page else Mobile Course Available UI Flag will be available on Studio side. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2020-02-14 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/23073 +DISABLE_MOBILE_COURSE_AVAILABLE = False + +# .. toggle_name: ENABLE_CHANGE_USER_PASSWORD_ADMIN +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to enable changing a user password through django admin. This is disabled by +# default because enabling allows a method to bypass password policy. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2020-02-21 +# .. toggle_tickets: 'https://github.com/openedx/edx-platform/pull/21616' +ENABLE_CHANGE_USER_PASSWORD_ADMIN = False + +### ORA Feature Flags ### + +# .. toggle_name: ENABLE_ORA_ALL_FILE_URLS +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: A "work-around" feature toggle meant to help in cases where some file uploads are not +# discoverable. If enabled, will iterate through all possible file key suffixes up to the max for displaying +# file metadata in staff assessments. +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2020-03-03 +# .. toggle_target_removal_date: None +# .. toggle_tickets: https://openedx.atlassian.net/browse/EDUCATOR-4951 +# .. toggle_warning: This temporary feature toggle does not have a target removal date. +ENABLE_ORA_ALL_FILE_URLS = False + +# .. toggle_name: ENABLE_ORA_USER_STATE_UPLOAD_DATA +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: A "work-around" feature toggle meant to help in cases where some file uploads are not +# discoverable. If enabled, will pull file metadata from StudentModule.state for display in staff assessments. +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2020-03-03 +# .. toggle_target_removal_date: None +# .. toggle_tickets: https://openedx.atlassian.net/browse/EDUCATOR-4951 +# .. toggle_warning: This temporary feature toggle does not have a target removal date. +ENABLE_ORA_USER_STATE_UPLOAD_DATA = False + +# .. toggle_name: ENABLE_INTEGRITY_SIGNATURE +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Whether to display honor code agreement for learners before their first grade assignment. +# The honor code agreement replaces the ID verification requirement (https://github.com/edx/edx-name-affirmation). +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2022-02-15 +# .. toggle_target_removal_date: None +# .. toggle_tickets: 'https://openedx.atlassian.net/browse/MST-1348' +ENABLE_INTEGRITY_SIGNATURE = False + +# .. toggle_name: ENABLE_LTI_PII_ACKNOWLEDGEMENT +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Enables the lti pii acknowledgement feature for a course +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2023-10 +# .. toggle_target_removal_date: None +# .. toggle_tickets: 'https://2u-internal.atlassian.net/browse/MST-2055' +ENABLE_LTI_PII_ACKNOWLEDGEMENT = False + +# .. toggle_name: MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: If enabled, the Library Content Block is marked as complete when users view it. +# Otherwise (by default), all children of this block must be completed. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2022-03-22 +# .. toggle_target_removal_date: None +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/28268 +# .. toggle_warning: For consistency in user-experience, keep the value in sync between the LMS and CMS +MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW = False + +# .. toggle_name: DISABLE_UNENROLLMENT +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to disable self-unenrollments via REST API. +# This also hides the "Unenroll" button on the Learner Dashboard. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2021-10-11 +# .. toggle_warning: For consistency in user experience, keep the value in sync with the setting of the same name +# in the LMS and CMS. +# .. toggle_tickets: 'https://github.com/open-craft/edx-platform/pull/429' +DISABLE_UNENROLLMENT = False + +# .. toggle_name: ENABLE_GRADING_METHOD_IN_PROBLEMS +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Enables the grading method feature in capa problems. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2024-03-22 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/33911 +ENABLE_GRADING_METHOD_IN_PROBLEMS = False + +# .. toggle_name: BADGES_ENABLED +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Set to True to enable badges functionality. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2024-04-02 +# .. toggle_target_removal_date: None +BADGES_ENABLED = False + +# .. toggle_name: ENABLE_CREDIT_ELIGIBILITY +# .. toggle_implementation: DjangoSetting +# .. toggle_default: True +# .. toggle_description: When enabled, it is possible to define a credit eligibility criteria in the CMS. A "Credit +# Eligibility" section then appears for those courses in the LMS. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2015-06-17 +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/8550 +ENABLE_CREDIT_ELIGIBILITY = True + +# .. toggle_name: ENABLE_COPPA_COMPLIANCE +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: When True, enforces COPPA compliance and removes YOB field from registration form and account +# .. settings page. Also hide YOB banner from profile page. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2021-10-27 +# .. toggle_tickets: 'https://openedx.atlassian.net/browse/VAN-622' +ENABLE_COPPA_COMPLIANCE = False + +###################### CAPA External Code Evaluation ####################### + +# Used with XQueue +XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds +XQUEUE_INTERFACE = { + 'url': 'http://localhost:18040', + 'basic_auth': ['edx', 'edx'], + 'django_auth': { + 'username': 'lms', + 'password': 'password' + } +} + +########################### Cache Configuration ############################ + +CACHES = { + 'course_structure_cache': { + 'KEY_PREFIX': 'course_structure', + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'TIMEOUT': '604800', # 1 week + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, + 'celery': { + 'KEY_PREFIX': 'celery', + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'TIMEOUT': '7200', + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, + 'mongo_metadata_inheritance': { + 'KEY_PREFIX': 'mongo_metadata_inheritance', + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'TIMEOUT': 300, + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, + 'staticfiles': { + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'KEY_PREFIX': 'staticfiles_general', + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, + 'default': { + 'VERSION': '1', + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'KEY_PREFIX': 'default', + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, + 'configuration': { + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'KEY_PREFIX': 'configuration', + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, + 'general': { + 'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key', + 'LOCATION': ['localhost:11211'], + 'KEY_PREFIX': 'general', + 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache', + 'OPTIONS': { + 'no_delay': True, + 'ignore_exc': True, + 'use_pooling': True, + 'connect_timeout': 0.5 + } + }, +} + +################################### CSRF ################################### + +CSRF_COOKIE_AGE = 60 * 60 * 24 * 7 * 52 + +# It is highly recommended that you override this in any environment accessed by +# end users +CSRF_COOKIE_SECURE = False + +# If setting a cross-domain cookie, it's really important to choose +# a name for the cookie that is DIFFERENT than the cookies used +# by each subdomain. For example, suppose the applications +# at these subdomains are configured to use the following cookie names: +# +# 1) foo.example.com --> "csrftoken" +# 2) baz.example.com --> "csrftoken" +# 3) bar.example.com --> "csrftoken" +# +# For the cross-domain version of the CSRF cookie, you need to choose +# a name DIFFERENT than "csrftoken"; otherwise, the new token configured +# for ".example.com" could conflict with the other cookies, +# non-deterministically causing 403 responses. +CROSS_DOMAIN_CSRF_COOKIE_NAME = '' + +# When setting the domain for the "cross-domain" version of the CSRF +# cookie, you should choose something like: ".example.com" +# (note the leading dot), where both the referer and the host +# are subdomains of "example.com". +# +# Browser security rules require that +# the cookie domain matches the domain of the server; otherwise +# the cookie won't get set. And once the cookie gets set, the client +# needs to be on a domain that matches the cookie domain, otherwise +# the client won't be able to read the cookie. +CROSS_DOMAIN_CSRF_COOKIE_DOMAIN = '' + +CSRF_TRUSTED_ORIGINS = [] + +ENABLE_CROSS_DOMAIN_CSRF_COOKIE = False + +########################## Cross-domain Requests ########################### + +if ENABLE_CORS_HEADERS: + CORS_ALLOW_CREDENTIALS = True + CORS_ORIGIN_WHITELIST = () + CORS_ORIGIN_ALLOW_ALL = False + CORS_ALLOW_INSECURE = False + +# .. setting_name: LOGIN_REDIRECT_WHITELIST +# .. setting_default: empty list ([]) +# .. setting_description: While logout, if logout request has a redirect-url as query strings, +# then the redirect-url is validated through LOGIN_REDIRECT_WHITELIST. +LOGIN_REDIRECT_WHITELIST = [] + +######################## Social Media Footer Links ######################### + +# The footer URLs dictionary maps social footer names +# to URLs defined in configuration. +SOCIAL_MEDIA_FOOTER_ACE_URLS = { + 'reddit': 'http://www.reddit.com/r/edx', + 'twitter': 'https://twitter.com/edXOnline', + 'linkedin': 'http://www.linkedin.com/company/edx', + 'facebook': 'http://www.facebook.com/EdxOnline', +} + +# The social media logo urls dictionary maps social media names +# to the respective icons +SOCIAL_MEDIA_LOGO_URLS = { + 'reddit': 'http://email-media.s3.amazonaws.com/edX/2021/social_5_reddit.png', + 'twitter': 'http://email-media.s3.amazonaws.com/edX/2021/social_2_twitter.png', + 'linkedin': 'http://email-media.s3.amazonaws.com/edX/2021/social_3_linkedin.png', + 'facebook': 'http://email-media.s3.amazonaws.com/edX/2021/social_1_fb.png', +} + +############################# Block Structures ############################# + +# .. setting_name: BLOCK_STRUCTURES_SETTINGS +# .. setting_default: dict of settings +# .. setting_description: Stores all the settings used by block structures and block structure +# related tasks. See BLOCK_STRUCTURES_SETTINGS[XXX] documentation for details of each setting. +# For more information, check https://github.com/openedx/edx-platform/pull/13388. +BLOCK_STRUCTURES_SETTINGS = dict( + # .. setting_name: BLOCK_STRUCTURES_SETTINGS['COURSE_PUBLISH_TASK_DELAY'] + # .. setting_default: 30 + # .. setting_description: Delay, in seconds, after a new edit of a course is published before + # updating the block structures cache. This is needed for a better chance at getting + # the latest changes when there are secondary reads in sharded mongoDB clusters. + # For more information, check https://github.com/openedx/edx-platform/pull/13388 and + # https://github.com/openedx/edx-platform/pull/14571. + COURSE_PUBLISH_TASK_DELAY=30, + + # .. setting_name: BLOCK_STRUCTURES_SETTINGS['TASK_DEFAULT_RETRY_DELAY'] + # .. setting_default: 30 + # .. setting_description: Delay, in seconds, between retry attempts if a block structure task + # fails. For more information, check https://github.com/openedx/edx-platform/pull/13388 and + # https://github.com/openedx/edx-platform/pull/14571. + TASK_DEFAULT_RETRY_DELAY=30, + + # .. setting_name: BLOCK_STRUCTURES_SETTINGS['TASK_MAX_RETRIES'] + # .. setting_default: 5 + # .. setting_description: Maximum number of retries per block structure task. + # If the maximum number of retries is exceeded, then you can attempt to either manually run + # the celery task, or wait for it to be triggered again. + # For more information, check https://github.com/openedx/edx-platform/pull/13388 and + # https://github.com/openedx/edx-platform/pull/14571. + TASK_MAX_RETRIES=5, +) + +################################ Bulk Email ################################ + +# Suffix used to construct 'from' email address for bulk emails. +# A course-specific identifier is prepended. +BULK_EMAIL_DEFAULT_FROM_EMAIL = 'no-reply@example.com' + +# Parameters for breaking down course enrollment into subtasks. +BULK_EMAIL_EMAILS_PER_TASK = 500 + +# Flag to indicate if individual email addresses should be logged as they are sent +# a bulk email message. +BULK_EMAIL_LOG_SENT_EMAILS = False + +################################## Video ################################### + +YOUTUBE = { + # YouTube JavaScript API + 'API': 'https://www.youtube.com/iframe_api', + + 'TEST_TIMEOUT': 1500, + + # URL to get YouTube metadata + 'METADATA_URL': 'https://www.googleapis.com/youtube/v3/videos/', + + # Web page mechanism for scraping transcript information from youtube video pages + 'TRANSCRIPTS': { + 'CAPTION_TRACKS_REGEX': r"captionTracks\"\:\[(?P[^\]]+)", + 'YOUTUBE_URL_BASE': 'https://www.youtube.com/watch?v=', + 'ALLOWED_LANGUAGE_CODES': ["en", "en-US", "en-GB"], + }, + + 'IMAGE_API': 'http://img.youtube.com/vi/{youtube_id}/0.jpg', # /maxresdefault.jpg for 1920*1080 +} + +YOUTUBE_API_KEY = 'PUT_YOUR_API_KEY_HERE' + +########################### Video Image Storage ############################ + +VIDEO_IMAGE_SETTINGS = dict( + VIDEO_IMAGE_MAX_BYTES=2 * 1024 * 1024, # 2 MB + VIDEO_IMAGE_MIN_BYTES=2 * 1024, # 2 KB + # Backend storage + # STORAGE_CLASS='storages.backends.s3boto3.S3Boto3Storage', + # STORAGE_KWARGS=dict(bucket='video-image-bucket'), + STORAGE_KWARGS=dict( + location=MEDIA_ROOT, + ), + DIRECTORY_PREFIX='video-images/', + BASE_URL=MEDIA_URL, + +) + +VIDEO_IMAGE_MAX_AGE = 31536000 + +######################## Video Transcripts Storage ######################### + +VIDEO_TRANSCRIPTS_SETTINGS = dict( + VIDEO_TRANSCRIPTS_MAX_BYTES=3 * 1024 * 1024, # 3 MB + # Backend storage + # STORAGE_CLASS='storages.backends.s3boto3.S3Boto3Storage', + # STORAGE_KWARGS=dict(bucket='video-transcripts-bucket'), + STORAGE_KWARGS=dict( + location=MEDIA_ROOT, + ), + DIRECTORY_PREFIX='video-transcripts/', + BASE_URL=MEDIA_URL, +) + +VIDEO_TRANSCRIPTS_MAX_AGE = 31536000 + ############################ Parental Controls ############################# # .. setting_name: PARENTAL_CONSENT_AGE_LIMIT @@ -535,6 +1350,26 @@ def _make_locale_paths(settings): # or ``None`` if parental consent is never required. PARENTAL_CONSENT_AGE_LIMIT = 13 +########################### Instructor Downloads ########################### + +# These keys are used for all of our asynchronous downloadable files, including +# the ones that contain information other than grades. +GRADES_DOWNLOAD = { + 'STORAGE_CLASS': 'django.core.files.storage.FileSystemStorage', + 'STORAGE_KWARGS': { + 'location': '/tmp/edx-s3/grades', + }, + 'STORAGE_TYPE': None, + 'BUCKET': None, + 'ROOT_PATH': None, +} + +FINANCIAL_REPORTS = { + 'STORAGE_TYPE': 'localfs', + 'BUCKET': None, + 'ROOT_PATH': 'sandbox', +} + ############################### Registration ############################### # .. setting_name: REGISTRATION_EMAIL_PATTERNS_ALLOWED @@ -543,6 +1378,20 @@ def _make_locale_paths(settings): # to only emails that match a regex in this list. Set to ``None`` to allow any email (default). REGISTRATION_EMAIL_PATTERNS_ALLOWED = None +# String length for the configurable part of the auto-generated username +AUTO_GENERATED_USERNAME_RANDOM_STRING_LENGTH = 4 + +SHOW_ACTIVATE_CTA_POPUP_COOKIE_NAME = 'show-account-activation-popup' + +# .. toggle_name: SOME_FEATURE_NAME +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: Flag would be used to show account activation popup after the registration +# .. toggle_use_cases: open_edx +# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/27661 +# .. toggle_creation_date: 2021-06-10 +SHOW_ACCOUNT_ACTIVATION_CTA = False + ######################### Course Enrollment Modes ########################## # The min_price key refers to the minimum price allowed for an instance @@ -642,6 +1491,113 @@ def _make_locale_paths(settings): ASSET_IGNORE_REGEX = r"(^\._.*$)|(^\.DS_Store$)|(^.*~$)" +DATABASES = { + # edxapp's edxapp-migrate scripts and the edxapp_migrate play + # will ensure that any DB not named read_replica will be migrated + # for both the lms and cms. + 'default': { + 'ATOMIC_REQUESTS': True, + 'CONN_MAX_AGE': 0, + 'ENGINE': 'django.db.backends.mysql', + 'HOST': '127.0.0.1', + 'NAME': 'edxapp', + 'OPTIONS': {}, + 'PASSWORD': 'password', + 'PORT': '3306', + 'USER': 'edxapp001' + }, + 'read_replica': { + 'CONN_MAX_AGE': 0, + 'ENGINE': 'django.db.backends.mysql', + 'HOST': '127.0.0.1', + 'NAME': 'edxapp', + 'OPTIONS': {}, + 'PASSWORD': 'password', + 'PORT': '3306', + 'USER': 'edxapp001' + }, + 'student_module_history': { + 'CONN_MAX_AGE': 0, + 'ENGINE': 'django.db.backends.mysql', + 'HOST': '127.0.0.1', + 'NAME': 'edxapp_csmh', + 'OPTIONS': {}, + 'PASSWORD': 'password', + 'PORT': '3306', + 'USER': 'edxapp001' + } +} + +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' +DEFAULT_HASHING_ALGORITHM = 'sha256' + +############################# Micro-frontends ############################## + +# .. setting_name: ACCOUNT_MICROFRONTEND_URL +# .. setting_default: None +# .. setting_description: Base URL of the micro-frontend-based account settings page. +# .. setting_warning: Also set site's ENABLE_ACCOUNT_MICROFRONTEND and +# account.redirect_to_microfrontend waffle flag +ACCOUNT_MICROFRONTEND_URL = None + +# .. setting_name: LEARNING_MICROFRONTEND_URL +# .. setting_default: None +# .. setting_description: Base URL of the micro-frontend-based courseware page. +LEARNING_MICROFRONTEND_URL = None + +# .. setting_name: DISCUSSIONS_MICROFRONTEND_URL +# .. setting_default: None +# .. setting_description: Base URL of the micro-frontend-based discussions page. +# .. setting_warning: Also set site's courseware.discussions_mfe waffle flag. +DISCUSSIONS_MICROFRONTEND_URL = None + +# .. setting_name: DISCUSSIONS_MFE_FEEDBACK_URL +# .. setting_default: None +# .. setting_description: Base URL of the discussions micro-frontend google form based feedback. +DISCUSSIONS_MFE_FEEDBACK_URL = None + +# .. toggle_name: ENABLE_DYNAMIC_REGISTRATION_FIELDS +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: When enabled, this toggle adds fields configured in +# REGISTRATION_EXTRA_FIELDS to Authn MFE +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2022-04-21 +# .. toggle_target_removal_date: None +# .. toggle_tickets: https://openedx.atlassian.net/browse/VAN-838 +ENABLE_DYNAMIC_REGISTRATION_FIELDS = False + +################################## Swift ################################### + +SWIFT_USERNAME = None +SWIFT_KEY = None +SWIFT_TENANT_ID = None +SWIFT_TENANT_NAME = None +SWIFT_AUTH_URL = None +SWIFT_AUTH_VERSION = None +SWIFT_REGION_NAME = None +SWIFT_USE_TEMP_URLS = None +SWIFT_TEMP_URL_KEY = None +SWIFT_TEMP_URL_DURATION = 1800 # seconds + +################################### SAML ################################### + +SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "" +SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "" +SOCIAL_AUTH_SAML_SP_PRIVATE_KEY_DICT = {} +SOCIAL_AUTH_SAML_SP_PUBLIC_CERT_DICT = {} + +########################### django-fernet-fields ########################### + +FERNET_KEYS = [ + 'DUMMY KEY CHANGE BEFORE GOING TO PRODUCTION', +] + +########################## django-simple-history ########################### + +# disable indexing on date field its coming from django-simple-history. +SIMPLE_HISTORY_DATE_INDEX = False + ########################### Django OAuth Toolkit ########################### # This is required for the migrations in oauth_dispatch.models @@ -687,6 +1643,36 @@ def _make_locale_paths(settings): 'small': 30 } +################################## XBlock ################################## + +# .. setting_name: XBLOCK_EXTRA_MIXINS +# .. setting_default: () +# .. setting_description: Custom mixins that will be dynamically added to every XBlock and XBlockAside instance. +# These can be classes or dotted-path references to classes. +# For example: `XBLOCK_EXTRA_MIXINS = ('my_custom_package.my_module.MyCustomMixin',)` +XBLOCK_EXTRA_MIXINS = () + +# .. setting_name: XBLOCK_FIELD_DATA_WRAPPERS +# .. setting_default: () +# .. setting_description: Paths to wrapper methods which should be applied to every XBlock's FieldData. +XBLOCK_FIELD_DATA_WRAPPERS = () + +XBLOCK_FS_STORAGE_BUCKET = None +XBLOCK_FS_STORAGE_PREFIX = None + +# .. setting_name: XBLOCK_SETTINGS +# .. setting_default: {} +# .. setting_description: Dictionary containing server-wide configuration of XBlocks on a per-type basis. +# By default, keys should match the XBlock `block_settings_key` attribute/property. If the attribute/property +# is not defined, use the XBlock class name. Check `xmodule.services.SettingsService` +# for more reference. +XBLOCK_SETTINGS = {} + +# .. setting_name: XBLOCK_RUNTIME_V2_EPHEMERAL_DATA_CACHE +# .. setting_default: default +# .. setting_description: The django cache key of the cache to use for storing anonymous user state for XBlocks. +XBLOCK_RUNTIME_V2_EPHEMERAL_DATA_CACHE = 'default' + ######################## Built-in Blocks Extraction ######################## # The following Django settings flags have been introduced temporarily to facilitate @@ -775,6 +1761,17 @@ def _make_locale_paths(settings): # .. toggle_target_removal_date: 2025-06-01 USE_EXTRACTED_VIDEO_BLOCK = False +############################## Marketing Site ############################## + +EDXMKTG_LOGGED_IN_COOKIE_NAME = 'edxloggedin' +EDXMKTG_USER_INFO_COOKIE_NAME = 'edx-user-info' +EDXMKTG_USER_INFO_COOKIE_VERSION = 1 + +MKTG_URLS = {} +MKTG_URL_OVERRIDES = {} + +SUPPORT_SITE_LINK = '' + ################################# ChatGPT ################################## CHAT_COMPLETION_API = '' @@ -796,6 +1793,471 @@ def _make_locale_paths(settings): AWS_SES_REGION_NAME = 'us-east-1' AWS_SES_REGION_ENDPOINT = 'email.us-east-1.amazonaws.com' +AWS_ACCESS_KEY_ID = None +AWS_SECRET_ACCESS_KEY = None + +################################ Optimizely ################################ + +OPTIMIZELY_PROJECT_ID = None +OPTIMIZELY_FULLSTACK_SDK_KEY = None + +################################# Zendesk ################################## +ZENDESK_URL = '' +ZENDESK_CUSTOM_FIELDS = {} +ZENDESK_OAUTH_ACCESS_TOKEN = '' +# A mapping of string names to Zendesk Group IDs +# To get the IDs of your groups you can go to +# {zendesk_url}/api/v2/groups.json +ZENDESK_GROUP_ID_MAPPING = {} + +############################## Python sandbox ############################## + +# Some courses are allowed to run unsafe code. This is a list of regexes, one +# of them must match the course id for that course to run unsafe code. +# +# For example: +# +# COURSES_WITH_UNSAFE_CODE = [ +# r"Harvard/XY123.1/.*" +# ] +COURSES_WITH_UNSAFE_CODE = [] + +# Code jail REST service +ENABLE_CODEJAIL_REST_SERVICE = False + +# .. setting_name: CODE_JAIL_REST_SERVICE_REMOTE_EXEC +# .. setting_default: 'xmodule.capa.safe_exec.remote_exec.send_safe_exec_request_v0' +# .. setting_description: Set the python package.module.function that is reponsible of +# calling the remote service in charge of jailed code execution +CODE_JAIL_REST_SERVICE_REMOTE_EXEC = 'xmodule.capa.safe_exec.remote_exec.send_safe_exec_request_v0' + +# .. setting_name: CODE_JAIL_REST_SERVICE_HOST +# .. setting_default: 'http://127.0.0.1:8550' +# .. setting_description: Set the codejail remote service host +CODE_JAIL_REST_SERVICE_HOST = 'http://127.0.0.1:8550' + +# .. setting_name: CODE_JAIL_REST_SERVICE_CONNECT_TIMEOUT +# .. setting_default: 0.5 +# .. setting_description: Set the number of seconds LMS will wait to establish an internal +# connection to the codejail remote service. +CODE_JAIL_REST_SERVICE_CONNECT_TIMEOUT = 0.5 # time in seconds + +# .. setting_name: CODE_JAIL_REST_SERVICE_READ_TIMEOUT +# .. setting_default: 3.5 +# .. setting_description: Set the number of seconds LMS/CMS will wait for a response from the +# codejail remote service endpoint. +CODE_JAIL_REST_SERVICE_READ_TIMEOUT = 3.5 # time in seconds + +####################### Locale/Internationalization ######################## + +# Locale/Internationalization +CELERY_TIMEZONE = 'UTC' +TIME_ZONE = 'UTC' +LANGUAGE_CODE = 'en' # http://www.i18nguy.com/unicode/language-identifiers.html + +# Languages supported for custom course certificate templates +CERTIFICATE_TEMPLATE_LANGUAGES = { + 'en': 'English', + 'es': 'Español', +} + +USE_I18N = True +USE_L10N = True + +STATICI18N_FILENAME_FUNCTION = 'statici18n.utils.legacy_filename' +STATICI18N_OUTPUT_DIR = "js/i18n" + +################################# Pipeline ################################# + +STATICFILES_STORAGE_KWARGS = {} + +# List of finder classes that know how to find static files in various locations. +# Note: the pipeline finder is included to be able to discover optimized files +STATICFILES_FINDERS = [ + 'openedx.core.djangoapps.theming.finders.ThemeFilesFinder', + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + 'openedx.core.lib.xblock_pipeline.finder.XBlockPipelineFinder', + 'pipeline.finders.PipelineFinder', +] + +############################## django-require ############################## + +# The baseUrl to pass to the r.js optimizer, relative to STATIC_ROOT. +REQUIRE_BASE_URL = "./" + +# Whether to run django-require in debug mode. +REQUIRE_DEBUG = False + +########################### Student Verification ########################### + +VERIFY_STUDENT = { + "DAYS_GOOD_FOR": 365, # How many days is a verficiation good for? + # The variable represents the window within which a verification is considered to be "expiring soon." + "EXPIRING_SOON_WINDOW": 28, +} + +################################## ORA 2 ################################### + +# Default File Upload Storage bucket and prefix. Used by the FileUpload Service. +FILE_UPLOAD_STORAGE_BUCKET_NAME = 'SET-ME-PLEASE (ex. bucket-name)' +FILE_UPLOAD_STORAGE_PREFIX = 'submissions_attachments' + + +############################## Authentication ############################## + +##### ACCOUNT LOCKOUT DEFAULT PARAMETERS ##### +# .. setting_name: MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED +# .. setting_default: 6 +# .. setting_description: Specifies the maximum failed login attempts allowed to users. Once the user reaches this +# failure threshold then the account will be locked for a configurable amount of seconds (30 minutes) which will +# prevent additional login attempts until this time period has passed. This setting is related with +# MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS and only used when ENABLE_MAX_FAILED_LOGIN_ATTEMPTS is enabled. +MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED = 6 + +# .. setting_name: MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS +# .. setting_default: 30 * 60 +# .. setting_description: Specifies the lockout period in seconds for consecutive failed login attempts. Once the user +# reaches the threshold of the login failure, then the account will be locked for the given amount of seconds +# (30 minutes) which will prevent additional login attempts until this time period has passed. This setting is +# related with MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED and only used when ENABLE_MAX_FAILED_LOGIN_ATTEMPTS is enabled. +MAX_FAILED_LOGIN_ATTEMPTS_LOCKOUT_PERIOD_SECS = 30 * 60 + +PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG = { + 'ENFORCE_COMPLIANCE_ON_LOGIN': False +} + +SESSION_INACTIVITY_TIMEOUT_IN_SECONDS = None + +# List of logout URIs for each IDA that the learner should be logged out of when they logout of the LMS +# or CMS. Only applies to IDA for which the social auth flow uses DOT (Django OAuth Toolkit). +IDA_LOGOUT_URI_LIST = [] + +### External auth usage -- prefixes for ENROLLMENT_DOMAIN +SHIBBOLETH_DOMAIN_PREFIX = 'shib:' + +# This is the domain that is used to set shared cookies between various sub-domains. +SHARED_COOKIE_DOMAIN = Derived(lambda settings: settings.SESSION_COOKIE_DOMAIN) + +################################ Analytics ################################# + +ANALYTICS_DASHBOARD_URL = 'http://localhost:18110/courses' +ANALYTICS_DASHBOARD_NAME = 'Your Platform Name Here Insights' + +################################ Discovery ################################# + +# which access.py permission name to check in order to determine if a course is visible in +# the course catalog. We default this to the legacy permission 'see_exists'. +COURSE_CATALOG_VISIBILITY_PERMISSION = 'see_exists' + +# which access.py permission name to check in order to determine if a course about page is +# visible. We default this to the legacy permission 'see_exists'. +COURSE_ABOUT_VISIBILITY_PERMISSION = 'see_exists' + +DEFAULT_COURSE_VISIBILITY_IN_CATALOG = "both" + +# .. toggle_name: DEFAULT_MOBILE_AVAILABLE +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: This specifies if the courses are available for mobile by default. To make any individual +# course available for mobile one can set the value of Mobile Course Available to true in Advanced Settings from the +# studio when this is False. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2021-01-26 +# .. toggle_tickets: https://openedx.atlassian.net/browse/OSPR-1985 +DEFAULT_MOBILE_AVAILABLE = False + +COURSE_CATALOG_URL_ROOT = 'http://localhost:8008' +COURSE_CATALOG_API_URL = f'{COURSE_CATALOG_URL_ROOT}/api/v1' + +################################## Search ################################## + +# Use None for the default search engine +SEARCH_ENGINE = None + +############################### Credentials ################################ + +CREDENTIALS_INTERNAL_SERVICE_URL = 'http://localhost:8005' +CREDENTIALS_PUBLIC_SERVICE_URL = 'http://localhost:8005' + +# time between scheduled runs, in seconds +NOTIFY_CREDENTIALS_FREQUENCY = 14400 + +CREDENTIALS_SERVICE_USERNAME = 'credentials_service_user' + +################################## Themes ################################## + +# .. setting_name: COMPREHENSIVE_THEME_DIRS +# .. setting_default: [] +# .. setting_description: A list of paths to directories, each of which will +# be searched for comprehensive themes. Do not override this Django setting directly. +# Instead, set the COMPREHENSIVE_THEME_DIRS environment variable, using colons (:) to +# separate paths. +COMPREHENSIVE_THEME_DIRS = os.environ.get("COMPREHENSIVE_THEME_DIRS", "").split(":") + +# .. setting_name: DEFAULT_SITE_THEME +# .. setting_default: None +# .. setting_description: Theme to use when no site or site theme is defined, for example +# "dark-theme". Set to None if you want to use openedx default theme. +# .. setting_warning: The theme folder needs to be in 'edx-platform/themes' or define the path +# to the theme folder in COMPREHENSIVE_THEME_DIRS. To be effective, ENABLE_COMPREHENSIVE_THEMING +# has to be enabled. +DEFAULT_SITE_THEME = None + +# .. toggle_name: ENABLE_COMPREHENSIVE_THEMING +# .. toggle_implementation: DjangoSetting +# .. toggle_default: False +# .. toggle_description: When enabled, this toggle activates the use of the custom theme +# defined by DEFAULT_SITE_THEME. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2016-06-30 +ENABLE_COMPREHENSIVE_THEMING = False + + +################################ Ecommerce ################################# + +ECOMMERCE_PUBLIC_URL_ROOT = 'http://localhost:8002' +ECOMMERCE_API_URL = 'http://localhost:8002/api/v2' +ECOMMERCE_API_SIGNING_KEY = 'SET-ME-PLEASE' + +################################ Enterprise ################################ + +# The default value of this needs to be a 16 character string +ENTERPRISE_CUSTOMER_CATALOG_DEFAULT_CONTENT_FILTER = {} + +# The setting key maps to the channel code (e.g. 'SAP' for success factors), Channel code is defined as +# part of django model of each integrated channel in edx-enterprise. +# The absence of a key/value pair translates to NO LIMIT on the number of "chunks" transmitted per cycle. +INTEGRATED_CHANNELS_API_CHUNK_TRANSMISSION_LIMIT = {} + +ENTERPRISE_SERVICE_WORKER_USERNAME = 'enterprise_worker' +ENTERPRISE_API_CACHE_TIMEOUT = 3600 # Value is in seconds + +BASE_COOKIE_DOMAIN = 'localhost' + +ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS = {} + +################################## Exams ################################### + +EXAMS_SERVICE_URL = 'http://localhost:18740/api/v1' + +############################## Credit Courses ############################## + +# Initial delay used for retrying tasks. +# Additional retries use longer delays. +# Value is in seconds. +CREDIT_TASK_DEFAULT_RETRY_DELAY = 30 + +# Maximum number of retries per task for errors that are not related +# to throttling. +CREDIT_TASK_MAX_RETRIES = 5 + +# Secret keys shared with credit providers. +# Used to digitally sign credit requests (us --> provider) +# and validate responses (provider --> us). +# Each key in the dictionary is a credit provider ID, and +# the value is the 32-character key. +CREDIT_PROVIDER_SECRET_KEYS = {} + +# Maximum age in seconds of timestamps we will accept +# when a credit provider notifies us that a student has been approved +# or denied for credit. +CREDIT_PROVIDER_TIMESTAMP_EXPIRATION = 15 * 60 + +################################ Completion ################################ + +# Once a user has watched this percentage of a video, mark it as complete: +# (0.0 = 0%, 1.0 = 100%) +COMPLETION_VIDEO_COMPLETE_PERCENTAGE = 0.95 + +############################### Rate Limits ################################ + +##### LOGISTRATION RATE LIMIT SETTINGS ##### +LOGISTRATION_RATELIMIT_RATE = '100/5m' +LOGISTRATION_PER_EMAIL_RATELIMIT_RATE = '30/5m' +LOGISTRATION_API_RATELIMIT = '20/m' +LOGIN_AND_REGISTER_FORM_RATELIMIT = '100/5m' +RESET_PASSWORD_TOKEN_VALIDATE_API_RATELIMIT = '30/7d' +RESET_PASSWORD_API_RATELIMIT = '30/7d' +OPTIONAL_FIELD_API_RATELIMIT = '10/h' + +##### PASSWORD RESET RATE LIMIT SETTINGS ##### +PASSWORD_RESET_IP_RATE = '1/m' +PASSWORD_RESET_EMAIL_RATE = '2/h' + +################################### Help ################################### + +HELP_TOKENS_LANGUAGE_CODE = Derived(lambda settings: settings.LANGUAGE_CODE) +HELP_TOKENS_VERSION = Derived(lambda settings: doc_version()) + +HELP_TOKENS_BOOKS = { + 'learner': 'https://edx.readthedocs.io/projects/open-edx-learner-guide', + 'course_author': 'https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course', +} + +################################ Retirement ################################ + +# .. setting_name: RETIRED_USERNAME_PREFIX +# .. setting_default: retired__user_ +# .. setting_description: Set the prefix part of hashed usernames for retired users. Used by the derived +# setting RETIRED_USERNAME_FMT. +RETIRED_USERNAME_PREFIX = 'retired__user_' + +# .. setting_name: RETIRED_EMAIL_PREFIX +# .. setting_default: retired__user_ +# .. setting_description: Set the prefix part of hashed emails for retired users. Used by the derived +# setting RETIRED_EMAIL_FMT. +RETIRED_EMAIL_PREFIX = 'retired__user_' + +# .. setting_name: RETIRED_EMAIL_DOMAIN +# .. setting_default: retired.invalid +# .. setting_description: Set the domain part of hashed emails for retired users. Used by the derived +# setting RETIRED_EMAIL_FMT. +RETIRED_EMAIL_DOMAIN = 'retired.invalid' + +# .. setting_name: RETIRED_USERNAME_FMT +# .. setting_default: retired__user_{} +# .. setting_description: Set the format a retired user username field gets transformed into, where {} +# is replaced with the hash of the original username. This is a derived setting that depends on +# RETIRED_USERNAME_PREFIX value. +RETIRED_USERNAME_FMT = Derived(lambda settings: settings.RETIRED_USERNAME_PREFIX + '{}') + +# .. setting_name: RETIRED_EMAIL_FMT +# .. setting_default: retired__user_{}@retired.invalid +# .. setting_description: Set the format a retired user email field gets transformed into, where {} is +# replaced with the hash of the original email. This is a derived setting that depends on +# RETIRED_EMAIL_PREFIX and RETIRED_EMAIL_DOMAIN values. +RETIRED_EMAIL_FMT = Derived(lambda settings: settings.RETIRED_EMAIL_PREFIX + '{}@' + settings.RETIRED_EMAIL_DOMAIN) + +# .. setting_name: RETIRED_USER_SALTS +# .. setting_default: ['abc', '123'] +# .. setting_description: Set a list of salts used for hashing usernames and emails on users retirement. +# .. setting_warning: Only the last item in this list is used as a salt for all new retirements, but +# historical salts are preserved in order to guarantee that all hashed usernames and emails can still +# be checked. +RETIRED_USER_SALTS = ['abc', '123'] + +# .. setting_name: RETIREMENT_SERVICE_WORKER_USERNAME +# .. setting_default: RETIREMENT_SERVICE_USER +# .. setting_description: Set the username of the retirement service worker user. Retirement scripts +# authenticate with LMS as this user with oauth client credentials. +RETIREMENT_SERVICE_WORKER_USERNAME = 'RETIREMENT_SERVICE_USER' + +# These states are the default, but are designed to be overridden in configuration. +# .. setting_name: RETIREMENT_STATES +# .. setting_default: +# [ +# 'PENDING', +# 'LOCKING_ACCOUNT', +# 'LOCKING_COMPLETE', +# 'RETIRING_FORUMS', +# 'FORUMS_COMPLETE', +# 'RETIRING_EMAIL_LISTS', +# 'EMAIL_LISTS_COMPLETE', +# 'RETIRING_ENROLLMENTS', +# 'ENROLLMENTS_COMPLETE', +# 'RETIRING_NOTES', +# 'NOTES_COMPLETE', +# 'RETIRING_LMS', +# 'LMS_COMPLETE', +# 'ERRORED', +# 'ABORTED', +# 'COMPLETE', +# ] +# .. setting_description: Set a list that defines the name and order of states for the retirement +# workflow. +# .. setting_warning: These states are stored in the database and it is the responsibility of the +# administrator to populate the state list since the states can vary across different installations. +# There must be, at minimum, a PENDING state at the beginning, and COMPLETED, ERRORED, and ABORTED +# states at the end of the list. +RETIREMENT_STATES = [ + 'PENDING', + + 'LOCKING_ACCOUNT', + 'LOCKING_COMPLETE', + + # Use these states only when ENABLE_DISCUSSION_SERVICE is True. + 'RETIRING_FORUMS', + 'FORUMS_COMPLETE', + + # TODO - Change these states to be the LMS-only email opt-out - PLAT-2189 + 'RETIRING_EMAIL_LISTS', + 'EMAIL_LISTS_COMPLETE', + + 'RETIRING_ENROLLMENTS', + 'ENROLLMENTS_COMPLETE', + + # Use these states only when ENABLE_STUDENT_NOTES is True. + 'RETIRING_NOTES', + 'NOTES_COMPLETE', + + 'RETIRING_LMS', + 'LMS_COMPLETE', + + 'ERRORED', + 'ABORTED', + 'COMPLETE', +] + +USERNAME_REPLACEMENT_WORKER = "REPLACE WITH VALID USERNAME" + +################################# edx-rbac ################################# + +SYSTEM_WIDE_ROLE_CLASSES = [] + +############################### Brand Logos ################################ + +LOGO_IMAGE_EXTRA_TEXT = '' +LOGO_URL = None +LOGO_URL_PNG = None +LOGO_TRADEMARK_URL = None +FAVICON_URL = None +DEFAULT_EMAIL_LOGO_URL = 'https://edx-cdn.org/v3/default/logo.png' + +############################## Course Import ############################### + +COURSE_OLX_VALIDATION_STAGE = 1 +COURSE_OLX_VALIDATION_IGNORE_LIST = None + + +############################## Documentation ############################### + +CALCULATOR_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/add_calculator.html" +DISCUSSIONS_HELP_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_discussions.html" +EDXNOTES_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/enable_notes.html" +PROGRESS_HELP_URL = "https://docs.openedx.org/en/latest/educators/references/data/progress_page.html" +TEAMS_HELP_URL = "https://docs.openedx.org/en/latest/educators/navigation/advanced_features.html#use-teams-in-your-course" +TEXTBOOKS_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/manage_textbooks.html" +WIKI_HELP_URL = "https://docs.openedx.org/en/latest/educators/concepts/communication/about_course_wiki.html" +CUSTOM_PAGES_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/manage_custom_page.html" +ORA_SETTINGS_HELP_URL = "https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/Manage_ORA_Assignment.html" + +########################## API Access Management ########################### + +API_DOCUMENTATION_URL = 'https://course-catalog-api-guide.readthedocs.io/en/latest/' +AUTH_DOCUMENTATION_URL = 'https://course-catalog-api-guide.readthedocs.io/en/latest/authentication/index.html' + +API_ACCESS_FROM_EMAIL = 'api-requests@example.com' +API_ACCESS_MANAGER_EMAIL = 'api-access@example.com' + +############################## Notifications ############################### + +NOTIFICATIONS_EXPIRY = 60 +EXPIRED_NOTIFICATIONS_DELETE_BATCH_SIZE = 10000 +NOTIFICATION_CREATION_BATCH_SIZE = 76 +NOTIFICATIONS_DEFAULT_FROM_EMAIL = "no-reply@example.com" +NOTIFICATION_DIGEST_LOGO = DEFAULT_EMAIL_LOGO_URL + +############################# AI Translations ############################## + +AI_TRANSLATIONS_API_URL = 'http://localhost:18760/api/v1' + +################################ Event Bus ################################# + + +def should_send_learning_badge_events(settings): + return settings.BADGES_ENABLED + ############################## Miscellaneous ############################### COURSE_MODE_DEFAULTS = { @@ -840,29 +2302,23 @@ def _make_locale_paths(settings): lambda settings: (settings.LMS_INTERNAL_ROOT_URL or '') + settings.LMS_ENROLLMENT_API_PATH ) -# This is the domain that is used to set shared cookies between various sub-domains. -SHARED_COOKIE_DOMAIN = Derived(lambda settings: settings.SESSION_COOKIE_DOMAIN) - -SESSION_INACTIVITY_TIMEOUT_IN_SECONDS = None - -STATIC_ROOT_BASE = None - VIDEO_CDN_URL = { # 'EXAMPLE_COUNTRY_CODE': "http://example.com/edx/video?s3_url=" } -# List of logout URIs for each IDA that the learner should be logged out of when they logout of the LMS -# or CMS. Only applies to IDA for which the social auth flow uses DOT (Django OAuth Toolkit). -IDA_LOGOUT_URI_LIST = [] - SOFTWARE_SECURE_VERIFICATION_ROUTING_KEY = Derived(lambda settings: settings.HIGH_PRIORITY_QUEUE) # Queue to use for updating grades due to grading policy change POLICY_CHANGE_GRADES_ROUTING_KEY = Derived(lambda settings: settings.DEFAULT_PRIORITY_QUEUE) +# Rate limit for regrading tasks that a grading policy change can kick off +POLICY_CHANGE_TASK_RATE_LIMIT = '900/h' + # Queue to use for individual learner course regrades SINGLE_LEARNER_COURSE_REGRADE_ROUTING_KEY = Derived(lambda settings: settings.DEFAULT_PRIORITY_QUEUE) +STATIC_ROOT_BASE = None + # .. setting_name: STATIC_URL_BASE # .. setting_default: "None" # .. setting_description: The LMS and CMS use this to construct ``STATIC_URL`` by appending @@ -881,10 +2337,92 @@ def _make_locale_paths(settings): # "PREPEND_LOCALE_PATHS" : ["/edx/my-locales/"]. PREPEND_LOCALE_PATHS = [] -# API access management -API_DOCUMENTATION_URL = 'https://course-catalog-api-guide.readthedocs.io/en/latest/' -AUTH_DOCUMENTATION_URL = 'https://course-catalog-api-guide.readthedocs.io/en/latest/authentication/index.html' +# Used with Email sending +RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS = 5 +RETRY_ACTIVATION_EMAIL_TIMEOUT = 0.5 -CSRF_TRUSTED_ORIGINS = [] +# Software Secure request retry settings +# Time in seconds before a retry of the task should be 60 mints. +SOFTWARE_SECURE_REQUEST_RETRY_DELAY = 60 * 60 +# Maximum of 6 retries before giving up. +SOFTWARE_SECURE_RETRY_MAX_ATTEMPTS = 6 + +MARKETING_EMAILS_OPT_IN = False + +# Set request limits for maximum size of a request body and maximum number of GET/POST parameters. (>=Django 1.10) +# Limits are currently disabled - but can be used for finer-grained denial-of-service protection. +DATA_UPLOAD_MAX_MEMORY_SIZE = None +DATA_UPLOAD_MAX_NUMBER_FIELDS = None + +# License for serving content in China +ICP_LICENSE = None +ICP_LICENSE_INFO = {} + +ELASTIC_SEARCH_CONFIG = [ + { + 'use_ssl': False, + 'host': 'localhost', + 'port': 9200 + } +] + +LOGGING_ENV = 'sandbox' + +EDX_ROOT_URL = '' + +PARTNER_SUPPORT_EMAIL = '' + +LOCAL_LOGLEVEL = "INFO" + +LOG_DIR = '/edx/var/log/edx' + +DJFS = { + 'type': 'osfs', + 'directory_root': '/edx/var/edxapp/django-pyfs/static/django-pyfs', + 'url_root': '/static/django-pyfs', +} + +# Embargo +EMBARGO_SITE_REDIRECT_URL = None + +# shoppingcart Payment +PAYMENT_SUPPORT_EMAIL = 'billing@example.com' + +# Platform for Privacy Preferences header +P3P_HEADER = 'CP="Open EdX does not have a P3P policy."' + +# .. setting_name: CUSTOM_RESOURCE_TEMPLATES_DIRECTORY +# .. setting_default: None +# .. setting_description: Path to an existing directory of YAML files containing +# html content to be used with the subclasses of xmodule.x_module.ResourceTemplates. +# Default example templates can be found in xmodule/templates/html. +# Note that the extension used is ".yaml" and not ".yml". +# See xmodule.x_module.ResourceTemplates for usage. +# "CUSTOM_RESOURCE_TEMPLATES_DIRECTORY" : null +CUSTOM_RESOURCE_TEMPLATES_DIRECTORY = None + +# Affiliate cookie tracking +AFFILIATE_COOKIE_NAME = 'dev_affiliate_id' ENTRANCE_EXAM_MIN_SCORE_PCT = 50 + +# Initialize to 'release', but read from JSON in production.py +EDX_PLATFORM_REVISION = 'release' + +# Proctoring configuration (redirct URLs and keys shared between systems) +PROCTORING_BACKENDS = { + 'DEFAULT': 'null', + # The null key needs to be quoted because + # null is a language independent type in YAML + 'null': {} +} + +DEPRECATED_ADVANCED_COMPONENT_TYPES = [] + +SYSLOG_SERVER = '' +FEEDBACK_SUBMISSION_EMAIL = '' + +# keys for big blue button live provider +COURSE_LIVE_GLOBAL_CREDENTIALS = {} + +BEAMER_PRODUCT_ID = ""