Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 28 additions & 29 deletions configuration_files/cms.yml
Original file line number Diff line number Diff line change
Expand Up @@ -296,35 +296,34 @@ EXTRA_MIDDLEWARE_CLASSES: []
FACEBOOK_API_VERSION: v2.1
FACEBOOK_APP_ID: FACEBOOK_APP_ID
FACEBOOK_APP_SECRET: FACEBOOK_APP_SECRET
FEATURES:
AUTH_USE_OPENID_PROVIDER: true
AUTOMATIC_AUTH_FOR_TESTING: false
CUSTOM_COURSES_EDX: false
ENABLE_BULK_ENROLLMENT_VIEW: false
ENABLE_COMBINED_LOGIN_REGISTRATION: true
ENABLE_CORS_HEADERS: false
ENABLE_COUNTRY_ACCESS: false
ENABLE_CREDIT_API: false
ENABLE_CREDIT_ELIGIBILITY: false
ENABLE_CROSS_DOMAIN_CSRF_COOKIE: false
ENABLE_CSMH_EXTENDED: true
ENABLE_DISCUSSION_HOME_PANEL: true
ENABLE_DISCUSSION_SERVICE: true
ENABLE_EDXNOTES: true
ENABLE_ENROLLMENT_RESET: false
ENABLE_EXPORT_GIT: false
ENABLE_GRADE_DOWNLOADS: true
ENABLE_LTI_PROVIDER: false
ENABLE_MOBILE_REST_API: false
ENABLE_OAUTH2_PROVIDER: false
ENABLE_PUBLISHER: false
ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES: true
ENABLE_SPECIAL_EXAMS: false
ENABLE_SYSADMIN_DASHBOARD: false
ENABLE_THIRD_PARTY_AUTH: true
ENABLE_VIDEO_UPLOAD_PIPELINE: false
SHOW_FOOTER_LANGUAGE_SELECTOR: false
SHOW_HEADER_LANGUAGE_SELECTOR: false
AUTH_USE_OPENID_PROVIDER: true
AUTOMATIC_AUTH_FOR_TESTING: false
CUSTOM_COURSES_EDX: false
ENABLE_BULK_ENROLLMENT_VIEW: false
ENABLE_COMBINED_LOGIN_REGISTRATION: true
ENABLE_CORS_HEADERS: false
ENABLE_COUNTRY_ACCESS: false
ENABLE_CREDIT_API: false
ENABLE_CREDIT_ELIGIBILITY: false
ENABLE_CROSS_DOMAIN_CSRF_COOKIE: false
ENABLE_CSMH_EXTENDED: true
ENABLE_DISCUSSION_HOME_PANEL: true
ENABLE_DISCUSSION_SERVICE: true
ENABLE_EDXNOTES: true
ENABLE_ENROLLMENT_RESET: false
ENABLE_EXPORT_GIT: false
ENABLE_GRADE_DOWNLOADS: true
ENABLE_LTI_PROVIDER: false
ENABLE_MOBILE_REST_API: false
ENABLE_OAUTH2_PROVIDER: false
ENABLE_PUBLISHER: false
ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES: true
ENABLE_SPECIAL_EXAMS: false
ENABLE_SYSADMIN_DASHBOARD: false
ENABLE_THIRD_PARTY_AUTH: true
ENABLE_VIDEO_UPLOAD_PIPELINE: false
SHOW_FOOTER_LANGUAGE_SELECTOR: false
SHOW_HEADER_LANGUAGE_SELECTOR: false
FEEDBACK_SUBMISSION_EMAIL: ''
FERNET_KEYS:
- DUMMY KEY CHANGE BEFORE GOING TO PRODUCTION
Expand Down
57 changes: 28 additions & 29 deletions configuration_files/lms.yml
Original file line number Diff line number Diff line change
Expand Up @@ -327,35 +327,34 @@ EXTRA_MIDDLEWARE_CLASSES: []
FACEBOOK_API_VERSION: v2.1
FACEBOOK_APP_ID: FACEBOOK_APP_ID
FACEBOOK_APP_SECRET: FACEBOOK_APP_SECRET
FEATURES:
AUTH_USE_OPENID_PROVIDER: true
AUTOMATIC_AUTH_FOR_TESTING: false
CUSTOM_COURSES_EDX: false
ENABLE_BULK_ENROLLMENT_VIEW: false
ENABLE_COMBINED_LOGIN_REGISTRATION: true
ENABLE_CORS_HEADERS: false
ENABLE_COUNTRY_ACCESS: false
ENABLE_CREDIT_API: false
ENABLE_CREDIT_ELIGIBILITY: false
ENABLE_CROSS_DOMAIN_CSRF_COOKIE: false
ENABLE_CSMH_EXTENDED: true
ENABLE_DISCUSSION_HOME_PANEL: true
ENABLE_DISCUSSION_SERVICE: true
ENABLE_EDXNOTES: true
ENABLE_ENROLLMENT_RESET: false
ENABLE_EXPORT_GIT: false
ENABLE_GRADE_DOWNLOADS: true
ENABLE_LTI_PROVIDER: false
ENABLE_MOBILE_REST_API: false
ENABLE_OAUTH2_PROVIDER: false
ENABLE_PUBLISHER: false
ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES: true
ENABLE_SPECIAL_EXAMS: false
ENABLE_SYSADMIN_DASHBOARD: false
ENABLE_THIRD_PARTY_AUTH: true
ENABLE_VIDEO_UPLOAD_PIPELINE: false
SHOW_FOOTER_LANGUAGE_SELECTOR: false
SHOW_HEADER_LANGUAGE_SELECTOR: false
AUTH_USE_OPENID_PROVIDER: true
AUTOMATIC_AUTH_FOR_TESTING: false
Copy link

