feat!: Remove unused Django settings files

BREAKING CHANGE: This removes all Django settings files
except {lms,cms}/envs/{production,devstack,test}.py.
Operators using any other edx-platform Django settings
files should move to {lms,cms}/envs/production.py, or
they should copy the settings file they need out of edx-platform
and into their own configuration sources.

Part of: https://github.com/openedx/edx-platform/issues/36905
This commit is contained in:
Kyle McCormick
2025-06-13 13:19:41 -04:00
committed by Kyle McCormick
parent 01beca4ebb
commit a7eb261330
16 changed files with 0 additions and 1656 deletions

View File

@@ -1,13 +0,0 @@
"""
Settings for running management commands for the Analytics Exporter.
The Analytics Exporter jobs run edxapp management commands using production
settings and configuration, however they currently DO NOT use edxapp production
environments (such as edxapp Amazon AMIs or Docker images) where theme files
get installed. As a result we must disable comprehensive theming or else
startup checks from the theming app will throw an error due to missing themes.
"""
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import
ENABLE_COMPREHENSIVE_THEMING = False

View File

@@ -1,553 +0,0 @@
# This file is an experimental extraction of /edx/etc/studio.yml from
# a CMS devstack container.
#
# When devstack is configured to use the new `openedx/` images
# instead of the old `edxops/edxapp` image, it will use this file
# as input to cms/envs/production.py (and, in turn, cms/envs/devstack.py).
# If you are using devstack with the `edxops/edxapp` image, though,
# this file is NOT used.
#
# Q. Should I update this file when I update devstack.py?
# A. You don't *have* to, because settings in devstack.py
# override these settings. But, it doesn't harm to also make them
# here in order to quell confusion. The hope is that we'll
# adpot OEP-45 eventually, which recommends against having
# a devstack.py at all.
#
# This is part of the effort to move our dev tools off of Ansible and
# Paver, described here: https://github.com/openedx/devstack/pull/866
# TODO: If the effort described above is abandoned, then this file should
# probably be deleted.
ACTIVATION_EMAIL_SUPPORT_LINK: ''
AFFILIATE_COOKIE_NAME: dev_affiliate_id
ALTERNATE_WORKER_QUEUES: lms
ANALYTICS_DASHBOARD_NAME: Your Platform Name Here Insights
ANALYTICS_DASHBOARD_URL: http://localhost:18110/courses
AUTH_PASSWORD_VALIDATORS:
- NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator
- NAME: common.djangoapps.util.password_policy_validators.MinimumLengthValidator
OPTIONS:
min_length: 2
- NAME: common.djangoapps.util.password_policy_validators.MaximumLengthValidator
OPTIONS:
max_length: 75
AUTHORING_API_URL: https://example.com
AWS_ACCESS_KEY_ID: null
AWS_QUERYSTRING_AUTH: false
AWS_S3_CUSTOM_DOMAIN: SET-ME-PLEASE (ex. bucket-name.s3.amazonaws.com)
AWS_SECRET_ACCESS_KEY: null
AWS_SES_REGION_ENDPOINT: email.us-east-1.amazonaws.com
AWS_SES_REGION_NAME: us-east-1
AWS_STORAGE_BUCKET_NAME: SET-ME-PLEASE (ex. bucket-name)
BASE_COOKIE_DOMAIN: localhost
BLOCK_STRUCTURES_SETTINGS:
COURSE_PUBLISH_TASK_DELAY: 30
TASK_DEFAULT_RETRY_DELAY: 30
TASK_MAX_RETRIES: 5
BRANCH_IO_KEY: ''
BUGS_EMAIL: bugs@example.com
BULK_EMAIL_DEFAULT_FROM_EMAIL: no-reply@example.com
BULK_EMAIL_EMAILS_PER_TASK: 500
BULK_EMAIL_LOG_SENT_EMAILS: false
CACHES:
celery:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: celery
LOCATION:
- edx.devstack.memcached:11211
TIMEOUT: '7200'
configuration:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: 78f87108afce
LOCATION:
- edx.devstack.memcached:11211
course_structure_cache:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: course_structure
LOCATION:
- edx.devstack.memcached:11211
TIMEOUT: '604800'
default:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
ignore_exc: true
no_delay: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: default
LOCATION:
- edx.devstack.memcached:11211
VERSION: '1'
general:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: general
LOCATION:
- edx.devstack.memcached:11211
mongo_metadata_inheritance:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: mongo_metadata_inheritance
LOCATION:
- edx.devstack.memcached:11211
TIMEOUT: 300
staticfiles:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: 78f87108afce_general
LOCATION:
- edx.devstack.memcached:11211
CAS_ATTRIBUTE_CALLBACK: ''
CAS_EXTRA_LOGIN_PARAMS: ''
CAS_SERVER_URL: ''
CELERYBEAT_SCHEDULER: celery.beat:PersistentScheduler
CELERY_BROKER_HOSTNAME: localhost
CELERY_BROKER_PASSWORD: ''
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_USER: ''
CELERY_BROKER_USE_SSL: false
CELERY_BROKER_VHOST: ''
CELERY_EVENT_QUEUE_TTL: null
CELERY_QUEUES:
- edx.cms.core.default
- edx.cms.core.high
CELERY_TIMEZONE: UTC
CERTIFICATE_TEMPLATE_LANGUAGES:
en: English
es: Español
CERT_QUEUE: certificates
CMS_BASE: edx.devstack.studio:18010
CODE_JAIL:
limits:
CPU: 1
FSIZE: 1048576
PROXY: 0
REALTIME: 3
VMEM: 536870912
python_bin: /edx/app/edxapp/venvs/edxapp-sandbox/bin/python
user: sandbox
COMMENTS_SERVICE_KEY: password
COMMENTS_SERVICE_URL: http://localhost:18080
COMPREHENSIVE_THEME_DIRS:
- ''
COMPREHENSIVE_THEME_LOCALE_PATHS: []
CONTACT_EMAIL: info@example.com
CONTENTSTORE:
ADDITIONAL_OPTIONS: {}
DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: PRIMARY
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ENGINE: xmodule.contentstore.mongo.MongoContentStore
OPTIONS:
auth_source: ''
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
ssl: false
user: edxapp
CORS_ORIGIN_ALLOW_ALL: false
CORS_ORIGIN_WHITELIST: []
COURSES_WITH_UNSAFE_CODE: []
COURSE_ABOUT_VISIBILITY_PERMISSION: see_exists
COURSE_AUTHORING_MICROFRONTEND_URL: null
COURSE_CATALOG_API_URL: http://localhost:8008/api/v1
COURSE_CATALOG_URL_ROOT: http://localhost:8008
COURSE_CATALOG_VISIBILITY_PERMISSION: see_exists
COURSE_IMPORT_EXPORT_BUCKET: ''
CREDENTIALS_INTERNAL_SERVICE_URL: http://localhost:8005
CREDENTIALS_PUBLIC_SERVICE_URL: http://localhost:8005
CREDIT_PROVIDER_SECRET_KEYS: {}
CROSS_DOMAIN_CSRF_COOKIE_DOMAIN: ''
CROSS_DOMAIN_CSRF_COOKIE_NAME: ''
CSRF_COOKIE_SECURE: false
CSRF_TRUSTED_ORIGINS: []
DASHBOARD_COURSE_LIMIT: null
DATABASES:
default:
ATOMIC_REQUESTS: true
CONN_MAX_AGE: 0
ENGINE: django.db.backends.mysql
HOST: edx.devstack.mysql80
NAME: edxapp
OPTIONS:
isolation_level: read committed
PASSWORD: password
PORT: '3306'
USER: edxapp001
read_replica:
CONN_MAX_AGE: 0
ENGINE: django.db.backends.mysql
HOST: edx.devstack.mysql80
NAME: edxapp
OPTIONS:
isolation_level: read committed
PASSWORD: password
PORT: '3306'
USER: edxapp001
student_module_history:
CONN_MAX_AGE: 0
ENGINE: django.db.backends.mysql
HOST: edx.devstack.mysql80
NAME: edxapp_csmh
OPTIONS:
isolation_level: read committed
PASSWORD: password
PORT: '3306'
USER: edxapp001
DATA_DIR: /edx/var/edxapp
DEFAULT_COURSE_VISIBILITY_IN_CATALOG: both
DEFAULT_FEEDBACK_EMAIL: feedback@example.com
DEFAULT_FILE_STORAGE: django.core.files.storage.FileSystemStorage
DEFAULT_FROM_EMAIL: registration@example.com
DEFAULT_JWT_ISSUER:
AUDIENCE: lms-key
ISSUER: http://edx.devstack.lms:18000/oauth2
SECRET_KEY: lms-secret
DEFAULT_MOBILE_AVAILABLE: false
DEFAULT_SITE_THEME: ''
DEPRECATED_ADVANCED_COMPONENT_TYPES: []
DJFS:
directory_root: /edx/var/edxapp/django-pyfs/static/django-pyfs
type: osfs
url_root: /static/django-pyfs
DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: PRIMARY
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ECOMMERCE_API_SIGNING_KEY: lms-secret
ECOMMERCE_API_URL: http://localhost:8002/api/v2
ECOMMERCE_PUBLIC_URL_ROOT: http://localhost:8002
EDXMKTG_USER_INFO_COOKIE_NAME: edx-user-info
EDX_PLATFORM_REVISION: master
ELASTIC_SEARCH_CONFIG:
- host: edx.devstack.elasticsearch
port: 9200
use_ssl: false
EMAIL_BACKEND: django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST: localhost
EMAIL_HOST_PASSWORD: ''
EMAIL_HOST_USER: ''
EMAIL_PORT: 25
EMAIL_USE_TLS: false
ENABLE_COMPREHENSIVE_THEMING: false
ENTERPRISE_API_URL: http://edx.devstack.lms:18000/enterprise/api/v1
ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS: {}
ENTERPRISE_SERVICE_WORKER_USERNAME: enterprise_worker
EVENT_TRACKING_SEGMENTIO_EMIT_WHITELIST: []
EXAMS_API_URL: http://localhost:8740/api/v1
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_MKTG_SITE: 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
FILE_UPLOAD_STORAGE_BUCKET_NAME: SET-ME-PLEASE (ex. bucket-name)
FILE_UPLOAD_STORAGE_PREFIX: submissions_attachments
FINANCIAL_REPORTS:
BUCKET: null
ROOT_PATH: sandbox
STORAGE_TYPE: localfs
GITHUB_REPO_ROOT: /edx/var/edxapp/data
GIT_REPO_EXPORT_DIR: /edx/var/edxapp/export_course_repos
GOOGLE_ANALYTICS_ACCOUNT: null
GRADES_DOWNLOAD:
BUCKET: ''
ROOT_PATH: ''
STORAGE_CLASS: django.core.files.storage.FileSystemStorage
STORAGE_KWARGS:
location: /tmp/edx-s3/grades
STORAGE_TYPE: ''
HELP_TOKENS_BOOKS:
course_author: http://edx.readthedocs.io/projects/open-edx-building-and-running-a-course
learner: http://edx.readthedocs.io/projects/open-edx-learner-guide
ICP_LICENSE: null
ICP_LICENSE_INFO: {}
IDA_LOGOUT_URI_LIST: []
ID_VERIFICATION_SUPPORT_LINK: ''
INTEGRATED_CHANNELS_API_CHUNK_TRANSMISSION_LIMIT:
SAP: 1
JWT_AUTH:
JWT_AUDIENCE: lms-key
JWT_AUTH_COOKIE_HEADER_PAYLOAD: edx-jwt-cookie-header-payload
JWT_AUTH_COOKIE_SIGNATURE: edx-jwt-cookie-signature
JWT_ISSUER: http://edx.devstack.lms:18000/oauth2
JWT_ISSUERS:
- AUDIENCE: lms-key
ISSUER: http://edx.devstack.lms:18000/oauth2
SECRET_KEY: lms-secret
JWT_PUBLIC_SIGNING_JWK_SET: ''
JWT_SECRET_KEY: lms-secret
JWT_SIGNING_ALGORITHM: null
JWT_EXPIRATION: 30
JWT_ISSUER: http://edx.devstack.lms:18000/oauth2
JWT_PRIVATE_SIGNING_KEY: null
LANGUAGE_CODE: en
LANGUAGE_COOKIE: openedx-language-preference
LEARNER_PORTAL_URL_ROOT: https://learner-portal-edx.devstack.lms:18000
LMS_BASE: edx.devstack.lms:18000
LMS_INTERNAL_ROOT_URL: http://edx.devstack.lms:18000
LMS_ROOT_URL: http://edx.devstack.lms:18000
LOCAL_LOGLEVEL: INFO
LOGGING_ENV: sandbox
LOGIN_REDIRECT_WHITELIST: []
LOG_DIR: /edx/var/log/edx
MAINTENANCE_BANNER_TEXT: Sample banner message
MEDIA_ROOT: /edx/var/edxapp/media/
MEDIA_URL: /media/
MKTG_URLS: {}
MKTG_URL_LINK_MAP: {}
MOBILE_STORE_ACE_URLS: {}
MODULESTORE:
default:
ENGINE: xmodule.modulestore.mixed.MixedModuleStore
OPTIONS:
mappings: {}
stores:
- DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: PRIMARY
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ENGINE: xmodule.modulestore.split_mongo.split_draft.DraftVersioningModuleStore
NAME: split
OPTIONS:
default_class: xmodule.hidden_block.HiddenBlock
fs_root: /edx/var/edxapp/data
render_template: common.djangoapps.edxmako.shortcuts.render_to_string
- DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: PRIMARY
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ENGINE: xmodule.modulestore.mongo.DraftMongoModuleStore
NAME: draft
OPTIONS:
default_class: xmodule.hidden_block.HiddenBlock
fs_root: /edx/var/edxapp/data
render_template: common.djangoapps.edxmako.shortcuts.render_to_string
ORA2_FILE_PREFIX: default_env-default_deployment/ora2
PARSE_KEYS: {}
PARTNER_SUPPORT_EMAIL: ''
PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG:
ENFORCE_COMPLIANCE_ON_LOGIN: false
PASSWORD_RESET_SUPPORT_LINK: ''
PAYMENT_SUPPORT_EMAIL: billing@example.com
PLATFORM_DESCRIPTION: Your Platform Description Here
PLATFORM_FACEBOOK_ACCOUNT: http://www.facebook.com/YourPlatformFacebookAccount
PLATFORM_NAME: Your Platform Name Here
PLATFORM_TWITTER_ACCOUNT: '@YourPlatformTwitterAccount'
POLICY_CHANGE_GRADES_ROUTING_KEY: edx.lms.core.default
SINGLE_LEARNER_COURSE_REGRADE_ROUTING_KEY: edx.lms.core.default
PREPEND_LOCALE_PATHS: []
PRESS_EMAIL: press@example.com
PROCTORING_BACKENDS:
DEFAULT: 'null'
'null': {}
PROCTORING_SETTINGS: {}
REGISTRATION_EXTRA_FIELDS:
city: hidden
confirm_email: hidden
country: required
gender: optional
goals: optional
honor_code: required
level_of_education: optional
mailing_address: hidden
terms_of_service: hidden
year_of_birth: optional
RETIRED_EMAIL_DOMAIN: retired.invalid
RETIRED_EMAIL_PREFIX: retired__user_
RETIRED_USERNAME_PREFIX: retired__user_
RETIRED_USER_SALTS:
- OVERRIDE ME WITH A RANDOM VALUE
- ROTATE SALTS BY APPENDING NEW VALUES
RETIREMENT_SERVICE_WORKER_USERNAME: retirement_worker
RETIREMENT_STATES:
- PENDING
- ERRORED
- ABORTED
- COMPLETE
SECRET_KEY: DUMMY KEY ONLY FOR TO DEVSTACK
SEGMENT_KEY: null
SERVER_EMAIL: sre@example.com
SESSION_COOKIE_DOMAIN: ''
SESSION_COOKIE_NAME: sessionid
SESSION_COOKIE_SECURE: false
SESSION_SAVE_EVERY_REQUEST: false
SITE_NAME: localhost
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY: ''
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY_DICT: {}
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT: ''
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT_DICT: {}
SOCIAL_MEDIA_FOOTER_URLS: {}
SOCIAL_SHARING_SETTINGS:
CERTIFICATE_FACEBOOK: false
CERTIFICATE_TWITTER: false
CUSTOM_COURSE_URLS: false
DASHBOARD_FACEBOOK: false
DASHBOARD_TWITTER: false
STATIC_ROOT_BASE: /edx/var/edxapp/staticfiles
STATIC_URL_BASE: /static/
STUDIO_NAME: Studio
STUDIO_SHORT_NAME: Studio
SUPPORT_SITE_LINK: ''
SWIFT_AUTH_URL: null
SWIFT_AUTH_VERSION: null
SWIFT_KEY: null
SWIFT_REGION_NAME: null
SWIFT_TEMP_URL_DURATION: 1800
SWIFT_TEMP_URL_KEY: null
SWIFT_TENANT_ID: null
SWIFT_TENANT_NAME: null
SWIFT_USERNAME: null
SWIFT_USE_TEMP_URLS: false
SYSLOG_SERVER: ''
SYSTEM_WIDE_ROLE_CLASSES: []
TECH_SUPPORT_EMAIL: technical@example.com
TIME_ZONE: America/New_York
UNIVERSITY_EMAIL: university@example.com
USERNAME_REPLACEMENT_WORKER: OVERRIDE THIS WITH A VALID USERNAME
VIDEO_IMAGE_MAX_AGE: 31536000
VIDEO_IMAGE_SETTINGS:
DIRECTORY_PREFIX: video-images/
STORAGE_KWARGS:
location: /edx/var/edxapp/media/
VIDEO_IMAGE_MAX_BYTES: 2097152
VIDEO_IMAGE_MIN_BYTES: 2048
BASE_URL: /media/
VIDEO_TRANSCRIPTS_MAX_AGE: 31536000
VIDEO_TRANSCRIPTS_SETTINGS:
DIRECTORY_PREFIX: video-transcripts/
STORAGE_KWARGS:
location: /edx/var/edxapp/media/
VIDEO_TRANSCRIPTS_MAX_BYTES: 3145728
BASE_URL: /media/
VIDEO_UPLOAD_PIPELINE:
BUCKET: ''
ROOT_PATH: ''
WIKI_ENABLED: true
XBLOCK_FS_STORAGE_BUCKET: null
XBLOCK_FS_STORAGE_PREFIX: null
XBLOCK_SETTINGS: {}
XQUEUE_INTERFACE:
basic_auth:
- edx
- edx
django_auth:
password: password
username: lms
url: http://edx.devstack.xqueue:18040
X_FRAME_OPTIONS: DENY
YOUTUBE_API_KEY: PUT_YOUR_API_KEY_HERE
ZENDESK_API_KEY: ''
ZENDESK_CUSTOM_FIELDS: {}
ZENDESK_GROUP_ID_MAPPING: {}
ZENDESK_OAUTH_ACCESS_TOKEN: ''
ZENDESK_URL: ''
ZENDESK_USER: ''

