From 27b699e5a100b962cad61831e995722d49af80c7 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Tue, 28 Apr 2020 16:37:36 -0400 Subject: [PATCH] An initial draft of a decision around how we manage settings files. --- .../0004-managing-django-settings.rst | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/decisions/0004-managing-django-settings.rst diff --git a/docs/decisions/0004-managing-django-settings.rst b/docs/decisions/0004-managing-django-settings.rst new file mode 100644 index 0000000000..b29882d18b --- /dev/null +++ b/docs/decisions/0004-managing-django-settings.rst @@ -0,0 +1,37 @@ +Status +====== + +Accepted + + +Context +======= + +Settings are confusing right now and there are way too many layers. We have +multiple python settings file that "inherit" from each other. In some cases some +layers of the inheritance tree also pull settings from config files leading to +more confusion. + + +Decision +======== +Rather than having multiple python settings files that override things +differently we will move to just a few python files with most of the settings +variance living in YAML config files that are managed by environment operators. + +common.py - This file will house the defaults for all settings that are +referenced in the default installation of the edx-platform. + +production.py - This settings file will pull the defaults from common.py and +then override them with settings pulled from a single YAML config file. For the +most part this will be a wholesale replacement for any complex values(dicts, +lists, etc) but for some specific settings they will be additive for now. + +eg. ADDITIONAL_INSTALLED_APPS, or ADDITIONAL_MIDDLEWARE + +Consequences +============ + +Rather than having both python and yaml override files for our dev and test +environments, we will move towards having all settings defined in a yaml file +and for all environments to use production.py to load their settings.