Copilot AI Sep 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the parent FEATURES: key and promoting these entries to top-level is a breaking shape change for any loader logic expecting a FEATURES mapping. Confirm and update any configuration parsing code (or provide a migration path); if compatibility is required, consider keeping an empty FEATURES node or duplicating keys during a transition period.

Suggested change
AUTOMATIC_AUTH_FOR_TESTING: false
AUTOMATIC_AUTH_FOR_TESTING: false
FEATURES:
CUSTOM_COURSES_EDX: false
ENABLE_BULK_ENROLLMENT_VIEW: false
ENABLE_COMBINED_LOGIN_REGISTRATION: true
ENABLE_CORS_HEADERS: false
ENABLE_COUNTRY_ACCESS: false
ENABLE_CREDIT_API: false
ENABLE_CREDIT_ELIGIBILITY: false
ENABLE_CROSS_DOMAIN_CSRF_COOKIE: false
ENABLE_CSMH_EXTENDED: true
ENABLE_DISCUSSION_HOME_PANEL: true
ENABLE_DISCUSSION_SERVICE: true
ENABLE_EDXNOTES: true
ENABLE_ENROLLMENT_RESET: false
ENABLE_EXPORT_GIT: false

Copilot uses AI. Check for mistakes.
CUSTOM_COURSES_EDX: false
ENABLE_BULK_ENROLLMENT_VIEW: false
ENABLE_COMBINED_LOGIN_REGISTRATION: true
ENABLE_CORS_HEADERS: false
ENABLE_COUNTRY_ACCESS: false
ENABLE_CREDIT_API: false
ENABLE_CREDIT_ELIGIBILITY: false
ENABLE_CROSS_DOMAIN_CSRF_COOKIE: false
ENABLE_CSMH_EXTENDED: true
ENABLE_DISCUSSION_HOME_PANEL: true
ENABLE_DISCUSSION_SERVICE: true
ENABLE_EDXNOTES: true
ENABLE_ENROLLMENT_RESET: false
ENABLE_EXPORT_GIT: false
ENABLE_GRADE_DOWNLOADS: true
ENABLE_LTI_PROVIDER: false
ENABLE_MOBILE_REST_API: false
ENABLE_OAUTH2_PROVIDER: false
ENABLE_PUBLISHER: false
ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES: true
ENABLE_SPECIAL_EXAMS: false
ENABLE_SYSADMIN_DASHBOARD: false
ENABLE_THIRD_PARTY_AUTH: true
ENABLE_VIDEO_UPLOAD_PIPELINE: false
SHOW_FOOTER_LANGUAGE_SELECTOR: false
SHOW_HEADER_LANGUAGE_SELECTOR: false
FEEDBACK_SUBMISSION_EMAIL: ''
FERNET_KEYS:
- DUMMY KEY CHANGE BEFORE GOING TO PRODUCTION
Expand Down
30 changes: 15 additions & 15 deletions py_configuration_files/cms.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@