View File

@@ -1,3 +0,0 @@
""" Overrides for Docker-based devstack. """
from .devstack import * # pylint: disable=wildcard-import, unused-wildcard-import

View File

@@ -1,46 +0,0 @@
"""
Settings to run Studio in devstack using optimized static assets.
This configuration changes Studio to use the optimized static assets generated for testing,
rather than picking up the files directly from the source tree.
The following Paver command can be used to run Studio in optimized mode:
paver devstack studio --optimized
You can also generate the assets explicitly and then run Studio:
paver update_assets cms --settings=test_static_optimized
paver devstack studio --settings=devstack_optimized --fast
Note that changes to JavaScript assets will not be picked up automatically
as they are for non-optimized devstack. Instead, update_assets must be
invoked each time that changes have been made.
"""
########################## Devstack settings ###################################
from .devstack import * # pylint: disable=wildcard-import
TEST_ROOT = REPO_ROOT / "test_root"
############################ STATIC FILES #############################
# Enable debug so that static assets are served by Django
DEBUG = True
# Set REQUIRE_DEBUG to false so that it behaves like production
REQUIRE_DEBUG = False
# Fetch static files out of the pipeline's static root
STATICFILES_STORAGE = 'pipeline.storage.PipelineManifestStorage'
# Serve static files at /static directly from the staticfiles directory under test root.
# Note: optimized files for testing are generated with settings from test_static_optimized
STATIC_URL = "/static/"
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
]
STATICFILES_DIRS = [
(TEST_ROOT / "staticfiles" / "cms").abspath(),
]

