mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-09-28 20:29:02 +00:00
728ef966dc
- 💥[Improvement] Upgrade Open edX to Koa - 💥 Setting changes: - The ``ACTIVATE_HTTPS`` setting was renamed to ``ENABLE_HTTPS``. - Other ``ACTIVATE_*`` variables were all renamed to ``RUN_*``. - The ``WEB_PROXY`` setting was removed and ``RUN_CADDY`` was added. - The ``NGINX_HTTPS_PORT`` setting is deprecated. - Architectural changes: - Use Caddy as a web proxy for automated SSL/TLS certificate generation: - Nginx no longer listens to port 443 for https traffic - The Caddy configuration file comes with a new ``caddyfile`` patch for much simpler SSL/TLS management. - Configuration files for web proxies are no longer provided. - Kubernetes deployment no longer requires setting up a custom Ingress resource or custom manager. - Gunicorn and Whitenoise are replaced by uwsgi: this increases boostrap performance and makes it no longer necessary to mount media folders in the Nginx container. - Replace memcached and rabbitmq by redis. - Additional features: - Make it possible to disable all plugins at once with ``plugins disable all``. - Add ``tutor k8s wait`` command to wait for a pod to become ready - Faster, more reliable static assets with local memory caching - Deprecation: proxy files for Apache and Nginx are no longer provided out of the box. - Removed plugin `{{ patch (...) }}` statements: - "https-create", "k8s-ingress-rules", "k8s-ingress-tls-hosts": these are no longer necessary. Instead, declare your app in the "caddyfile" patch. - "local-docker-compose-nginx-volumes": this patch was primarily used to serve media assets. The recommended is now to serve assets with uwsgi.
183 lines
4.7 KiB
Python
183 lines
4.7 KiB
Python
import click
|
|
|
|
from . import config as tutor_config
|
|
from . import env
|
|
from . import exceptions
|
|
from . import fmt
|
|
from .__about__ import __version__
|
|
|
|
|
|
def update(root, interactive=True):
|
|
"""
|
|
Load and save the configuration.
|
|
"""
|
|
config, defaults = load_all(root, interactive=interactive)
|
|
tutor_config.save_config_file(root, config)
|
|
tutor_config.merge(config, defaults)
|
|
return config
|
|
|
|
|
|
def load_all(root, interactive=True):
|
|
"""
|
|
Load configuration and interactively ask questions to collect param values from the user.
|
|
"""
|
|
config, defaults = tutor_config.load_all(root)
|
|
if interactive:
|
|
ask_questions(config, defaults)
|
|
return config, defaults
|
|
|
|
|
|
def ask_questions(config, defaults):
|
|
run_for_prod = config.get("LMS_HOST") != "local.overhang.io"
|
|
run_for_prod = click.confirm(
|
|
fmt.question(
|
|
"Are you configuring a production platform? Type 'n' if you are just testing Tutor on your local computer"
|
|
),
|
|
prompt_suffix=" ",
|
|
default=run_for_prod,
|
|
)
|
|
if not run_for_prod:
|
|
dev_values = {
|
|
"LMS_HOST": "local.overhang.io",
|
|
"CMS_HOST": "studio.local.overhang.io",
|
|
"ENABLE_HTTPS": False,
|
|
}
|
|
fmt.echo_info(
|
|
"""As you are not running this platform in production, we automatically set the following configuration values:"""
|
|
)
|
|
for k, v in dev_values.items():
|
|
config[k] = v
|
|
fmt.echo_info(" {} = {}".format(k, v))
|
|
|
|
if run_for_prod:
|
|
ask("Your website domain name for students (LMS)", "LMS_HOST", config, defaults)
|
|
if "localhost" in config["LMS_HOST"]:
|
|
raise exceptions.TutorError(
|
|
"You may not use 'localhost' as the LMS domain name. To run a local platform for testing purposes you should answer 'n' to the previous question."
|
|
)
|
|
ask("Your website domain name for teachers (CMS)", "CMS_HOST", config, defaults)
|
|
|
|
ask("Your platform name/title", "PLATFORM_NAME", config, defaults)
|
|
ask("Your public contact email address", "CONTACT_EMAIL", config, defaults)
|
|
ask_choice(
|
|
"The default language code for the platform",
|
|
"LANGUAGE_CODE",
|
|
config,
|
|
defaults,
|
|
[
|
|
"en",
|
|
"am",
|
|
"ar",
|
|
"az",
|
|
"bg-bg",
|
|
"bn-bd",
|
|
"bn-in",
|
|
"bs",
|
|
"ca",
|
|
"ca@valencia",
|
|
"cs",
|
|
"cy",
|
|
"da",
|
|
"de-de",
|
|
"el",
|
|
"en-uk",
|
|
"en@lolcat",
|
|
"en@pirate",
|
|
"es-419",
|
|
"es-ar",
|
|
"es-ec",
|
|
"es-es",
|
|
"es-mx",
|
|
"es-pe",
|
|
"et-ee",
|
|
"eu-es",
|
|
"fa",
|
|
"fa-ir",
|
|
"fi-fi",
|
|
"fil",
|
|
"fr",
|
|
"gl",
|
|
"gu",
|
|
"he",
|
|
"hi",
|
|
"hr",
|
|
"hu",
|
|
"hy-am",
|
|
"id",
|
|
"it-it",
|
|
"ja-jp",
|
|
"kk-kz",
|
|
"km-kh",
|
|
"kn",
|
|
"ko-kr",
|
|
"lt-lt",
|
|
"ml",
|
|
"mn",
|
|
"mr",
|
|
"ms",
|
|
"nb",
|
|
"ne",
|
|
"nl-nl",
|
|
"or",
|
|
"pl",
|
|
"pt-br",
|
|
"pt-pt",
|
|
"ro",
|
|
"ru",
|
|
"si",
|
|
"sk",
|
|
"sl",
|
|
"sq",
|
|
"sr",
|
|
"sv",
|
|
"sw",
|
|
"ta",
|
|
"te",
|
|
"th",
|
|
"tr-tr",
|
|
"uk",
|
|
"ur",
|
|
"vi",
|
|
"uz",
|
|
"zh-cn",
|
|
"zh-hk",
|
|
"zh-tw",
|
|
],
|
|
)
|
|
if run_for_prod:
|
|
ask_bool(
|
|
(
|
|
"Activate SSL/TLS certificates for HTTPS access? Important note:"
|
|
" this will NOT work in a development environment."
|
|
),
|
|
"ENABLE_HTTPS",
|
|
config,
|
|
defaults,
|
|
)
|
|
|
|
|
|
def ask(question, key, config, defaults):
|
|
default = env.render_str(config, config.get(key, defaults[key]))
|
|
config[key] = click.prompt(
|
|
fmt.question(question), prompt_suffix=" ", default=default, show_default=True
|
|
)
|
|
|
|
|
|
def ask_bool(question, key, config, defaults):
|
|
default = config.get(key, defaults[key])
|
|
config[key] = click.confirm(
|
|
fmt.question(question), prompt_suffix=" ", default=default
|
|
)
|
|
|
|
|
|
def ask_choice(question, key, config, defaults, choices):
|
|
default = config.get(key, defaults[key])
|
|
answer = click.prompt(
|
|
fmt.question(question),
|
|
type=click.Choice(choices),
|
|
prompt_suffix=" ",
|
|
default=default,
|
|
show_choices=False,
|
|
)
|
|
config[key] = answer
|