LMS_BASE = 'localhost:18000'
LMS_ROOT_URL = f'http://{LMS_BASE}'
FEATURES['PREVIEW_LMS_BASE'] = "preview." + LMS_BASE
PREVIEW_LMS_BASE = "preview." + LMS_BASE

FRONTEND_REGISTER_URL = LMS_ROOT_URL + '/register'

################################## Video Pipeline Settings #########################

FEATURES['ENABLE_VIDEO_UPLOAD_PIPELINE'] = True
ENABLE_VIDEO_UPLOAD_PIPELINE = True

########################### PIPELINE #################################

Expand Down Expand Up @@ -132,7 +132,7 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing


################################ MILESTONES ################################
FEATURES['MILESTONES_APP'] = True
MILESTONES_APP = True

########################### ORGANIZATIONS #################################
# Although production studio.edx.org disables `ORGANIZATIONS_AUTOCREATE`,
Expand All @@ -142,16 +142,16 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
ORGANIZATIONS_AUTOCREATE = True

################################ ENTRANCE EXAMS ################################
FEATURES['ENTRANCE_EXAMS'] = True
ENTRANCE_EXAMS = True

################################ COURSE LICENSES ################################
FEATURES['LICENSING'] = True
LICENSING = True
# Needed to enable licensing on video blocks
XBLOCK_SETTINGS.update({'VideoBlock': {'licensing_enabled': True}})

################################ SEARCH INDEX ################################
FEATURES['ENABLE_COURSEWARE_INDEX'] = True
FEATURES['ENABLE_LIBRARY_INDEX'] = False
ENABLE_COURSEWARE_INDEX = True
ENABLE_LIBRARY_INDEX = False
SEARCH_ENGINE = "search.elastic.ElasticSearchEngine"

ELASTIC_SEARCH_CONFIG = [
Expand All @@ -163,22 +163,22 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
]

################################ COURSE DISCUSSIONS ###########################
FEATURES['ENABLE_DISCUSSION_SERVICE'] = True
ENABLE_DISCUSSION_SERVICE = True

################################ CREDENTIALS ###########################
CREDENTIALS_SERVICE_USERNAME = 'credentials_worker'

########################## Certificates Web/HTML View #######################
FEATURES['CERTIFICATES_HTML_VIEW'] = True
CERTIFICATES_HTML_VIEW = True

########################## AUTHOR PERMISSION #######################
FEATURES['ENABLE_CREATOR_GROUP'] = True
ENABLE_CREATOR_GROUP = True

########################## Library creation organizations restriction #######################
FEATURES['ENABLE_ORGANIZATION_STAFF_ACCESS_FOR_CONTENT_LIBRARIES'] = True
ENABLE_ORGANIZATION_STAFF_ACCESS_FOR_CONTENT_LIBRARIES = True

################### FRONTEND APPLICATION PUBLISHER URL ###################
FEATURES['FRONTEND_APP_PUBLISHER_URL'] = 'http://localhost:18400'
FRONTEND_APP_PUBLISHER_URL = 'http://localhost:18400'

################### FRONTEND APPLICATION COURSE AUTHORING ###################
COURSE_AUTHORING_MICROFRONTEND_URL = 'http://localhost:2001'
Expand Down Expand Up @@ -252,13 +252,13 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
SECRET_KEY = '85920908f28904ed733fe576320db18cabd7b6cd'

############# CORS headers for cross-domain requests #################
FEATURES['ENABLE_CORS_HEADERS'] = True
ENABLE_CORS_HEADERS = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True

################### Special Exams (Proctoring) and Prereqs ###################
FEATURES['ENABLE_SPECIAL_EXAMS'] = True
FEATURES['ENABLE_PREREQUISITE_COURSES'] = True
ENABLE_SPECIAL_EXAMS = True
ENABLE_PREREQUISITE_COURSES = True