View File

@@ -1,22 +0,0 @@
"""
This config file follows the devstack enviroment, but adds the
requirement of a celery worker running in the background to process
celery tasks.
When testing locally, run lms/cms with this settings file as well, to test queueing
of tasks onto the appropriate workers.
In two separate processes on devstack:
paver devstack studio --settings=devstack_with_worker
DJANGO_SETTINGS_MODULE=cms.envs.devstack_with_worker celery worker --app=cms.celery:APP
"""
# We intentionally define lots of variables that aren't used, and
# want to import all variables from base settings files
# pylint: disable=wildcard-import, unused-wildcard-import
from cms.envs.devstack import *
# Require a separate celery worker
CELERY_ALWAYS_EAGER = False
CLEAR_REQUEST_CACHE_ON_TASK_COMPLETION = True
BROKER_URL = 'redis://:password@edx.devstack.redis:6379/'

View File

@@ -1,32 +0,0 @@
"""
Settings for OpenStack deployments.
"""
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import
SWIFT_AUTH_URL = AUTH_TOKENS.get('SWIFT_AUTH_URL')
SWIFT_AUTH_VERSION = AUTH_TOKENS.get('SWIFT_AUTH_VERSION', 1)
SWIFT_USERNAME = AUTH_TOKENS.get('SWIFT_USERNAME')
SWIFT_KEY = AUTH_TOKENS.get('SWIFT_KEY')
SWIFT_TENANT_NAME = AUTH_TOKENS.get('SWIFT_TENANT_NAME')
SWIFT_TENANT_ID = AUTH_TOKENS.get('SWIFT_TENANT_ID')
SWIFT_CONTAINER_NAME = FILE_UPLOAD_STORAGE_BUCKET_NAME
SWIFT_NAME_PREFIX = FILE_UPLOAD_STORAGE_PREFIX
SWIFT_USE_TEMP_URLS = AUTH_TOKENS.get('SWIFT_USE_TEMP_URLS', False)
SWIFT_TEMP_URL_KEY = AUTH_TOKENS.get('SWIFT_TEMP_URL_KEY')
SWIFT_TEMP_URL_DURATION = AUTH_TOKENS.get('SWIFT_TEMP_URL_DURATION', 1800) # seconds
SWIFT_CONTENT_LENGTH_FROM_FD = AUTH_TOKENS.get('SWIFT_CONTENT_LENGTH_FROM_FD', False)
SWIFT_LAZY_CONNECT = AUTH_TOKENS.get('SWIFT_LAZY_CONNECT', True)
if AUTH_TOKENS.get('SWIFT_REGION_NAME'):
SWIFT_EXTRA_OPTIONS = {'region_name': AUTH_TOKENS['SWIFT_REGION_NAME']}
if AUTH_TOKENS.get('DEFAULT_FILE_STORAGE'):
DEFAULT_FILE_STORAGE = AUTH_TOKENS.get('DEFAULT_FILE_STORAGE')
elif SWIFT_AUTH_URL and SWIFT_USERNAME and SWIFT_KEY:
DEFAULT_FILE_STORAGE = 'swift.storage.SwiftStorage'
else:
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
# Use default file storage class set above for course import/export
COURSE_IMPORT_EXPORT_STORAGE = DEFAULT_FILE_STORAGE

