diff --git a/docs/admin/01_config.rst b/docs/admin/01_config.rst index 089c4416b031f7cf78d92ef8a57e3d86084f9094..7b7b413a4d641b614bd463b5a6bfd27c715e4a0e 100644 --- a/docs/admin/01_config.rst +++ b/docs/admin/01_config.rst @@ -27,25 +27,21 @@ configuration by topic. A configuration file might look like this:: - [default] secret_key = "VerySecretKeyForSessionSecurity" - [default.http] allowed_hosts = [ "aleksis.myschool.example.com", "localhost" ] - [default.database] name = "aleksis" user = "aleksis" password = "SuperSecretPassword" - [default.caching] memcached = { enabled = true, address = "127.0.0.1" } The `secret_key` setting above defines a single value. The following `http` section defines a table (cf. a dictionary) in one way, and you can see the second form of such a table in the `memcached` setting (we could as well -have defined another section called `[default.caching.memcached]` and placed -`enabled` and `address` below it as scalars). +have defined another section and placed `enabled` and `address` below it +as scalars). This can be a bit confusing, so this documentation will explain how to configure AlekSIS on a per-feature basis. diff --git a/docs/admin/02_ldap.rst b/docs/admin/02_ldap.rst index 1239d43e1b45d255100b249c417b44bd5de67b51..7723ad8c2d14b3a02c78250dfac3c1a89ae94c4a 100644 --- a/docs/admin/02_ldap.rst +++ b/docs/admin/02_ldap.rst @@ -25,10 +25,8 @@ configuration file. For example, add something like the following to your configuration (normally in `/etc/aleksis`; you can either append to an existing file or add a new one):: - [default.ldap] uri = "ldaps://ldap.myschool.edu" bind = { dn = "cn=reader,dc=myschool,dc=edu", password = "secret" } - [default.ldap.users] search = { base = "ou=people,dc=myschool,dc=edu", filter = "(uid=%(user)s)" } map = { first_name = "givenName", last_name = "sn", email = "mail" } diff --git a/docs/admin/03_psql.rst b/docs/admin/03_psql.rst index 8c544041fdce1dc6ee83d3311526bb3561dcb487..657a482df77dfeb5fb08a42f3e3e6aba1e7282f7 100644 --- a/docs/admin/03_psql.rst +++ b/docs/admin/03_psql.rst @@ -32,7 +32,6 @@ Configure AlekSIS to use PostgreSQL Fill in the configuration under `/etc/aleksis/aleksis.toml` (or a file with any other name in this directory):: - [default.database] host = "localhost" name = "aleksis" username = "aleksis" diff --git a/poetry.lock b/poetry.lock index c0d9a423935cc76adb531e5af2a2659c1d5fdcbb..ccf1343b444187e913b885231c956a2a73c26c8c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -257,7 +257,7 @@ python-versions = "*" version = "3.0.4" [[package]] -category = "main" +category = "dev" description = "Composable command line interface toolkit" name = "click" optional = false @@ -944,30 +944,29 @@ description = "The dynamic configurator for your Python Project" name = "dynaconf" optional = false python-versions = "*" -version = "2.2.3" +version = "3.1.0" [package.dependencies] -click = "*" -python-box = "<4.0.0" -python-dotenv = "*" -toml = "*" +[package.dependencies.configobj] +optional = true +version = "*" -[package.dependencies.PyYAML] +[package.dependencies."ruamel.yaml"] optional = true version = "*" -[package.dependencies.configobj] +[package.dependencies.toml] optional = true version = "*" [package.extras] -all = ["redis", "pyyaml", "configobj", "hvac"] +all = ["redis", "ruamel.yaml", "configobj", "hvac"] configobj = ["configobj"] ini = ["configobj"] redis = ["redis"] toml = ["toml"] vault = ["hvac"] -yaml = ["pyyaml"] +yaml = ["ruamel.yaml"] [[package]] category = "main" @@ -1602,17 +1601,6 @@ packaging = ">=14.1" pytest = ">=2.9" termcolor = ">=1.1.0" -[[package]] -category = "main" -description = "Advanced Python dictionaries with dot notation access" -name = "python-box" -optional = false -python-versions = "*" -version = "3.4.6" - -[package.extras] -testing = ["pytest", "coverage (>=3.6)", "pytest-cov"] - [[package]] category = "main" description = "Python Crontab API" @@ -1639,17 +1627,6 @@ version = "2.8.1" [package.dependencies] six = ">=1.5" -[[package]] -category = "main" -description = "Add .env support to your django/flask apps in development and deployments" -name = "python-dotenv" -optional = false -python-versions = "*" -version = "0.14.0" - -[package.extras] -cli = ["click (>=5.0)"] - [[package]] category = "main" description = "Python modules for implementing LDAP clients" @@ -1682,7 +1659,7 @@ python-versions = "*" version = "2020.1" [[package]] -category = "main" +category = "dev" description = "YAML parser and emitter for Python" name = "pyyaml" optional = false @@ -1755,6 +1732,32 @@ version = "1.3.1" [package.dependencies] docutils = ">=0.11,<1.0" +[[package]] +category = "main" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +name = "ruamel.yaml" +optional = false +python-versions = "*" +version = "0.16.12" + +[package.dependencies] +[package.dependencies."ruamel.yaml.clib"] +python = "<3.9" +version = ">=0.1.2" + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +category = "main" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +marker = "platform_python_implementation == \"CPython\" and python_version < \"3.9\"" +name = "ruamel.yaml.clib" +optional = false +python-versions = "*" +version = "0.2.2" + [[package]] category = "main" description = "Awesome Django authorization, without the database" @@ -2151,7 +2154,7 @@ celery = ["Celery", "django-celery-results", "django-celery-beat", "django-celer ldap = ["django-auth-ldap"] [metadata] -content-hash = "cda56c7b2512ac3d8cb79e409c04e0aa130a55d5ce0191428964dad255458731" +content-hash = "678dc0d3d3b85897f9ec7463f74f713c5b1b4715d0d6702b14469aba213afec8" lock-version = "1.0" python-versions = "^3.7" @@ -2485,8 +2488,8 @@ dparse = [ {file = "dparse-0.5.1.tar.gz", hash = "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367"}, ] dynaconf = [ - {file = "dynaconf-2.2.3-py2.py3-none-any.whl", hash = "sha256:e803cdab2d7addd539c4ee8d121f15ab0b63a83a5b723150e1746aa7e8063adb"}, - {file = "dynaconf-2.2.3.tar.gz", hash = "sha256:26b84f2b234a203f6005463d954c9f007181c09345eaaab3fc38503acbdadc7d"}, + {file = "dynaconf-3.1.0-py2.py3-none-any.whl", hash = "sha256:c5866c43fa9073f342a2b0b840e44247b5363426dff4c4ab9bdd668448a28bd6"}, + {file = "dynaconf-3.1.0.tar.gz", hash = "sha256:9914ada84c209479b7235548c846bb3c6d82a72e57b833c0cff0178f52f2d229"}, ] easy-thumbnails = [ {file = "easy-thumbnails-2.7.tar.gz", hash = "sha256:e4e7a0dd4001f56bfd4058428f2c91eafe27d33ef3b8b33ac4e013b159b9ff91"}, @@ -2850,10 +2853,6 @@ pytest-django-testing-postgresql = [ pytest-sugar = [ {file = "pytest-sugar-0.9.4.tar.gz", hash = "sha256:b1b2186b0a72aada6859bea2a5764145e3aaa2c1cfbb23c3a19b5f7b697563d3"}, ] -python-box = [ - {file = "python-box-3.4.6.tar.gz", hash = "sha256:694a7555e3ff9fbbce734bbaef3aad92b8e4ed0659d3ed04d56b6a0a0eff26a9"}, - {file = "python_box-3.4.6-py2.py3-none-any.whl", hash = "sha256:a71d3dc9dbaa34c8597d3517c89a8041bd62fa875f23c0f3dad55e1958e3ce10"}, -] python-crontab = [ {file = "python-crontab-2.5.1.tar.gz", hash = "sha256:4bbe7e720753a132ca4ca9d4094915f40e9d9dc8a807a4564007651018ce8c31"}, ] @@ -2861,10 +2860,6 @@ python-dateutil = [ {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, ] -python-dotenv = [ - {file = "python-dotenv-0.14.0.tar.gz", hash = "sha256:8c10c99a1b25d9a68058a1ad6f90381a62ba68230ca93966882a4dbc3bc9c33d"}, - {file = "python_dotenv-0.14.0-py2.py3-none-any.whl", hash = "sha256:c10863aee750ad720f4f43436565e4c1698798d763b63234fb5021b6c616e423"}, -] python-ldap = [ {file = "python-ldap-3.3.1.tar.gz", hash = "sha256:4711cacf013e298754abd70058ccc995758177fb425f1c2d30e71adfc1d00aa5"}, ] @@ -2927,6 +2922,34 @@ requests = [ restructuredtext-lint = [ {file = "restructuredtext_lint-1.3.1.tar.gz", hash = "sha256:470e53b64817211a42805c3a104d2216f6f5834b22fe7adb637d1de4d6501fb8"}, ] +"ruamel.yaml" = [ + {file = "ruamel.yaml-0.16.12-py2.py3-none-any.whl", hash = "sha256:012b9470a0ea06e4e44e99e7920277edf6b46eee0232a04487ea73a7386340a5"}, + {file = "ruamel.yaml-0.16.12.tar.gz", hash = "sha256:076cc0bc34f1966d920a49f18b52b6ad559fbe656a0748e3535cf7b3f29ebf9e"}, +] +"ruamel.yaml.clib" = [ + {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:28116f204103cb3a108dfd37668f20abe6e3cafd0d3fd40dba126c732457b3cc"}, + {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:daf21aa33ee9b351f66deed30a3d450ab55c14242cfdfcd377798e2c0d25c9f1"}, + {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-win32.whl", hash = "sha256:30dca9bbcbb1cc858717438218d11eafb78666759e5094dd767468c0d577a7e7"}, + {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-win_amd64.whl", hash = "sha256:f6061a31880c1ed6b6ce341215336e2f3d0c1deccd84957b6fa8ca474b41e89f"}, + {file = "ruamel.yaml.clib-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:73b3d43e04cc4b228fa6fa5d796409ece6fcb53a6c270eb2048109cbcbc3b9c2"}, + {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:53b9dd1abd70e257a6e32f934ebc482dac5edb8c93e23deb663eac724c30b026"}, + {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:839dd72545ef7ba78fd2aa1a5dd07b33696adf3e68fae7f31327161c1093001b"}, + {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-win32.whl", hash = "sha256:b1e981fe1aff1fd11627f531524826a4dcc1f26c726235a52fcb62ded27d150f"}, + {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4e52c96ca66de04be42ea2278012a2342d89f5e82b4512fb6fb7134e377e2e62"}, + {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a873e4d4954f865dcb60bdc4914af7eaae48fb56b60ed6daa1d6251c72f5337c"}, + {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ab845f1f51f7eb750a78937be9f79baea4a42c7960f5a94dde34e69f3cce1988"}, + {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-win32.whl", hash = "sha256:e9f7d1d8c26a6a12c23421061f9022bb62704e38211fe375c645485f38df34a2"}, + {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:2602e91bd5c1b874d6f93d3086f9830f3e907c543c7672cf293a97c3fabdcd91"}, + {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:44c7b0498c39f27795224438f1a6be6c5352f82cb887bc33d962c3a3acc00df6"}, + {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8e8fd0a22c9d92af3a34f91e8a2594eeb35cba90ab643c5e0e643567dc8be43e"}, + {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-win32.whl", hash = "sha256:464e66a04e740d754170be5e740657a3b3b6d2bcc567f0c3437879a6e6087ff6"}, + {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:52ae5739e4b5d6317b52f5b040b1b6639e8af68a5b8fd606a8b08658fbd0cab5"}, + {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df5019e7783d14b79217ad9c56edf1ba7485d614ad5a385d1b3c768635c81c0"}, + {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5254af7d8bdf4d5484c089f929cb7f5bafa59b4f01d4f48adda4be41e6d29f99"}, + {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-win32.whl", hash = "sha256:74161d827407f4db9072011adcfb825b5258a5ccb3d2cd518dd6c9edea9e30f1"}, + {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:058a1cc3df2a8aecc12f983a48bda99315cebf55a3b3a5463e37bb599b05727b"}, + {file = "ruamel.yaml.clib-0.2.2.tar.gz", hash = "sha256:2d24bd98af676f4990c4d715bcdc2a60b19c56a3fb3a763164d2d8ca0e806ba7"}, +] rules = [ {file = "rules-2.2.tar.gz", hash = "sha256:9bae429f9d4f91a375402990da1541f9e093b0ac077221d57124d06eeeca4405"}, ] diff --git a/pyproject.toml b/pyproject.toml index fa99ec8a7d8f8048ea698e8c9edfdff5c9119762..467272f8e9b3bfa56513df2cee88e62b5227d7f7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ django-phonenumber-field = {version = "<5.1", extras = ["phonenumbers"]} django-sass-processor = "^0.8" libsass = "^0.20.0" colour = "^0.1.5" -dynaconf = {version = "^2.0", extras = ["yaml", "toml", "ini"]} +dynaconf = {version = "^3.1", extras = ["yaml", "toml", "ini"]} django-settings-context-processor = "^0.2" django-auth-ldap = { version = "^2.2", optional = true } django-maintenance-mode = "^0.15.0"