# Used in edx-proctoring for ID generation in lieu of SECRET_KEY - dummy value
# (ref MST-637)
Expand Down
67 changes: 32 additions & 35 deletions py_configuration_files/lms.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,32 +145,31 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
WEBPACK_CONFIG_PATH = 'webpack.dev.config.js'

########################### VERIFIED CERTIFICATES #################################

FEATURES['AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING'] = True
AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING = True

########################### External REST APIs #################################
FEATURES['ENABLE_OAUTH2_PROVIDER'] = True
FEATURES['ENABLE_MOBILE_REST_API'] = True
FEATURES['ENABLE_VIDEO_ABSTRACTION_LAYER_API'] = True
ENABLE_OAUTH2_PROVIDER = True
ENABLE_MOBILE_REST_API = True
ENABLE_VIDEO_ABSTRACTION_LAYER_API = True

########################## SECURITY #######################
FEATURES['ENABLE_MAX_FAILED_LOGIN_ATTEMPTS'] = False
FEATURES['SQUELCH_PII_IN_LOGS'] = False
FEATURES['PREVENT_CONCURRENT_LOGINS'] = False
ENABLE_MAX_FAILED_LOGIN_ATTEMPTS = False
SQUELCH_PII_IN_LOGS = False
PREVENT_CONCURRENT_LOGINS = False

########################### Milestones #################################
FEATURES['MILESTONES_APP'] = True
MILESTONES_APP = True

########################### Entrance Exams #################################
FEATURES['ENTRANCE_EXAMS'] = True
ENTRANCE_EXAMS = True

################################ COURSE LICENSES ################################
FEATURES['LICENSING'] = True
LICENSING = True


########################## Courseware Search #######################
FEATURES['ENABLE_COURSEWARE_SEARCH'] = True
FEATURES['ENABLE_COURSEWARE_SEARCH_FOR_COURSE_STAFF'] = True
ENABLE_COURSEWARE_SEARCH = True
ENABLE_COURSEWARE_SEARCH_FOR_COURSE_STAFF = True
SEARCH_ENGINE = 'search.elastic.ElasticSearchEngine'
SEARCH_COURSEWARE_CONTENT_LOG_PARAMS = True

Expand All @@ -183,11 +182,11 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
]

########################## Dashboard Search #######################
FEATURES['ENABLE_DASHBOARD_SEARCH'] = False
ENABLE_DASHBOARD_SEARCH = False


########################## Certificates Web/HTML View #######################
FEATURES['CERTIFICATES_HTML_VIEW'] = True
CERTIFICATES_HTML_VIEW = True


########################## Course Discovery #######################
Expand All @@ -209,14 +208,14 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
'language': LANGUAGE_MAP,
}

FEATURES['ENABLE_COURSE_DISCOVERY'] = False
ENABLE_COURSE_DISCOVERY = False
# Setting for overriding default filtering facets for Course discovery
# COURSE_DISCOVERY_FILTERS = ["org", "language", "modes"]
FEATURES['COURSES_ARE_BROWSEABLE'] = True
COURSES_ARE_BROWSEABLE = True
HOMEPAGE_COURSE_MAX = 9

# Software secure fake page feature flag
FEATURES['ENABLE_SOFTWARE_SECURE_FAKE'] = True
ENABLE_SOFTWARE_SECURE_FAKE = True