View File

@@ -1,54 +0,0 @@
"""
Settings used when generating static assets for use in tests.
Note: it isn't possible to have a single settings file, because Django doesn't
support both generating static assets to a directory and also serving static
from the same directory.
"""
# Start with the common settings
from openedx.core.lib.derived import derive_settings
from openedx.core.lib.django_require.staticstorage import OptimizedCachedRequireJsStorage
from .common import * # pylint: disable=wildcard-import, unused-wildcard-import
# Use an in-memory database since this settings file is only used for updating assets
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'ATOMIC_REQUESTS': True,
},
}
######################### PIPELINE ####################################
# Use RequireJS optimized storage
STATICFILES_STORAGE = f"{OptimizedCachedRequireJsStorage.__module__}.{OptimizedCachedRequireJsStorage.__name__}"
# Revert to the default set of finders as we don't want to dynamically pick up files from the pipeline
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'openedx.core.lib.xblock_pipeline.finder.XBlockPipelineFinder',
]
# Redirect to the test_root folder within the repo
TEST_ROOT = REPO_ROOT / "test_root"
LOG_DIR = (TEST_ROOT / "log").abspath()
# Store the static files under test root so that they don't overwrite existing static assets
STATIC_ROOT = (TEST_ROOT / "staticfiles" / "cms").abspath()
WEBPACK_LOADER['DEFAULT']['STATS_FILE'] = STATIC_ROOT / "webpack-stats.json"
# Disable uglify when tests are running (used by build.js).
# 1. Uglify is by far the slowest part of the build process
# 2. Having full source code makes debugging tests easier for developers
os.environ['REQUIRE_BUILD_PROFILE_OPTIMIZE'] = 'none'
########################## Derive Any Derived Settings #######################
derive_settings(__name__)

View File

@@ -1,13 +0,0 @@
"""
Settings for running management commands for the Analytics Exporter.
The Analytics Exporter jobs run edxapp management commands using production
settings and configuration, however they currently DO NOT use edxapp production
environments (such as edxapp Amazon AMIs or Docker images) where theme files
get installed. As a result we must disable comprehensive theming or else
startup checks from the theming app will throw an error due to missing themes.
"""
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import
ENABLE_COMPREHENSIVE_THEMING = False

View File

@@ -1,655 +0,0 @@
# This file is an experimental extraction of /edx/etc/lms.yml from
# a LMS devstack container.
#
# When devstack is configured to use the new `openedx/` images
# instead of the old `edxops/edxapp` image, it will use this file
# as input to lms/envs/production.py (and, in turn, lms/envs/devstack.py).
# If you are using devstack with the `edxops/edxapp` image, though,
# this file is NOT used.
#
# Q. Should I update this file when I update devstack.py?
# A. You don't *have* to, because settings in devstack.py
# override these settings. But, it doesn't harm to also make them
# here in order to quell confusion. The hope is that we'll
# adopt OEP-45 eventually, which recommends against having
# a devstack.py at all.
#
# This is part of the effort to move our dev tools off of Ansible and
# Paver, described here: https://github.com/openedx/devstack/pull/866
# TODO: If the effort described above is abandoned, then this file should
# probably be deleted.
ACCOUNT_MICROFRONTEND_URL: null
ACE_CHANNEL_DEFAULT_EMAIL: django_email
ACE_CHANNEL_SAILTHRU_API_KEY: ''
ACE_CHANNEL_SAILTHRU_API_SECRET: ''
ACE_CHANNEL_SAILTHRU_DEBUG: true
ACE_CHANNEL_SAILTHRU_TEMPLATE_NAME: null
ACE_CHANNEL_TRANSACTIONAL_EMAIL: django_email
ACE_ENABLED_CHANNELS:
- django_email
ACE_ENABLED_POLICIES:
- bulk_email_optout
ACE_ROUTING_KEY: edx.lms.core.default
ACTIVATION_EMAIL_SUPPORT_LINK: ''
AFFILIATE_COOKIE_NAME: dev_affiliate_id
ALTERNATE_WORKER_QUEUES: cms
ANALYTICS_API_KEY: ''
ANALYTICS_API_URL: http://localhost:18100
ANALYTICS_DASHBOARD_NAME: Your Platform Name Here Insights
ANALYTICS_DASHBOARD_URL: http://localhost:18110/courses
API_ACCESS_FROM_EMAIL: api-requests@example.com
API_ACCESS_MANAGER_EMAIL: api-access@example.com
API_DOCUMENTATION_URL: http://course-catalog-api-guide.readthedocs.io/en/latest/
AUTH_DOCUMENTATION_URL: http://course-catalog-api-guide.readthedocs.io/en/latest/authentication/index.html
AUTH_PASSWORD_VALIDATORS:
- NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator
- NAME: common.djangoapps.util.password_policy_validators.MinimumLengthValidator
OPTIONS:
min_length: 2
- NAME: common.djangoapps.util.password_policy_validators.MaximumLengthValidator
OPTIONS:
max_length: 75
AWS_ACCESS_KEY_ID: null
AWS_QUERYSTRING_AUTH: false
AWS_S3_CUSTOM_DOMAIN: SET-ME-PLEASE (ex. bucket-name.s3.amazonaws.com)
AWS_SECRET_ACCESS_KEY: null
AWS_SES_REGION_ENDPOINT: email.us-east-1.amazonaws.com
AWS_SES_REGION_NAME: us-east-1
AWS_STORAGE_BUCKET_NAME: SET-ME-PLEASE (ex. bucket-name)
BASE_COOKIE_DOMAIN: localhost
BLOCK_STRUCTURES_SETTINGS:
COURSE_PUBLISH_TASK_DELAY: 30
TASK_DEFAULT_RETRY_DELAY: 30
TASK_MAX_RETRIES: 5
BRANCH_IO_KEY: ''
BUGS_EMAIL: bugs@example.com
BULK_EMAIL_DEFAULT_FROM_EMAIL: no-reply@example.com
BULK_EMAIL_EMAILS_PER_TASK: 500
BULK_EMAIL_LOG_SENT_EMAILS: false
BULK_EMAIL_ROUTING_KEY_SMALL_JOBS: edx.lms.core.default
CACHES:
celery:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: celery
LOCATION:
- edx.devstack.memcached:11211
TIMEOUT: '7200'
configuration:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: 78f87108afce
LOCATION:
- edx.devstack.memcached:11211
course_structure_cache:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: course_structure
LOCATION:
- edx.devstack.memcached:11211
TIMEOUT: '604800'
default:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: default
LOCATION:
- edx.devstack.memcached:11211
VERSION: '1'
general:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: general
LOCATION:
- edx.devstack.memcached:11211
mongo_metadata_inheritance:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: mongo_metadata_inheritance
LOCATION:
- edx.devstack.memcached:11211
TIMEOUT: 300
staticfiles:
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
OPTIONS:
no_delay: true
ignore_exc: true
use_pooling: true
connect_timeout: 0.5
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
KEY_PREFIX: 78f87108afce_general
LOCATION:
- edx.devstack.memcached:11211
CAS_ATTRIBUTE_CALLBACK: ''
CAS_EXTRA_LOGIN_PARAMS: ''
CAS_SERVER_URL: ''
CELERYBEAT_SCHEDULER: celery.beat:PersistentScheduler
CELERY_BROKER_HOSTNAME: localhost
CELERY_BROKER_PASSWORD: ''
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_USER: ''
CELERY_BROKER_USE_SSL: false
CELERY_BROKER_VHOST: ''
CELERY_EVENT_QUEUE_TTL: null
CELERY_QUEUES:
- edx.lms.core.default
- edx.lms.core.high
- edx.lms.core.high_mem
CELERY_TIMEZONE: UTC
CERTIFICATE_TEMPLATE_LANGUAGES:
en: English
es: Español
CERT_QUEUE: certificates
CMS_BASE: edx.devstack.studio:18010
CODE_JAIL:
limits:
CPU: 1
FSIZE: 1048576
PROXY: 0
REALTIME: 3
VMEM: 536870912
python_bin: /edx/app/edxapp/venvs/edxapp-sandbox/bin/python
user: sandbox
COMMENTS_SERVICE_KEY: password
COMMENTS_SERVICE_URL: http://localhost:18080
COMPREHENSIVE_THEME_DIRS:
- ''
COMPREHENSIVE_THEME_LOCALE_PATHS: []
CONTACT_EMAIL: info@example.com
CONTACT_MAILING_ADDRESS: SET-ME-PLEASE
CONTENTSTORE:
ADDITIONAL_OPTIONS: {}
DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: SECONDARY_PREFERRED
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ENGINE: xmodule.contentstore.mongo.MongoContentStore
OPTIONS:
auth_source: ''
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
ssl: false
user: edxapp
CORS_ORIGIN_ALLOW_ALL: false
CORS_ORIGIN_WHITELIST: []
COURSES_WITH_UNSAFE_CODE: []
COURSE_ABOUT_VISIBILITY_PERMISSION: see_exists
COURSE_CATALOG_API_URL: http://localhost:8008/api/v1
COURSE_CATALOG_URL_ROOT: http://localhost:8008
COURSE_CATALOG_VISIBILITY_PERMISSION: see_exists
CREDENTIALS_INTERNAL_SERVICE_URL: http://localhost:8005
CREDENTIALS_PUBLIC_SERVICE_URL: http://localhost:8005
CREDIT_HELP_LINK_URL: ''
CREDIT_PROVIDER_SECRET_KEYS: {}
CROSS_DOMAIN_CSRF_COOKIE_DOMAIN: ''
CROSS_DOMAIN_CSRF_COOKIE_NAME: ''
CSRF_COOKIE_SECURE: false
CSRF_TRUSTED_ORIGINS: []
DASHBOARD_COURSE_LIMIT: null
DATABASES:
default:
ATOMIC_REQUESTS: true
CONN_MAX_AGE: 0
ENGINE: django.db.backends.mysql
HOST: edx.devstack.mysql80
NAME: edxapp
OPTIONS:
isolation_level: read committed
PASSWORD: password
PORT: '3306'
USER: edxapp001
read_replica:
CONN_MAX_AGE: 0
ENGINE: django.db.backends.mysql
HOST: edx.devstack.mysql80
NAME: edxapp
OPTIONS:
isolation_level: read committed
PASSWORD: password
PORT: '3306'
USER: edxapp001
student_module_history:
CONN_MAX_AGE: 0
ENGINE: django.db.backends.mysql
HOST: edx.devstack.mysql80
NAME: edxapp_csmh
OPTIONS:
isolation_level: read committed
PASSWORD: password
PORT: '3306'
USER: edxapp001
DATA_DIR: /edx/var/edxapp
DCS_SESSION_COOKIE_SAMESITE: Lax
DCS_SESSION_COOKIE_SAMESITE_FORCE_ALL: true
DEFAULT_COURSE_VISIBILITY_IN_CATALOG: both
DEFAULT_FEEDBACK_EMAIL: feedback@example.com
DEFAULT_FILE_STORAGE: django.core.files.storage.FileSystemStorage
DEFAULT_FROM_EMAIL: registration@example.com
DEFAULT_JWT_ISSUER:
AUDIENCE: lms-key
ISSUER: http://edx.devstack.lms:18000/oauth2
SECRET_KEY: lms-secret
DEFAULT_MOBILE_AVAILABLE: false
DEFAULT_SITE_THEME: ''
DEPRECATED_ADVANCED_COMPONENT_TYPES: []
DJFS:
directory_root: /edx/var/edxapp/django-pyfs/static/django-pyfs
type: osfs
url_root: /static/django-pyfs
DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: SECONDARY_PREFERRED
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ECOMMERCE_API_SIGNING_KEY: lms-secret
ECOMMERCE_API_URL: http://localhost:8002/api/v2
ECOMMERCE_PUBLIC_URL_ROOT: http://localhost:8002
EDXMKTG_USER_INFO_COOKIE_NAME: edx-user-info
EDXNOTES_INTERNAL_API: http://edx.devstack.edx_notes_api:18120/api/v1
EDXNOTES_PUBLIC_API: http://localhost:18120/api/v1
EDX_API_KEY: PUT_YOUR_API_KEY_HERE
EDX_PLATFORM_REVISION: master
ELASTIC_SEARCH_CONFIG:
- host: edx.devstack.elasticsearch
port: 9200
use_ssl: false
EMAIL_BACKEND: django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST: localhost
EMAIL_HOST_PASSWORD: ''
EMAIL_HOST_USER: ''
EMAIL_PORT: 25
EMAIL_USE_TLS: false
ENABLE_COMPREHENSIVE_THEMING: false
ENTERPRISE_API_URL: http://edx.devstack.lms:18000/enterprise/api/v1
ENTERPRISE_COURSE_ENROLLMENT_AUDIT_MODES:
- audit
- honor
ENTERPRISE_CUSTOMER_SUCCESS_EMAIL: customersuccess@edx.org
ENTERPRISE_ENROLLMENT_API_URL: http://edx.devstack.lms:18000/api/enrollment/v1/
ENTERPRISE_INTEGRATIONS_EMAIL: enterprise-integrations@edx.org
ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS: {}
ENTERPRISE_SERVICE_WORKER_USERNAME: enterprise_worker
ENTERPRISE_SUPPORT_URL: ''
ENTERPRISE_TAGLINE: ''
EVENT_TRACKING_SEGMENTIO_EMIT_WHITELIST: []
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_MKTG_SITE: 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
FILE_UPLOAD_STORAGE_BUCKET_NAME: SET-ME-PLEASE (ex. bucket-name)
FILE_UPLOAD_STORAGE_PREFIX: submissions_attachments
FINANCIAL_REPORTS:
BUCKET: null
ROOT_PATH: sandbox
STORAGE_TYPE: localfs
GITHUB_REPO_ROOT: /edx/var/edxapp/data
GIT_REPO_DIR: /edx/var/edxapp/course_repos
GOOGLE_ANALYTICS_ACCOUNT: null
GOOGLE_ANALYTICS_LINKEDIN: ''
GOOGLE_ANALYTICS_TRACKING_ID: ''
GOOGLE_SITE_VERIFICATION_ID: ''
GRADES_DOWNLOAD:
BUCKET: ''
ROOT_PATH: ''
STORAGE_CLASS: django.core.files.storage.FileSystemStorage
STORAGE_KWARGS:
location: /tmp/edx-s3/grades
STORAGE_TYPE: ''
HELP_TOKENS_BOOKS:
course_author: http://edx.readthedocs.io/projects/open-edx-building-and-running-a-course
learner: http://edx.readthedocs.io/projects/open-edx-learner-guide
HTTPS: 'on'
ICP_LICENSE: null
ICP_LICENSE_INFO: {}
IDA_LOGOUT_URI_LIST: []
ID_VERIFICATION_SUPPORT_LINK: ''
INTEGRATED_CHANNELS_API_CHUNK_TRANSMISSION_LIMIT:
SAP: 1
JWT_AUTH:
JWT_AUDIENCE: lms-key
JWT_AUTH_COOKIE_HEADER_PAYLOAD: edx-jwt-cookie-header-payload
JWT_AUTH_COOKIE_SIGNATURE: edx-jwt-cookie-signature
JWT_ISSUER: http://edx.devstack.lms:18000/oauth2
JWT_ISSUERS:
- AUDIENCE: lms-key
ISSUER: http://edx.devstack.lms:18000/oauth2
SECRET_KEY: lms-secret
JWT_PRIVATE_SIGNING_JWK: None
JWT_PUBLIC_SIGNING_JWK_SET: ''
JWT_SECRET_KEY: lms-secret
JWT_SIGNING_ALGORITHM: null
JWT_EXPIRATION: 30
JWT_ISSUER: http://edx.devstack.lms:18000/oauth2
JWT_PRIVATE_SIGNING_KEY: null
LANGUAGE_CODE: en
LANGUAGE_COOKIE: openedx-language-preference
LEARNER_PORTAL_URL_ROOT: https://learner-portal-edx.devstack.lms:18000
LEARNING_MICROFRONTEND_URL: null
LMS_BASE: edx.devstack.lms:18000
LMS_INTERNAL_ROOT_URL: http://edx.devstack.lms:18000
LMS_ROOT_URL: http://edx.devstack.lms:18000
LOCAL_LOGLEVEL: INFO
LOGGING_ENV: sandbox
LOGIN_REDIRECT_WHITELIST: []
LOG_DIR: /edx/var/log/edx
LTI_AGGREGATE_SCORE_PASSBACK_DELAY: 900
LTI_USER_EMAIL_DOMAIN: lti.example.com
MAILCHIMP_NEW_USER_LIST_ID: null
MAINTENANCE_BANNER_TEXT: Sample banner message
MEDIA_ROOT: /edx/var/edxapp/media/
MEDIA_URL: /media/
MKTG_URLS: {}
MKTG_URL_LINK_MAP: {}
MOBILE_STORE_URLS: {}
MODULESTORE:
default:
ENGINE: xmodule.modulestore.mixed.MixedModuleStore
OPTIONS:
mappings: {}
stores:
- DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: SECONDARY_PREFERRED
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ENGINE: xmodule.modulestore.split_mongo.split_draft.DraftVersioningModuleStore
NAME: split
OPTIONS:
default_class: xmodule.hidden_block.HiddenBlock
fs_root: /edx/var/edxapp/data
render_template: common.djangoapps.edxmako.shortcuts.render_to_string
- DOC_STORE_CONFIG:
authsource: ''
collection: modulestore
connectTimeoutMS: 2000
db: edxapp
host:
- edx.devstack.mongo
password: password
port: 27017
read_preference: PRIMARY
replicaSet: ''
socketTimeoutMS: 3000
ssl: false
user: edxapp
ENGINE: xmodule.modulestore.mongo.DraftMongoModuleStore
NAME: draft
OPTIONS:
default_class: xmodule.hidden_block.HiddenBlock
fs_root: /edx/var/edxapp/data
render_template: common.djangoapps.edxmako.shortcuts.render_to_string
OAUTH_DELETE_EXPIRED: true
OAUTH_ENFORCE_SECURE: false
OAUTH_EXPIRE_CONFIDENTIAL_CLIENT_DAYS: 365
OAUTH_EXPIRE_PUBLIC_CLIENT_DAYS: 30
OPTIMIZELY_PROJECT_ID: null
ORA2_FILE_PREFIX: default_env-default_deployment/ora2
ORDER_HISTORY_MICROFRONTEND_URL: null
ORGANIZATIONS_AUTOCREATE: true
PAID_COURSE_REGISTRATION_CURRENCY:
- usd
- $
PARENTAL_CONSENT_AGE_LIMIT: 13
PARTNER_SUPPORT_EMAIL: ''
PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG:
ENFORCE_COMPLIANCE_ON_LOGIN: false
PASSWORD_RESET_SUPPORT_LINK: ''
PAYMENT_SUPPORT_EMAIL: billing@example.com
PDF_RECEIPT_BILLING_ADDRESS: 'Enter your receipt billing
address here.
'
PDF_RECEIPT_COBRAND_LOGO_PATH: ''
PDF_RECEIPT_DISCLAIMER_TEXT: 'ENTER YOUR RECEIPT DISCLAIMER TEXT HERE.
'
PDF_RECEIPT_FOOTER_TEXT: 'Enter your receipt footer text here.
'
PDF_RECEIPT_LOGO_PATH: ''
PDF_RECEIPT_TAX_ID: 00-0000000
PDF_RECEIPT_TAX_ID_LABEL: fake Tax ID
PDF_RECEIPT_TERMS_AND_CONDITIONS: 'Enter your receipt terms and conditions here.
'
PLATFORM_DESCRIPTION: Your Platform Description Here
PLATFORM_FACEBOOK_ACCOUNT: http://www.facebook.com/YourPlatformFacebookAccount
PLATFORM_NAME: Your Platform Name Here
PLATFORM_TWITTER_ACCOUNT: '@YourPlatformTwitterAccount'
POLICY_CHANGE_GRADES_ROUTING_KEY: edx.lms.core.default
SINGLE_LEARNER_COURSE_REGRADE_ROUTING_KEY: edx.lms.core.default
PREPEND_LOCALE_PATHS: []
PRESS_EMAIL: press@example.com
PROCTORING_BACKENDS:
DEFAULT: 'null'
'null': {}
PROCTORING_SETTINGS: {}
PROFILE_IMAGE_BACKEND:
class: openedx.core.storage.OverwriteStorage
options:
base_url: /media/profile-images/
location: /edx/var/edxapp/media/profile-images/
PROFILE_IMAGE_HASH_SEED: placeholder_secret_key
PROFILE_IMAGE_MAX_BYTES: 1048576
PROFILE_IMAGE_MIN_BYTES: 100
PROFILE_IMAGE_SIZES_MAP:
full: 500
large: 120
medium: 50
small: 30
PROFILE_MICROFRONTEND_URL: null
PROGRAM_CERTIFICATES_ROUTING_KEY: edx.lms.core.default
PROGRAM_CONSOLE_MICROFRONTEND_URL: null
RECALCULATE_GRADES_ROUTING_KEY: edx.lms.core.default
REGISTRATION_EXTRA_FIELDS:
city: hidden
confirm_email: hidden
country: required
gender: optional
goals: optional
honor_code: required
level_of_education: optional
mailing_address: hidden
terms_of_service: hidden
year_of_birth: optional
RETIRED_EMAIL_DOMAIN: retired.invalid
RETIRED_EMAIL_PREFIX: retired__user_
RETIRED_USERNAME_PREFIX: retired__user_
RETIRED_USER_SALTS:
- OVERRIDE ME WITH A RANDOM VALUE
- ROTATE SALTS BY APPENDING NEW VALUES
RETIREMENT_SERVICE_WORKER_USERNAME: retirement_worker
RETIREMENT_STATES:
- PENDING
- ERRORED
- ABORTED
- COMPLETE
SECRET_KEY: DUMMY KEY ONLY FOR TO DEVSTACK
SEGMENT_KEY: null
SERVER_EMAIL: sre@example.com
SESSION_COOKIE_DOMAIN: ''
SESSION_COOKIE_NAME: sessionid
SESSION_COOKIE_SECURE: false
SESSION_SAVE_EVERY_REQUEST: false
SITE_NAME: localhost
SOCIAL_AUTH_OAUTH_SECRETS: ''
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY: ''
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY_DICT: {}
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT: ''
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT_DICT: {}
SOCIAL_MEDIA_FOOTER_URLS: {}
SOCIAL_SHARING_SETTINGS:
CERTIFICATE_FACEBOOK: false
CERTIFICATE_TWITTER: false
CUSTOM_COURSE_URLS: false
DASHBOARD_FACEBOOK: false
DASHBOARD_TWITTER: false
STATIC_ROOT_BASE: /edx/var/edxapp/staticfiles
STATIC_URL_BASE: /static/
STUDIO_NAME: Studio
STUDIO_SHORT_NAME: Studio
SUPPORT_SITE_LINK: ''
SWIFT_AUTH_URL: null
SWIFT_AUTH_VERSION: null
SWIFT_KEY: null
SWIFT_REGION_NAME: null
SWIFT_TEMP_URL_DURATION: 1800
SWIFT_TEMP_URL_KEY: null
SWIFT_TENANT_ID: null
SWIFT_TENANT_NAME: null
SWIFT_USERNAME: null
SWIFT_USE_TEMP_URLS: false
SYSLOG_SERVER: ''
SYSTEM_WIDE_ROLE_CLASSES: []
TECH_SUPPORT_EMAIL: technical@example.com
THIRD_PARTY_AUTH_BACKENDS:
- social_core.backends.google.GoogleOAuth2
- social_core.backends.linkedin.LinkedinOAuth2
- social_core.backends.facebook.FacebookOAuth2
- social_core.backends.azuread.AzureADOAuth2
- common.djangoapps.third_party_auth.appleid.AppleIdAuth
- common.djangoapps.third_party_auth.identityserver3.IdentityServer3
- common.djangoapps.third_party_auth.saml.SAMLAuthBackend
- common.djangoapps.third_party_auth.lti.LTIAuthBackend
TIME_ZONE: America/New_York
TRACKING_SEGMENTIO_WEBHOOK_SECRET: ''
UNIVERSITY_EMAIL: university@example.com
USERNAME_REPLACEMENT_WORKER: OVERRIDE THIS WITH A VALID USERNAME
VERIFY_STUDENT:
DAYS_GOOD_FOR: 365
EXPIRING_SOON_WINDOW: 28
VIDEO_CDN_URL:
EXAMPLE_COUNTRY_CODE: http://example.com/edx/video?s3_url=
VIDEO_IMAGE_MAX_AGE: 31536000
VIDEO_IMAGE_SETTINGS:
DIRECTORY_PREFIX: video-images/
STORAGE_KWARGS:
location: /edx/var/edxapp/media/
VIDEO_IMAGE_MAX_BYTES: 2097152
VIDEO_IMAGE_MIN_BYTES: 2048
BASE_URL: /media/
VIDEO_TRANSCRIPTS_MAX_AGE: 31536000
VIDEO_TRANSCRIPTS_SETTINGS:
DIRECTORY_PREFIX: video-transcripts/
STORAGE_KWARGS:
location: /edx/var/edxapp/media/
VIDEO_TRANSCRIPTS_MAX_BYTES: 3145728
BASE_URL: /media/
VIDEO_UPLOAD_PIPELINE:
BUCKET: ''
ROOT_PATH: ''
WIKI_ENABLED: true
WRITABLE_GRADEBOOK_URL: null
XBLOCK_FS_STORAGE_BUCKET: null
XBLOCK_FS_STORAGE_PREFIX: null
XBLOCK_SETTINGS: {}
XQUEUE_INTERFACE:
basic_auth:
- edx
- edx
django_auth:
password: password
username: lms
url: http://edx.devstack.xqueue:18040
X_FRAME_OPTIONS: DENY
YOUTUBE_API_KEY: PUT_YOUR_API_KEY_HERE
ZENDESK_API_KEY: ''
ZENDESK_CUSTOM_FIELDS: {}
ZENDESK_GROUP_ID_MAPPING: {}
ZENDESK_OAUTH_ACCESS_TOKEN: ''
ZENDESK_URL: ''
ZENDESK_USER: ''