# Setting for the testing of Software Secure Result Callback
VERIFY_STUDENT["SOFTWARE_SECURE"] = {
Expand All @@ -230,14 +229,14 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing


########################## Shopping cart ##########################
FEATURES['ENABLE_COSMETIC_DISPLAY_PRICE'] = True
ENABLE_COSMETIC_DISPLAY_PRICE = True

######################### Program Enrollments #####################
FEATURES['ENABLE_ENROLLMENT_RESET'] = True
ENABLE_ENROLLMENT_RESET = True

########################## Third Party Auth #######################

if FEATURES.get('ENABLE_THIRD_PARTY_AUTH') and (
if ENABLE_THIRD_PARTY_AUTH and (
Copy link

Copilot AI Sep 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously this conditional used FEATURES.get('ENABLE_THIRD_PARTY_AUTH'), which safely returned None/False if the flag was absent; switching to a bare variable introduces a potential NameError if ENABLE_THIRD_PARTY_AUTH is not defined earlier. Define ENABLE_THIRD_PARTY_AUTH above (e.g., ENABLE_THIRD_PARTY_AUTH = False) or guard with globals().get('ENABLE_THIRD_PARTY_AUTH') to preserve prior fallback behavior.

Suggested change
if ENABLE_THIRD_PARTY_AUTH and (
if globals().get('ENABLE_THIRD_PARTY_AUTH') and (

Copilot uses AI. Check for mistakes.
'common.djangoapps.third_party_auth.dummy.DummyBackend' not in AUTHENTICATION_BACKENDS
):
AUTHENTICATION_BACKENDS = ['common.djangoapps.third_party_auth.dummy.DummyBackend'] + list(AUTHENTICATION_BACKENDS)
Expand Down Expand Up @@ -300,7 +299,7 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
LEARNER_HOME_MICROFRONTEND_URL = 'http://localhost:1996'

###################### Cross-domain requests ######################
FEATURES['ENABLE_CORS_HEADERS'] = True
ENABLE_CORS_HEADERS = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = ()
CORS_ORIGIN_ALLOW_ALL = True
Expand Down Expand Up @@ -412,17 +411,15 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing

############## Docker based devstack settings #######################

FEATURES.update({
'AUTOMATIC_AUTH_FOR_TESTING': True,
'ENABLE_DISCUSSION_SERVICE': True,
'SHOW_HEADER_LANGUAGE_SELECTOR': True,
AUTOMATIC_AUTH_FOR_TESTING = True
ENABLE_DISCUSSION_SERVICE = True
SHOW_HEADER_LANGUAGE_SELECTOR = True

Comment on lines +416 to 417
Copy link

Copilot AI Sep 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] With the removal of the shared FEATURES container, related feature flags are now standalone constants; consider adding a brief comment block or a consistent prefix (e.g., FEATURE_) to retain logical grouping and make future bulk operations (search, tooling) easier.

Suggested change
SHOW_HEADER_LANGUAGE_SELECTOR = True
# Feature flags (for devstack and development purposes)
FEATURE_SHOW_HEADER_LANGUAGE_SELECTOR = True

Copilot uses AI. Check for mistakes.
# Enable enterprise integration by default.
# See https://github.com/openedx/edx-enterprise/blob/master/docs/development.rst for
# more background on edx-enterprise.
# Toggle this off if you don't want anything to do with enterprise in devstack.
'ENABLE_ENTERPRISE_INTEGRATION': True,
})
# Enable enterprise integration by default.
# See https://github.com/openedx/edx-enterprise/blob/master/docs/development.rst for
# more background on edx-enterprise.
# Toggle this off if you don't want anything to do with enterprise in devstack.
ENABLE_ENTERPRISE_INTEGRATION = True
Comment on lines +414 to +422
Copy link

Copilot AI Sep 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] With the removal of the shared FEATURES container, related feature flags are now standalone constants; consider adding a brief comment block or a consistent prefix (e.g., FEATURE_) to retain logical grouping and make future bulk operations (search, tooling) easier.

Copilot uses AI. Check for mistakes.

ENABLE_MKTG_SITE = os.environ.get('ENABLE_MARKETING_SITE', True)
MARKETING_SITE_ROOT = os.environ.get('MARKETING_SITE_ROOT', 'http://localhost:8080')
Expand Down Expand Up @@ -468,7 +465,7 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
'system_wide_roles.SystemWideRoleAssignment',
)

if FEATURES.get('ENABLE_ENTERPRISE_INTEGRATION'):
if ENABLE_ENTERPRISE_INTEGRATION:
SYSTEM_WIDE_ROLE_CLASSES.append(
'enterprise.SystemWideEnterpriseUserRoleAssignment',
)
Expand Down Expand Up @@ -504,8 +501,8 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
# LOGGING['loggers']['django.db.backends'] = {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False}

################### Special Exams (Proctoring) and Prereqs ###################
FEATURES['ENABLE_SPECIAL_EXAMS'] = True
FEATURES['ENABLE_PREREQUISITE_COURSES'] = True
ENABLE_SPECIAL_EXAMS = True
ENABLE_PREREQUISITE_COURSES = True

# Used in edx-proctoring for ID generation in lieu of SECRET_KEY - dummy value
# (ref MST-637)
Expand Down
Loading