View File

@@ -1,9 +0,0 @@
"""
Left over environment file from before the transition of devstack from
vagrant to docker was complete.
This file should no longer be used, and is only around in case something
still refers to it.
"""
from .devstack import * # pylint: disable=wildcard-import, unused-wildcard-import

View File

@@ -1,45 +0,0 @@
"""
Settings to run LMS in devstack using optimized static assets.
This configuration changes LMS to use the optimized static assets generated for testing,
rather than picking up the files directly from the source tree.
The following Paver command can be used to run LMS in optimized mode:
paver devstack lms --optimized
You can also generate the assets explicitly and then run Studio:
paver update_assets lms --settings=test_static_optimized
paver devstack lms --settings=devstack_optimized --fast
Note that changes to JavaScript assets will not be picked up automatically
as they are for non-optimized devstack. Instead, update_assets must be
invoked each time that changes have been made.
"""
########################## Devstack settings ###################################
from .devstack import * # pylint: disable=wildcard-import
TEST_ROOT = REPO_ROOT / "test_root"
############################ STATIC FILES #############################
# Enable debug so that static assets are served by Django
DEBUG = True
# Set REQUIRE_DEBUG to false so that it behaves like production
REQUIRE_DEBUG = False
# Fetch static files out of the pipeline's static root
STATICFILES_STORAGE = 'pipeline.storage.PipelineManifestStorage'
# Serve static files at /static directly from the staticfiles directory under test root.
# Note: optimized files for testing are generated with settings from test_static_optimized
STATIC_URL = "/static/"
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder']
STATICFILES_DIRS = [
(TEST_ROOT / "staticfiles" / "lms").abspath(),
]

View File

@@ -1,23 +0,0 @@
"""
This config file follows the devstack environment, but adds the
requirement of a celery worker running in the background to process
celery tasks.
When testing locally, run lms/cms with this settings file as well, to test queueing
of tasks onto the appropriate workers.
In two separate processes on devstack:
paver devstack lms --settings=devstack_with_worker
DJANGO_SETTINGS_MODULE=lms.envs.devstack_with_worker celery worker --app=lms.celery:APP
"""
# We intentionally define lots of variables that aren't used, and
# want to import all variables from base settings files
# pylint: disable=wildcard-import, unused-wildcard-import
from lms.envs.devstack import *
# Require a separate celery worker
CELERY_ALWAYS_EAGER = False
CLEAR_REQUEST_CACHE_ON_TASK_COMPLETION = True
BROKER_URL = 'redis://:password@edx.devstack.redis:6379/'

View File

@@ -1,9 +0,0 @@
"""
Specific overrides to the base prod settings for a docker production deployment.
"""
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import
from openedx.core.lib.logsettings import get_docker_logger_config
LOGGING = get_docker_logger_config()

View File

@@ -1,32 +0,0 @@
"""
Settings for OpenStack deployments.
"""
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import
SWIFT_AUTH_URL = AUTH_TOKENS.get('SWIFT_AUTH_URL')
SWIFT_AUTH_VERSION = AUTH_TOKENS.get('SWIFT_AUTH_VERSION', 1)
SWIFT_USERNAME = AUTH_TOKENS.get('SWIFT_USERNAME')
SWIFT_KEY = AUTH_TOKENS.get('SWIFT_KEY')
SWIFT_TENANT_NAME = AUTH_TOKENS.get('SWIFT_TENANT_NAME')
SWIFT_TENANT_ID = AUTH_TOKENS.get('SWIFT_TENANT_ID')
SWIFT_CONTAINER_NAME = FILE_UPLOAD_STORAGE_BUCKET_NAME
SWIFT_NAME_PREFIX = FILE_UPLOAD_STORAGE_PREFIX
SWIFT_USE_TEMP_URLS = AUTH_TOKENS.get('SWIFT_USE_TEMP_URLS', False)
SWIFT_TEMP_URL_KEY = AUTH_TOKENS.get('SWIFT_TEMP_URL_KEY')
SWIFT_TEMP_URL_DURATION = AUTH_TOKENS.get('SWIFT_TEMP_URL_DURATION', 1800) # seconds
SWIFT_CONTENT_TYPE_FROM_FD = AUTH_TOKENS.get('SWIFT_CONTENT_TYPE_FROM_FD', True)
SWIFT_CONTENT_LENGTH_FROM_FD = AUTH_TOKENS.get('SWIFT_CONTENT_LENGTH_FROM_FD', False)
SWIFT_LAZY_CONNECT = AUTH_TOKENS.get('SWIFT_LAZY_CONNECT', True)
if AUTH_TOKENS.get('SWIFT_REGION_NAME'):
SWIFT_EXTRA_OPTIONS = {'region_name': AUTH_TOKENS['SWIFT_REGION_NAME']}
if AUTH_TOKENS.get('DEFAULT_FILE_STORAGE'):
DEFAULT_FILE_STORAGE = AUTH_TOKENS.get('DEFAULT_FILE_STORAGE')
elif SWIFT_AUTH_URL and SWIFT_USERNAME and SWIFT_KEY:
DEFAULT_FILE_STORAGE = 'swift.storage.SwiftStorage'
else:
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
ORA2_FILEUPLOAD_BACKEND = "django"

View File

@@ -1,76 +0,0 @@
"""
This config file runs the simplest dev environment using sqlite, and db-based
sessions. Assumes structure:
/envroot/
/db # This is where it'll write the database file
/edx-platform # The location of this repo
/log # Where we're going to write log files
"""
# We intentionally define lots of variables that aren't used, and
# want to import all variables from base settings files
# pylint: disable=wildcard-import, unused-wildcard-import
from openedx.core.lib.derived import derive_settings
from openedx.core.lib.logsettings import get_logger_config
from .common import *
STATIC_GRAB = True
LOGGING = get_logger_config(ENV_ROOT / "log",
logging_env="dev")
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ENV_ROOT / "db" / "edx.db",
'ATOMIC_REQUESTS': True,
},
'student_module_history': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ENV_ROOT / "db" / "student_module_history.db",
'ATOMIC_REQUESTS': True,
}
}
CACHES = {
# This is the cache used for most things.
# In staging/prod envs, the sessions also live here.
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'edx_loc_mem_cache',
'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key',
},
# The general cache is what you get if you use our util.cache. It's used for
# things like caching the course.xml file for different A/B test groups.
# We set it to be a DummyCache to force reloading of course.xml in dev.
# In staging environments, we would grab VERSION from data uploaded by the
# push process.
'general': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'KEY_PREFIX': 'general',
'VERSION': 4,
'KEY_FUNCTION': 'common.djangoapps.util.memcache.safe_key',
}
}
# Dummy secret key for dev
SECRET_KEY = '85920908f28904ed733fe576320db18cabd7b6cd'
############################ FILE UPLOADS (for discussion forums) #############################
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
MEDIA_ROOT = ENV_ROOT / "uploads"
MEDIA_URL = "/discussion/upfiles/"
FILE_UPLOAD_TEMP_DIR = ENV_ROOT / "uploads"
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
########################## Derive Any Derived Settings #######################
derive_settings(__name__)

View File

@@ -1,71 +0,0 @@
"""
Settings used when generating static assets for use in tests.
Note: it isn't possible to have a single settings file, because Django doesn't
support both generating static assets to a directory and also serving static
from the same directory.
"""
# Start with the common settings
from openedx.core.lib.derived import derive_settings
from openedx.core.lib.django_require.staticstorage import OptimizedCachedRequireJsStorage
from .common import * # pylint: disable=wildcard-import, unused-wildcard-import
# Use an in-memory database since this settings file is only used for updating assets
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'ATOMIC_REQUESTS': True,
},
'student_module_history': {
'ENGINE': 'django.db.backends.sqlite3',
},
}
# Provide a dummy XQUEUE_INTERFACE setting as LMS expects it to exist on start up
XQUEUE_INTERFACE = {
"url": "https://sandbox-xqueue.edx.org",
"django_auth": {
"username": "lms",
"password": "***REMOVED***"
},
"basic_auth": ('anant', 'agarwal'),
}
PROCTORING_BACKENDS = {
'DEFAULT': 'mock',
'mock': {},
'mock_proctoring_without_rules': {},
}
######################### PIPELINE ####################################
# Use RequireJS optimized storage
STATICFILES_STORAGE = f"{OptimizedCachedRequireJsStorage.__module__}.{OptimizedCachedRequireJsStorage.__name__}"
# Revert to the default set of finders as we don't want to dynamically pick up files from the pipeline
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'openedx.core.lib.xblock_pipeline.finder.XBlockPipelineFinder',
]
# Redirect to the test_root folder within the repo
TEST_ROOT = REPO_ROOT / "test_root"
LOG_DIR = (TEST_ROOT / "log").abspath()
# Store the static files under test root so that they don't overwrite existing static assets
STATIC_ROOT = (TEST_ROOT / "staticfiles" / "lms").abspath()
WEBPACK_LOADER['DEFAULT']['STATS_FILE'] = STATIC_ROOT / "webpack-stats.json"
# Disable uglify when tests are running (used by build.js).
# 1. Uglify is by far the slowest part of the build process
# 2. Having full source code makes debugging tests easier for developers
os.environ['REQUIRE_BUILD_PROFILE_OPTIMIZE'] = 'none'
########################## Derive Any Derived Settings #######################
derive_settings(__name__)