diff --git a/CHANGES.rst b/CHANGES.rst index 8933a834..6a6767da 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -12,6 +12,7 @@ Added Changed ^^^^^^^ - PostgreSQL and MySQL extras does not rely on libraries that need to be compiled. +- ``.env`` files are not loaded by default. The ``ENV_FILE`` env var must be passed so ``.env`` files are loaded. [0.0.56] - 2024-11-07 --------------------- diff --git a/canaille/__init__.py b/canaille/__init__.py index 3b84b72a..ec1e5c24 100644 --- a/canaille/__init__.py +++ b/canaille/__init__.py @@ -80,9 +80,7 @@ def setup_flask_converters(app): app.url_map.converters[model_name.lower()] = model_converter(model_class) -def create_app( - config=None, validate=True, backend=None, env_file=".env", env_prefix="" -): +def create_app(config=None, validate=True, backend=None, env_file=None, env_prefix=""): from .app.configuration import setup_config from .app.features import setup_features from .app.i18n import setup_i18n diff --git a/canaille/app/configuration.py b/canaille/app/configuration.py index 9dd62d37..e06e75c6 100644 --- a/canaille/app/configuration.py +++ b/canaille/app/configuration.py @@ -75,7 +75,7 @@ class RootSettings(BaseSettings): """ -def settings_factory(config, env_file=".env", env_prefix=""): +def settings_factory(config, env_file=None, env_prefix=""): """Pushes the backend specific configuration into CoreSettings, in the purpose break dependency against backends libraries like python-ldap or sqlalchemy.""" @@ -138,7 +138,7 @@ def toml_content(file_path): ) from exc -def setup_config(app, config=None, test_config=True, env_file=".env", env_prefix=""): +def setup_config(app, config=None, test_config=True, env_file=None, env_prefix=""): from canaille.oidc.installation import install app.config.from_mapping( @@ -151,6 +151,7 @@ def setup_config(app, config=None, test_config=True, env_file=".env", env_prefix if not config and "CONFIG" in os.environ: config = toml_content(os.environ.get("CONFIG")) + env_file = env_file or os.getenv("ENV_FILE") try: config_obj = settings_factory( config or {}, env_file=env_file, env_prefix=env_prefix diff --git a/demo/Procfile-ldap b/demo/Procfile-ldap index 41bd0b0c..a732b401 100644 --- a/demo/Procfile-ldap +++ b/demo/Procfile-ldap @@ -1,4 +1,4 @@ slapd: env BIN=$BIN:/usr/bin:/usr/sbin python ldap-server.py -canaille: env FLASK_DEBUG=1 AUTHLIB_INSECURE_TRANSPORT=1 CONFIG=conf/canaille-ldap.toml FLASK_APP=demoapp flask run --extra-files conf/canaille-ldap.toml --extra-files "$CANAILLE__THEME" +canaille: env FLASK_DEBUG=1 AUTHLIB_INSECURE_TRANSPORT=1 ENV_FILE=../.env CONFIG=conf/canaille-ldap.toml FLASK_APP=demoapp flask run --extra-files conf/canaille-ldap.toml --extra-files "$CANAILLE__THEME" client1: env FLASK_DEBUG=1 CONFIG=../conf/client1.cfg FLASK_APP=client flask run --port=5001 client2: env FLASK_DEBUG=1 CONFIG=../conf/client2.cfg FLASK_APP=client flask run --port=5002 diff --git a/demo/Procfile-memory b/demo/Procfile-memory index 11d8aaaf..9a3d7f0a 100644 --- a/demo/Procfile-memory +++ b/demo/Procfile-memory @@ -1,3 +1,3 @@ -canaille: env FLASK_DEBUG=1 AUTHLIB_INSECURE_TRANSPORT=1 CONFIG=conf/canaille-memory.toml FLASK_APP=demoapp flask run --extra-files conf/canaille-memory.toml --extra-files "$CANAILLE__THEME" +canaille: env FLASK_DEBUG=1 AUTHLIB_INSECURE_TRANSPORT=1 ENV_FILE=../.env CONFIG=conf/canaille-memory.toml FLASK_APP=demoapp flask run --extra-files conf/canaille-memory.toml --extra-files "$CANAILLE__THEME" client1: env FLASK_DEBUG=1 CONFIG=../conf/client1.cfg FLASK_APP=client flask run --port=5001 client2: env FLASK_DEBUG=1 CONFIG=../conf/client2.cfg FLASK_APP=client flask run --port=5002 diff --git a/demo/Procfile-sql b/demo/Procfile-sql index ecc23f57..e8c10b86 100644 --- a/demo/Procfile-sql +++ b/demo/Procfile-sql @@ -1,3 +1,3 @@ -canaille: env FLASK_DEBUG=1 AUTHLIB_INSECURE_TRANSPORT=1 CONFIG=conf/canaille-sql.toml FLASK_APP=demoapp flask run --extra-files conf/canaille-sql.toml --extra-files "$CANAILLE__THEME" +canaille: env FLASK_DEBUG=1 AUTHLIB_INSECURE_TRANSPORT=1 ENV_FILE=../.env CONFIG=conf/canaille-sql.toml FLASK_APP=demoapp flask run --extra-files conf/canaille-sql.toml --extra-files "$CANAILLE__THEME" client1: env FLASK_DEBUG=1 CONFIG=../conf/client1.cfg FLASK_APP=client flask run --port=5001 client2: env FLASK_DEBUG=1 CONFIG=../conf/client2.cfg FLASK_APP=client flask run --port=5002 diff --git a/doc/locales/doc.pot b/doc/locales/doc.pot index c43839b1..2e3dd6ed 100644 --- a/doc/locales/doc.pot +++ b/doc/locales/doc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: canaille 0.0.56\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-05 10:35+0100\n" +"POT-Creation-Date: 2024-12-05 15:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,63 +37,63 @@ msgid "[0.0.57] - Unreleased" msgstr "" #: ../../CHANGES.rst:5 -#: ../../CHANGES.rst:24 -#: ../../CHANGES.rst:52 -#: ../../CHANGES.rst:71 -#: ../../CHANGES.rst:78 -#: ../../CHANGES.rst:97 -#: ../../CHANGES.rst:157 -#: ../../CHANGES.rst:183 -#: ../../CHANGES.rst:198 -#: ../../CHANGES.rst:247 -#: ../../CHANGES.rst:273 -#: ../../CHANGES.rst:292 -#: ../../CHANGES.rst:300 -#: ../../CHANGES.rst:309 -#: ../../CHANGES.rst:335 -#: ../../CHANGES.rst:370 -#: ../../CHANGES.rst:396 -#: ../../CHANGES.rst:445 -#: ../../CHANGES.rst:473 -#: ../../CHANGES.rst:503 -#: ../../CHANGES.rst:559 -#: ../../CHANGES.rst:592 -#: ../../CHANGES.rst:613 -#: ../../CHANGES.rst:623 -#: ../../CHANGES.rst:646 -#: ../../CHANGES.rst:713 -#: ../../CHANGES.rst:751 -#: ../../CHANGES.rst:768 -#: ../../CHANGES.rst:804 +#: ../../CHANGES.rst:25 +#: ../../CHANGES.rst:53 +#: ../../CHANGES.rst:72 +#: ../../CHANGES.rst:79 +#: ../../CHANGES.rst:98 +#: ../../CHANGES.rst:158 +#: ../../CHANGES.rst:184 +#: ../../CHANGES.rst:199 +#: ../../CHANGES.rst:248 +#: ../../CHANGES.rst:274 +#: ../../CHANGES.rst:293 +#: ../../CHANGES.rst:301 +#: ../../CHANGES.rst:310 +#: ../../CHANGES.rst:336 +#: ../../CHANGES.rst:371 +#: ../../CHANGES.rst:397 +#: ../../CHANGES.rst:446 +#: ../../CHANGES.rst:474 +#: ../../CHANGES.rst:504 +#: ../../CHANGES.rst:560 +#: ../../CHANGES.rst:593 +#: ../../CHANGES.rst:614 +#: ../../CHANGES.rst:624 +#: ../../CHANGES.rst:647 +#: ../../CHANGES.rst:714 +#: ../../CHANGES.rst:752 +#: ../../CHANGES.rst:769 +#: ../../CHANGES.rst:805 #: 5b2ae28202d249e39370b51c82a35bda #: a10a871fc6ea42e8a52a1aa323001a53 -#: 06bb06ed26e14f228d39a5805e212e8c -#: b99bae88eb5b4794a79d8e4e561f0509 -#: 5a2cc6dfd9bd4718b83ddf24ce1f0832 -#: 1b88c84d14d44098b08bceb97c6ee6b0 -#: 42b40b7899684424834906af815973c2 -#: da9b8c095e3049e6b2e2a980ffe8dd82 -#: bcd36bf880b9436a8298bcf0ba43f539 -#: 9b87cf3e3bc74704ac8e1ed254afa219 -#: fb573dd0e3214fd2bd42dfc9bfd4ed3f -#: 879349a0469a4bfb8f1bebf657e3a492 -#: f69756f7cbce4c91be792d04ef264b0e -#: a8a72b6277c64934bb9c78f1c5b113e0 -#: 2f75c23bf6df48dcb5ded202a9e2825d -#: 4399afc444074a98b3a22ad73aa7077b -#: 449c62c57a4945e9a138c5c45ad305e0 -#: 204ce62ed14c49eba295562875072081 -#: a2bb082b896343be8a641e657dcb57a4 -#: 1476e487c3a44450b169eafe4bc64496 -#: a9020fb52fd7474eae708f0b533fcdac -#: 18695ced44594bda89af136cbd170550 -#: 2d5fa640a1e141ce8d7f5f3d6afe5b19 -#: a8c7d759c999485b8cbbcc0104a48ba1 -#: 4257e62307cd428e86ce67017e9e53a6 -#: ad20c0696d134742bd715d909f1c98c6 -#: 6418106c387b4e41aac9b92e8c80bb8d -#: 3759d3e54b7542fcad71a184d1bccf98 -#: 79217de42415446d832d6fd1ce8c18e2 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 +#: a10a871fc6ea42e8a52a1aa323001a53 msgid "Added" msgstr "" @@ -108,45 +108,45 @@ msgid ":attr:`~canaille.core.configuration.CoreSettings.ADMIN_EMAIL` and :attr:` msgstr "" #: ../../CHANGES.rst:13 -#: ../../CHANGES.rst:32 -#: ../../CHANGES.rst:45 -#: ../../CHANGES.rst:57 -#: ../../CHANGES.rst:82 -#: ../../CHANGES.rst:90 -#: ../../CHANGES.rst:138 -#: ../../CHANGES.rst:164 -#: ../../CHANGES.rst:216 -#: ../../CHANGES.rst:253 -#: ../../CHANGES.rst:322 -#: ../../CHANGES.rst:340 -#: ../../CHANGES.rst:378 -#: ../../CHANGES.rst:417 -#: ../../CHANGES.rst:452 -#: ../../CHANGES.rst:495 -#: ../../CHANGES.rst:599 -#: ../../CHANGES.rst:653 -#: ../../CHANGES.rst:685 -#: ../../CHANGES.rst:699 +#: ../../CHANGES.rst:33 +#: ../../CHANGES.rst:46 +#: ../../CHANGES.rst:58 +#: ../../CHANGES.rst:83 +#: ../../CHANGES.rst:91 +#: ../../CHANGES.rst:139 +#: ../../CHANGES.rst:165 +#: ../../CHANGES.rst:217 +#: ../../CHANGES.rst:254 +#: ../../CHANGES.rst:323 +#: ../../CHANGES.rst:341 +#: ../../CHANGES.rst:379 +#: ../../CHANGES.rst:418 +#: ../../CHANGES.rst:453 +#: ../../CHANGES.rst:496 +#: ../../CHANGES.rst:600 +#: ../../CHANGES.rst:654 +#: ../../CHANGES.rst:686 +#: ../../CHANGES.rst:700 #: 51ebea9760e04f049db58a8d1e2fdd09 #: f16b19d1f00741a9a6ac39eca0c46f63 -#: 21a7e1c51c9f409bae3952d5da790583 -#: 9181f143eccb42d7baf7101edc992caa -#: 48808b227d9242f5882ee5057a4a92cb -#: ddfdd7b0d1f74ca5857ecef32902cb86 -#: 6c416cc471a945fa82c2a46845f9c593 -#: f72bc6d596fc4badae768da5cd7c012d -#: 13ffe768ee0a4f6ab654b3f0f090e135 -#: 728e29f4be254e7dbbb9087e2f303521 -#: 5301bab7d22747bca4ec98874862f2cf -#: a412822ca58c421ca42a01da4ac0b815 -#: 84faaeb41df44041af3a25592f99518c -#: 6ad82476e1ff423f8ef651748d34816b -#: f67f0886183c4164bab79b1b287e1715 -#: bfd890b945e14106985c29fb6148c8f0 -#: a050e5fd325044b38874a6d5e184203b -#: b8d2b1429b6e4352a7e57df751cc4345 -#: fbc7112e3c8a49688aa4fcbeb4ff6c80 -#: 0c9657b1e40544beb9bf1081622a7c4a +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 +#: f16b19d1f00741a9a6ac39eca0c46f63 msgid "Changed" msgstr "" @@ -155,1567 +155,1572 @@ msgstr "" msgid "PostgreSQL and MySQL extras does not rely on libraries that need to be compiled." msgstr "" -#: ../../CHANGES.rst:17 +#: ../../CHANGES.rst:15 +#: 9108b999fecf4abf910d338c13fd0fc0 +msgid "``.env`` files are not loaded by default. The ``ENV_FILE`` env var must be passed so ``.env`` files are loaded." +msgstr "" + +#: ../../CHANGES.rst:18 #: 56edbd9989cf41c4b9b58dfd5e108991 msgid "[0.0.56] - 2024-11-07" msgstr "" -#: ../../CHANGES.rst:20 -#: ../../CHANGES.rst:62 -#: ../../CHANGES.rst:101 -#: ../../CHANGES.rst:109 -#: ../../CHANGES.rst:117 -#: ../../CHANGES.rst:124 -#: ../../CHANGES.rst:131 -#: ../../CHANGES.rst:145 -#: ../../CHANGES.rst:175 -#: ../../CHANGES.rst:188 -#: ../../CHANGES.rst:206 -#: ../../CHANGES.rst:225 -#: ../../CHANGES.rst:233 -#: ../../CHANGES.rst:259 -#: ../../CHANGES.rst:267 -#: ../../CHANGES.rst:287 -#: ../../CHANGES.rst:317 -#: ../../CHANGES.rst:349 -#: ../../CHANGES.rst:357 -#: ../../CHANGES.rst:383 -#: ../../CHANGES.rst:403 -#: ../../CHANGES.rst:427 -#: ../../CHANGES.rst:437 -#: ../../CHANGES.rst:458 -#: ../../CHANGES.rst:466 -#: ../../CHANGES.rst:489 -#: ../../CHANGES.rst:512 -#: ../../CHANGES.rst:524 -#: ../../CHANGES.rst:533 -#: ../../CHANGES.rst:542 -#: ../../CHANGES.rst:551 -#: ../../CHANGES.rst:571 -#: ../../CHANGES.rst:578 -#: ../../CHANGES.rst:628 -#: ../../CHANGES.rst:636 -#: ../../CHANGES.rst:661 -#: ../../CHANGES.rst:669 -#: ../../CHANGES.rst:677 -#: ../../CHANGES.rst:690 -#: ../../CHANGES.rst:704 -#: ../../CHANGES.rst:736 -#: ../../CHANGES.rst:759 -#: ../../CHANGES.rst:790 +#: ../../CHANGES.rst:21 +#: ../../CHANGES.rst:63 +#: ../../CHANGES.rst:102 +#: ../../CHANGES.rst:110 +#: ../../CHANGES.rst:118 +#: ../../CHANGES.rst:125 +#: ../../CHANGES.rst:132 +#: ../../CHANGES.rst:146 +#: ../../CHANGES.rst:176 +#: ../../CHANGES.rst:189 +#: ../../CHANGES.rst:207 +#: ../../CHANGES.rst:226 +#: ../../CHANGES.rst:234 +#: ../../CHANGES.rst:260 +#: ../../CHANGES.rst:268 +#: ../../CHANGES.rst:288 +#: ../../CHANGES.rst:318 +#: ../../CHANGES.rst:350 +#: ../../CHANGES.rst:358 +#: ../../CHANGES.rst:384 +#: ../../CHANGES.rst:404 +#: ../../CHANGES.rst:428 +#: ../../CHANGES.rst:438 +#: ../../CHANGES.rst:459 +#: ../../CHANGES.rst:467 +#: ../../CHANGES.rst:490 +#: ../../CHANGES.rst:513 +#: ../../CHANGES.rst:525 +#: ../../CHANGES.rst:534 +#: ../../CHANGES.rst:543 +#: ../../CHANGES.rst:552 +#: ../../CHANGES.rst:572 +#: ../../CHANGES.rst:579 +#: ../../CHANGES.rst:629 +#: ../../CHANGES.rst:637 +#: ../../CHANGES.rst:662 +#: ../../CHANGES.rst:670 +#: ../../CHANGES.rst:678 +#: ../../CHANGES.rst:691 +#: ../../CHANGES.rst:705 +#: ../../CHANGES.rst:737 +#: ../../CHANGES.rst:760 +#: ../../CHANGES.rst:791 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 +#: ada79906de064c77a4cff6eda5238016 #: ada79906de064c77a4cff6eda5238016 -#: ef969b105e9e4c859461ca5c7891fc97 -#: eb9148b93ff5430b8fec0cd848bc586a -#: eb04d9c2277a4f659e81503351502067 -#: a3b680e4889447fcb4cc6e466dfa4a86 -#: 65689b9a907c47c5a29cf66a8375e867 -#: f4c798aa2b3f49b9b32ad4b262e5a18a -#: 85130e29389d4d72a616ed2b9945e624 -#: 853479a51fd14b3ebea4f217b95f813f -#: 35ab2d6805704ee0b8d69df22cfb370c -#: 18954c2ed9a64c2080e60a8ddc7250c9 -#: 79bbc08738324d69bead6ffedb3d5587 -#: d72f4c84822c412caf0fd12563fca75f -#: 555159be8ad946d4a2fefc3ff0a67f8c -#: ee6d703c1d1f4e52b8641f5ed853e890 -#: a610bc73b442434b8dd9e615b4458650 -#: 45154e22bc5d4f5eaf168669931f3885 -#: 9221ecf9b8ac444fb065d93e3d848e9b -#: 39d7b6338980431a9e7c73d1793c0909 -#: ccffafc3081845c5a6a35da5e3e3b80f -#: ab0d961d2d2a46a3831e766d550d8c14 -#: 71a254a18b884948a3b26d32ed9d5f40 -#: c1fdc5c9274941c0839e8da466550eb4 -#: 560dd043f92d43e0a973602fd3ec8947 -#: 4bc790da686c4699871821796053520a -#: c66630ffcf7145d4bcc60b68fbbb5262 -#: 0236d94896cb499185bd37a01c89928b -#: b5fd023061684f088f7d99a0163da3f1 -#: ebf41a7f162340ddafce86f0e8f0d3de -#: ae1a4acf06cb47b8b49b3e4d3d1a03f3 -#: fee9b3c278a74ea0b66f67150aca956c -#: 51b3ec121780468e96f1a5956ad1e96f -#: 07a9c88a7e7c45a796cd066b6064472e -#: 3584c55c5f50423cb2fbbf6b18336fbf -#: b65f90e4e327446eabd2f41d9b3ec79c -#: 89e9318124d7428abd02adf61a7fdecc -#: 5a6fda0701884fffb8bf244ed6a66638 -#: 7d577d62f6ea47de9c1a3334513718fa -#: 255c1c9025e84264b6736d9fb069cb05 -#: 3bb4a69fd40f4680acdc8da38a73e64e -#: eeb4cd7c19f44ca9b32c21cbd631483b -#: 8e01d28285da4abc813e8de16dc19431 -#: 4ec0a2ef90b54b64a9a037b6623cfa81 msgid "Fixed" msgstr "" -#: ../../CHANGES.rst:21 +#: ../../CHANGES.rst:22 #: 3d50d62c605c4973956375e2229be4f1 msgid "With LDAP backend, updating another user groups could result in a permission lost for the editor. :issue:`202`" msgstr "" -#: ../../CHANGES.rst:25 +#: ../../CHANGES.rst:26 #: ce5db69d7e134a938f544bc4c14c2dbc msgid ":attr:`~canaille.core.configuration.CoreSettings.MAX_PASSWORD_LENGHT` and :attr:`~canaille.core.configuration.CoreSettings.MIN_PASSWORD_LENGHT` configuration options :issue:`174`" msgstr "" -#: ../../CHANGES.rst:27 +#: ../../CHANGES.rst:28 #: 0952593cb9c24691baaf0bbbeafbefd0 msgid "Password strength visual indicator. :issue:`174`" msgstr "" -#: ../../CHANGES.rst:28 +#: ../../CHANGES.rst:29 #: 34660cc568ac402485a0ae2a226c3ed9 msgid "Security events logs. :issue:`177`" msgstr "" -#: ../../CHANGES.rst:29 +#: ../../CHANGES.rst:30 #: 74390b590e9e4714bff818c8d9d95630 msgid "Support for Python 3.13. :pr:`186`" msgstr "" -#: ../../CHANGES.rst:33 +#: ../../CHANGES.rst:34 #: 962e298f8c7c44a8b3b0f450eb596537 msgid "Update to `HTMX` 2.0.3. :pr:`184`" msgstr "" -#: ../../CHANGES.rst:34 +#: ../../CHANGES.rst:35 #: ab78bee0981041d3ade7f68673ab3f12 msgid "Migrate the Python project management tool from poetry to uv. :pr:`187`" msgstr "" -#: ../../CHANGES.rst:35 +#: ../../CHANGES.rst:36 #: 7cb284d8934d4df7b96b3d995f0ae69a msgid "The ``sql`` package extra is now split between ``sqlite``, ``postgresql`` and ``mysql``." msgstr "" -#: ../../CHANGES.rst:38 -#: ../../CHANGES.rst:388 -#: ../../CHANGES.rst:796 +#: ../../CHANGES.rst:39 +#: ../../CHANGES.rst:389 +#: ../../CHANGES.rst:797 +#: 06fd8459f24443f5bc2dd961a2174774 +#: 06fd8459f24443f5bc2dd961a2174774 #: 06fd8459f24443f5bc2dd961a2174774 -#: 6dc9208788034de2ad0cf0c696b719ff -#: 0f77e9dcdff145b4af33a3d0c9c27b51 msgid "Removed" msgstr "" -#: ../../CHANGES.rst:39 +#: ../../CHANGES.rst:40 #: 7dbb1818231144988378efbcc14e0335 msgid "End support for Python 3.9. :pr:`179`" msgstr "" -#: ../../CHANGES.rst:42 +#: ../../CHANGES.rst:43 #: bb731fcd74024f44b0b679df8fd1de3b msgid "[0.0.55] - 2024-08-30" msgstr "" -#: ../../CHANGES.rst:46 +#: ../../CHANGES.rst:47 #: e3f7e5b1ec3d471bbaad41ad6afbd38e msgid "Use poetry-core build backend. :pr:`178`" msgstr "" -#: ../../CHANGES.rst:49 +#: ../../CHANGES.rst:50 #: 97d86f7b7b6d4df3a78b00068c114b55 msgid "[0.0.54] - 2024-07-25" msgstr "" -#: ../../CHANGES.rst:53 +#: ../../CHANGES.rst:54 #: 0f6a7830c88b4121b1141a68853d36fd msgid "Group member removal can be achieved from the group edition page. :issue:`192`" msgstr "" -#: ../../CHANGES.rst:54 +#: ../../CHANGES.rst:55 #: 761788b232b74eb089dd20c1a57bcf2a msgid "Model management commands. :issue:`117` :issue:`54`" msgstr "" -#: ../../CHANGES.rst:58 +#: ../../CHANGES.rst:59 #: 1e28ba0fab8947bfbb7b10fc9dfca645 msgid "Model `identifier_attributes` are fixed." msgstr "" -#: ../../CHANGES.rst:59 +#: ../../CHANGES.rst:60 #: 72287f1ba34c4cc8b2cf0b4af47bbd53 msgid "Bump to `HTMX` 1.9.12. :pr:`172`" msgstr "" -#: ../../CHANGES.rst:64 +#: ../../CHANGES.rst:65 #: 72071aa06de847d29dcd9500881409d0 msgid "Dark theme colors for better readability." msgstr "" -#: ../../CHANGES.rst:65 +#: ../../CHANGES.rst:66 #: 600f70e2aecd4eba9ddee16500df48db msgid "Crash for passwordless users at login when no SMTP server was configured." msgstr "" -#: ../../CHANGES.rst:68 +#: ../../CHANGES.rst:69 #: 09953502ecec43198af93b4c10d5dc3e msgid "[0.0.53] - 2024-04-22" msgstr "" -#: ../../CHANGES.rst:72 +#: ../../CHANGES.rst:73 #: 4627291987094c60b1acc76d520719b4 msgid "`env_prefix` :meth:`~canaille.create_app` variable can select the environment var prefix." msgstr "" -#: ../../CHANGES.rst:75 +#: ../../CHANGES.rst:76 #: f21535ae9e6643708c8459143e861870 msgid "[0.0.52] - 2024-04-22" msgstr "" -#: ../../CHANGES.rst:79 +#: ../../CHANGES.rst:80 #: c9c3eb7bdd894b96b0adf60e33691fd4 msgid "`env_file` create_app variable can customize/disable the .env file." msgstr "" -#: ../../CHANGES.rst:83 +#: ../../CHANGES.rst:84 #: 7cda9bf8a22540d0b3233546e130847f msgid "Locked users cannot be impersonated anymore." msgstr "" -#: ../../CHANGES.rst:84 +#: ../../CHANGES.rst:85 #: 965223cd352948c8a77f1b4ce2b50ce4 msgid "Minimum Python requirement is 3.9." msgstr "" -#: ../../CHANGES.rst:87 +#: ../../CHANGES.rst:88 #: de227140ea8e4d629ffd4189dbd43460 msgid "[0.0.51] - 2024-04-09" msgstr "" -#: ../../CHANGES.rst:91 +#: ../../CHANGES.rst:92 #: 79f55debd9964020a684739fd256ef14 msgid "Display the menu bar on error pages." msgstr "" -#: ../../CHANGES.rst:94 +#: ../../CHANGES.rst:95 #: 27a5f8ea8faa41deaf71ae8564fd43a5 msgid "[0.0.50] - 2024-04-09" msgstr "" -#: ../../CHANGES.rst:98 +#: ../../CHANGES.rst:99 #: 8d78dcd06ac84e7d9075dbb55d08b68c msgid "Sign in/out events are logged in. :issue:`177`" msgstr "" -#: ../../CHANGES.rst:102 +#: ../../CHANGES.rst:103 #: f54c1f04263c4f19bf7c01a9e9fb1533 msgid "`HTMX` and `JAVASCRIPT` configuration settings." msgstr "" -#: ../../CHANGES.rst:103 +#: ../../CHANGES.rst:104 #: aac9f0d6bc274a6998bed8663e581445 msgid "Compatibility with old sessions IDs." msgstr "" -#: ../../CHANGES.rst:106 +#: ../../CHANGES.rst:107 #: 6c309d659a9d4b00897c0c86136117f2 msgid "[0.0.49] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:110 +#: ../../CHANGES.rst:111 #: e40c5385bf174d4dbdeb1e6c8f2bbca9 msgid "LDAP user group removal." msgstr "" -#: ../../CHANGES.rst:111 +#: ../../CHANGES.rst:112 #: db426dd917e9449ea1571f6d90fb59cb msgid "Display an error message when trying to remove the last user from a group." msgstr "" -#: ../../CHANGES.rst:114 +#: ../../CHANGES.rst:115 #: aa9c1e96a9d84eb388b2ad22b0b9fa86 msgid "[0.0.48] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:118 +#: ../../CHANGES.rst:119 #: 3bbde6f2fc244902955a6b16a1d9bdc6 msgid "LDAP ``objectClass`` guessing exception." msgstr "" -#: ../../CHANGES.rst:121 +#: ../../CHANGES.rst:122 #: f55a477d72624ef691e7a783940c3208 msgid "[0.0.47] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:125 +#: ../../CHANGES.rst:126 #: aa6227db351548d1a883af36de508805 msgid "Lazy permission loading exception." msgstr "" -#: ../../CHANGES.rst:128 +#: ../../CHANGES.rst:129 #: 665fb2129c5f4c498a9eca30a7625d69 msgid "[0.0.46] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:132 +#: ../../CHANGES.rst:133 #: a736243f81d845d5a13e66303db4632d msgid "Saving an object with the LDAP backend keeps the ``objectClass`` un-managed by Canaille. :pr:`171`" msgstr "" -#: ../../CHANGES.rst:135 +#: ../../CHANGES.rst:136 #: 23d50243f242497eafeb43190b191910 msgid "[0.0.45] - 2024-04-04" msgstr "" -#: ../../CHANGES.rst:139 +#: ../../CHANGES.rst:140 #: 8ca38c12afde4e1d881f0f631dee2180 msgid "Internal indexation mechanism of :class:`~canaille.backends.memory.model.MemoryModel`." msgstr "" -#: ../../CHANGES.rst:142 +#: ../../CHANGES.rst:143 #: 0ec8aaff2a864d52beaead02de313d2f msgid "[0.0.44] - 2024-03-29" msgstr "" -#: ../../CHANGES.rst:146 +#: ../../CHANGES.rst:147 #: 23af820d08664c0dbf3229567505e6a9 msgid "Fix the default LDAP ``USER_FILTER`` value." msgstr "" -#: ../../CHANGES.rst:147 +#: ../../CHANGES.rst:148 #: 695d4f4fe29a4f07960244b87ee1db21 msgid "Fix the OIDC feature detection." msgstr "" -#: ../../CHANGES.rst:150 +#: ../../CHANGES.rst:151 #: e7f1b082e81e4486b09fc76512e49dc5 msgid "[0.0.43] - 2024-03-29" msgstr "" -#: ../../CHANGES.rst:154 -#: ../../CHANGES.rst:413 +#: ../../CHANGES.rst:155 +#: ../../CHANGES.rst:414 +#: 5cd7f27a291e46298c9a3aa6ee0e5cf0 #: 5cd7f27a291e46298c9a3aa6ee0e5cf0 -#: 9500c80e02fb4222ab0d65fe10144c3e msgid "Configuration files must be updated." msgstr "" -#: ../../CHANGES.rst:159 +#: ../../CHANGES.rst:160 #: d7d284cc9b424ec69d5240b428964d52 msgid "Add ``created`` and ``last_modified`` datetime for all models." msgstr "" -#: ../../CHANGES.rst:160 +#: ../../CHANGES.rst:161 #: 19050fc882664743866b11a49ca7e398 msgid "Sitemap to the documentation. :pr:`169`" msgstr "" -#: ../../CHANGES.rst:161 +#: ../../CHANGES.rst:162 #: bd7c56451cfa479fb3b8d19275045b6e msgid "Configuration management with `pydantic-settings`. :issue:`138` :pr:`170`" msgstr "" -#: ../../CHANGES.rst:166 +#: ../../CHANGES.rst:167 #: d3e65f7666664d4f8ca54f02bf597c71 msgid "Use default Python logging configuration format. :issue:`188` :pr:`165`" msgstr "" -#: ../../CHANGES.rst:167 +#: ../../CHANGES.rst:168 #: ae5e4441862443b9aac1e26cf19a8908 msgid "Bump to `HTMX` 1.99.11. :pr:`166`" msgstr "" -#: ../../CHANGES.rst:168 +#: ../../CHANGES.rst:169 #: e487c2a78a354c6e85ec43fda9f59c4d msgid "Use the standard tomllib Python module instead of `toml` starting from Python 3.11. :pr:`167`" msgstr "" -#: ../../CHANGES.rst:169 +#: ../../CHANGES.rst:170 #: e80e66bd46e14c0fae82950444ba043b msgid "Use shibuya as the documentation theme :pr:`168`" msgstr "" -#: ../../CHANGES.rst:172 +#: ../../CHANGES.rst:173 #: 0eb0c4eec73848d283d54626e8538c61 msgid "[0.0.42] - 2023-12-29" msgstr "" -#: ../../CHANGES.rst:177 +#: ../../CHANGES.rst:178 #: 8e57897d767b4603a54db28c97416ee8 msgid "Avoid to fail on imports if ``cryptography`` is missing." msgstr "" -#: ../../CHANGES.rst:180 +#: ../../CHANGES.rst:181 #: f4ff69324e6e4a24b2f5aabf9ee71655 msgid "[0.0.41] - 2023-12-25" msgstr "" -#: ../../CHANGES.rst:185 +#: ../../CHANGES.rst:186 #: 39dd9ec6c6c2415fa90973a715a08d9f msgid "OIDC support for the ``create`` value of the ``prompt`` parameter. :issue:`185` :pr:`164`" msgstr "" -#: ../../CHANGES.rst:190 +#: ../../CHANGES.rst:191 #: 7d59a023c9bc4a9b94f4339112602d32 msgid "Correctly set up :attr:`~canaille.oidc.basemodels.Client.audience` during OIDC dynamic registration." msgstr "" -#: ../../CHANGES.rst:191 +#: ../../CHANGES.rst:192 #: 1e194b3a94034c65936a18174d1078c5 msgid "``post_logout_redirect_uris`` was ignored during OIDC dynamic registration." msgstr "" -#: ../../CHANGES.rst:192 +#: ../../CHANGES.rst:193 #: d9f10cf1c5b3401d95f461f57dbfbece msgid "Group field error prevented the registration form validation." msgstr "" -#: ../../CHANGES.rst:195 +#: ../../CHANGES.rst:196 #: 6653ebc2588a4ad8989581ca1060f1d9 msgid "[0.0.40] - 2023-12-22" msgstr "" -#: ../../CHANGES.rst:200 +#: ../../CHANGES.rst:201 #: 1eb728d8f35e4e57bd9b4284c7dd677b msgid "The ``THEME`` setting can be a relative path." msgstr "" -#: ../../CHANGES.rst:203 +#: ../../CHANGES.rst:204 #: 37f2ef92582741e2985bab37fb6495df msgid "[0.0.39] - 2023-12-15" msgstr "" -#: ../../CHANGES.rst:208 +#: ../../CHANGES.rst:209 #: b46f180dbba54aafb438013586a4100f msgid "Crash when no ACL were defined." msgstr "" -#: ../../CHANGES.rst:209 +#: ../../CHANGES.rst:210 #: 958f8c3ecc57438e835053b3a7d87721 msgid "OIDC Userinfo endpoint is also available in POST." msgstr "" -#: ../../CHANGES.rst:210 +#: ../../CHANGES.rst:211 #: c37693d772f44c64b03f3baee793c0a1 msgid "Fix redirection after password reset. :issue:`159`" msgstr "" -#: ../../CHANGES.rst:213 +#: ../../CHANGES.rst:214 #: 9f0b57bb752141079ef51cc0833d3597 msgid "[0.0.38] - 2023-12-15" msgstr "" -#: ../../CHANGES.rst:218 +#: ../../CHANGES.rst:219 #: b208dfe943e64175906f965703dc33dd msgid "Convert all the `PNG` pictures in `Webp`. :pr:`162`" msgstr "" -#: ../../CHANGES.rst:219 +#: ../../CHANGES.rst:220 #: 3827e636cee240479b1fcedbc86bdfde msgid "Update to Flask 3. :issue:`161` :pr:`163`" msgstr "" -#: ../../CHANGES.rst:222 +#: ../../CHANGES.rst:223 #: acb7a5113f214b84b7f8fd21b48e22de msgid "[0.0.37] - 2023-12-01" msgstr "" -#: ../../CHANGES.rst:227 +#: ../../CHANGES.rst:228 #: a22ebfb72b3d4c8c8285d99f4a18ed88 msgid "Handle 4xx and 5xx error codes with HTMX. :issue:`171` :pr:`161`" msgstr "" -#: ../../CHANGES.rst:230 +#: ../../CHANGES.rst:231 #: 5033ceb76b61492896a738cbabdf0e1a msgid "[0.0.36] - 2023-12-01" msgstr "" -#: ../../CHANGES.rst:235 +#: ../../CHANGES.rst:236 #: df785fb08515480b8205eb8d521d699b msgid "Avoid crashing when LDAP groups references unexisting users." msgstr "" -#: ../../CHANGES.rst:236 +#: ../../CHANGES.rst:237 #: e24d3cf2b5344f3196d44717249eeac9 msgid "Password reset and initialization mails were only sent to the preferred user email address." msgstr "" -#: ../../CHANGES.rst:238 +#: ../../CHANGES.rst:239 #: 279eb5763cb9437e98472ba23ef09cb9 msgid "Password reset and initialization mails were not sent at all the user addresses if one email address could not be reached." msgstr "" -#: ../../CHANGES.rst:240 +#: ../../CHANGES.rst:241 #: 8dbbbb93c0d9468db5756b74091a0346 msgid "Password comparison was too permissive on login." msgstr "" -#: ../../CHANGES.rst:241 +#: ../../CHANGES.rst:242 #: 2d5c6dab823a45df94ab7061b78fa140 msgid "Encrypt passwords in the SQL backend." msgstr "" -#: ../../CHANGES.rst:244 +#: ../../CHANGES.rst:245 #: 09acf9167bb14934ac3e4b763914df5c msgid "[0.0.35] - 2023-11-25" msgstr "" -#: ../../CHANGES.rst:249 +#: ../../CHANGES.rst:250 #: b616ae34c6084446b826cbb4bea285ce msgid "Refresh token grant supports other client authentication methods. :pr:`157`" msgstr "" -#: ../../CHANGES.rst:250 +#: ../../CHANGES.rst:251 #: 5e0cc8d4b2f9482cb0dd7d15578824ca msgid "Implement a SQLAlchemy backend. :issue:`30` :pr:`158`" msgstr "" -#: ../../CHANGES.rst:255 +#: ../../CHANGES.rst:256 #: 1379d1aee7ee46fca1a78b6015f8d450 msgid "Model attributes cardinality is closer to SCIM model. :pr:`155`" msgstr "" -#: ../../CHANGES.rst:256 +#: ../../CHANGES.rst:257 #: 08f54a2189ba47dbb2e65e442181d6fd msgid "Bump to `HTMX` 1.9.9. :pr:`159`" msgstr "" -#: ../../CHANGES.rst:261 +#: ../../CHANGES.rst:262 #: 001465c19ae140678ce9a78eb0ae7ff5 msgid "Disable `HTMX` boosting during the OIDC dance. :pr:`160`" msgstr "" -#: ../../CHANGES.rst:264 +#: ../../CHANGES.rst:265 #: e063fae1c9984dc0af421058e9bfb500 msgid "[0.0.34] - 2023-10-02" msgstr "" -#: ../../CHANGES.rst:269 +#: ../../CHANGES.rst:270 #: 3aadd82912d6401f8fddc3655ad594b9 msgid "Canaille installations without account lockabilty could not delete users. :pr:`153`" msgstr "" -#: ../../CHANGES.rst:275 +#: ../../CHANGES.rst:276 #: 52c2946196324ed2bfacac3fb518a6a1 msgid "If users register or authenticate during a OAuth Authorization phase, they get redirected back to that page afterwards. :issue:`168` :pr:`151`" msgstr "" -#: ../../CHANGES.rst:278 +#: ../../CHANGES.rst:279 #: e0bb3561373b4651b98fcc1df2e5db94 msgid "The `flask-babel` and `pytz` libraries are now part of the `front` packaging extras." msgstr "" -#: ../../CHANGES.rst:279 +#: ../../CHANGES.rst:280 #: 9cc1748f2a624399ae9983904d6765fc msgid "Bump to `fomantic-ui` 2.9.3. :pr:`152`" msgstr "" -#: ../../CHANGES.rst:280 +#: ../../CHANGES.rst:281 #: ec7e3985dc034f43bc0e2411086928e7 msgid "Bump to `HTMX` 1.9.6. :pr:`154`" msgstr "" -#: ../../CHANGES.rst:281 +#: ../../CHANGES.rst:282 #: 768b97eabcb04396a1c3f7e3691c3ed2 msgid "Support for Python 3.12. :pr:`155`" msgstr "" -#: ../../CHANGES.rst:284 +#: ../../CHANGES.rst:285 #: 4664970b84d545e18a553f8191bc6e8b msgid "[0.0.33] - 2023-08-26" msgstr "" -#: ../../CHANGES.rst:289 +#: ../../CHANGES.rst:290 #: 3456a02cbd894fccb45ffc1108226c5a msgid "OIDC jwks endpoint do not return empty `kid` claim." msgstr "" -#: ../../CHANGES.rst:294 +#: ../../CHANGES.rst:295 #: fd6c83b8455f4402b82ffe670e6c83c1 msgid "Documentation details on the Canaille models." msgstr "" -#: ../../CHANGES.rst:297 +#: ../../CHANGES.rst:298 #: 1f3135eb404e412787af9b4f971ea523 msgid "[0.0.32] - 2023-08-17" msgstr "" -#: ../../CHANGES.rst:302 +#: ../../CHANGES.rst:303 #: fe7a0cb646094a3d9b2428f7b7d2f3d4 msgid "Additional inmemory backend. :issue:`30` :pr:`149`" msgstr "" -#: ../../CHANGES.rst:303 +#: ../../CHANGES.rst:304 #: 82523d1da67a46089ffd899f134486dd msgid "Installation extras. :issue:`167` :pr:`150`" msgstr "" -#: ../../CHANGES.rst:306 +#: ../../CHANGES.rst:307 #: 9b5b3399c9fd4f3bbc8e152ee37e7910 msgid "[0.0.31] - 2023-08-15" msgstr "" -#: ../../CHANGES.rst:311 +#: ../../CHANGES.rst:312 #: b2ebe664d67047a5882a33ac5c75875b msgid "Configuration option to disable the forced usage of OIDC `nonce` parameter. :pr:`143`" msgstr "" -#: ../../CHANGES.rst:312 +#: ../../CHANGES.rst:313 #: 463b404944d9465fa6a17d3d3c0ea106 msgid "Validate phone numbers with a regex. :pr:`146`" msgstr "" -#: ../../CHANGES.rst:313 +#: ../../CHANGES.rst:314 #: 0effe02b658f49698ab59c14e9103fbe msgid "Email verification. :issue:`41` :pr:`147`" msgstr "" -#: ../../CHANGES.rst:314 +#: ../../CHANGES.rst:315 #: ca5e445840644c90980662464ea67abc msgid "Account registration. :issue:`55` :pr:`133` :pr:`148`" msgstr "" -#: ../../CHANGES.rst:319 +#: ../../CHANGES.rst:320 #: 3792c9999c5a44c892129bce1c222552 msgid "The `check` command uses the default configuration values." msgstr "" -#: ../../CHANGES.rst:324 +#: ../../CHANGES.rst:325 #: 6e0b77065c024ebb96f30998294a3b8d msgid "Modals do not need use Javascript at the moment. :issue:`158` :pr:`144`" msgstr "" -#: ../../CHANGES.rst:327 +#: ../../CHANGES.rst:328 #: e513ff9194cb493fb3273e811b5b96d0 msgid "[0.0.30] - 2023-07-06" msgstr "" -#: ../../CHANGES.rst:331 +#: ../../CHANGES.rst:332 #: 7bd32f1cc1c24ce9a6a7a4f3d7fd6024 msgid "Configuration files must be updated. Check the new format with ``git diff 0.0.29 0.0.30 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:337 +#: ../../CHANGES.rst:338 #: a3f5487d18624886a2adee2c28346eae msgid "Configuration option to disable Javascript. :pr:`141`" msgstr "" -#: ../../CHANGES.rst:342 +#: ../../CHANGES.rst:343 #: e6ab42f3565b415f85d7778e5ac18966 msgid "The configuration parameter ``USER_FILTER`` is parsed with Jinja." msgstr "" -#: ../../CHANGES.rst:343 +#: ../../CHANGES.rst:344 #: de4e44a5b6324f389effc64a28a69c5d msgid "Configuration use ``PRIVATE_KEY_FILE`` instead of ``PRIVATE_KEY`` and ``PUBLIC_KEY_FILE`` instead of ``PUBLIC_KEY``." msgstr "" -#: ../../CHANGES.rst:346 +#: ../../CHANGES.rst:347 #: 812f9e5828dd4912bc832214d5ae721d msgid "[0.0.29] - 2023-06-30" msgstr "" -#: ../../CHANGES.rst:351 +#: ../../CHANGES.rst:352 #: 81bf1e1132f44c5399805dc865372873 msgid "Disabled `HTMX` boosting on OIDC forms to avoid errors." msgstr "" -#: ../../CHANGES.rst:354 +#: ../../CHANGES.rst:355 #: 0b442eaa0f7f44919f3793aac59d4b4d msgid "[0.0.28] - 2023-06-30" msgstr "" -#: ../../CHANGES.rst:359 +#: ../../CHANGES.rst:360 #: 3b645ba8d22642f7ae36a9401a170414 msgid "A template variable was misnamed." msgstr "" -#: ../../CHANGES.rst:362 +#: ../../CHANGES.rst:363 #: 1c8d7269601c4cbf8c6952063000a5f1 msgid "[0.0.27] - 2023-06-29" msgstr "" -#: ../../CHANGES.rst:366 +#: ../../CHANGES.rst:367 #: 3082667648f14f86a48ba1f4c71c6bf1 msgid "Configuration files must be updated. Check the new format with ``git diff 0.0.26 0.0.27 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:372 +#: ../../CHANGES.rst:373 #: d37a0bf60d6a407094dca1df32907bc3 msgid "Configuration entries can be loaded from files if the entry key has a *_FILE* suffix and the entry value is the path to the file. :issue:`134` :pr:`134`" msgstr "" -#: ../../CHANGES.rst:374 +#: ../../CHANGES.rst:375 #: b198cedfd2dc4b1ca5caffb7281b2b77 msgid "Field list support. :issue:`115` :pr:`136`" msgstr "" -#: ../../CHANGES.rst:375 +#: ../../CHANGES.rst:376 #: bda5916225d046aa92eee4df020d31d7 msgid "Pages are boosted with `HTMX`. :issue:`144` :issue:`145` :pr:`137`" msgstr "" -#: ../../CHANGES.rst:380 +#: ../../CHANGES.rst:381 #: f0103671112e414da54f464537b92886 msgid "Bump to jquery 3.7.0. :pr:`138`" msgstr "" -#: ../../CHANGES.rst:385 +#: ../../CHANGES.rst:386 #: a3de7cd9d0b74333bbe2252c30b27d24 msgid "Profile edition when the user RDN was not ``uid``. :issue:`148` :pr:`139`" msgstr "" -#: ../../CHANGES.rst:390 +#: ../../CHANGES.rst:391 #: a8ee95c286e44ee190211fc2e7792b41 msgid "Stop support for Python 3.7. :pr:`131`" msgstr "" -#: ../../CHANGES.rst:393 +#: ../../CHANGES.rst:394 #: 031ef0bde1a142fda5313115f399b305 msgid "[0.0.26] - 2023-06-03" msgstr "" -#: ../../CHANGES.rst:398 +#: ../../CHANGES.rst:399 #: 8cd815265cd245d8ae32992c885e4c63 msgid "Implemented account expiration based on OpenLDAP ppolicy overlay. Needs OpenLDAP 2.5+. :issue:`13` :pr:`118`" msgstr "" -#: ../../CHANGES.rst:400 +#: ../../CHANGES.rst:401 #: f7ab79e41d1c400fa0f5be534df749eb msgid "Timezone configuration entry. :issue:`137` :pr:`130`" msgstr "" -#: ../../CHANGES.rst:405 +#: ../../CHANGES.rst:406 #: 01a6b5ffbd164e11a7d13c2a720b6230 msgid "Avoid setting ``None`` in JWT claims when they have no value." msgstr "" -#: ../../CHANGES.rst:406 +#: ../../CHANGES.rst:407 #: 1b9beda783b14033b13b34bb69dcf94e msgid "Display password recovery button on OIDC login page. :pr:`129`" msgstr "" -#: ../../CHANGES.rst:409 +#: ../../CHANGES.rst:410 #: 98f294fe9c78448e92a9340f14812660 msgid "[0.0.25] - 2023-05-05" msgstr "" -#: ../../CHANGES.rst:414 +#: ../../CHANGES.rst:415 #: b9e80a38348a4fabb577d17c476ef787 msgid "Check the new format with ``git diff 0.0.25 0.0.24 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:419 +#: ../../CHANGES.rst:420 #: d72e485b1606403e895166193d518a26 msgid "Renamed user model attributes to match SCIM naming convention. :pr:`123`" msgstr "" -#: ../../CHANGES.rst:420 +#: ../../CHANGES.rst:421 #: f53dae9936ca4478b6575167779eb297 msgid "Moved OIDC related configuration entries in ``OIDC``." msgstr "" -#: ../../CHANGES.rst:421 +#: ../../CHANGES.rst:422 #: c097b3593a1f42d882167cef3925368a msgid "Moved ``LDAP`` configuration entry to ``BACKENDS.LDAP``." msgstr "" -#: ../../CHANGES.rst:422 +#: ../../CHANGES.rst:423 #: 88b8faa16b314ab3bc05c8a24dc7432e msgid "Bumped to `HTMX` 1.9.0. :pr:`124`" msgstr "" -#: ../../CHANGES.rst:423 +#: ../../CHANGES.rst:424 #: 391a6692f5de4897ac370fc253b7caf4 msgid "ACL filters are no more LDAP filters but user attribute mappings. :pr:`125`" msgstr "" -#: ../../CHANGES.rst:424 +#: ../../CHANGES.rst:425 #: 286baa01210c47ee8a9c71a8c51e72fb msgid "Bumped to `HTMX` 1.9.2. :pr:`127`" msgstr "" -#: ../../CHANGES.rst:429 +#: ../../CHANGES.rst:430 #: 2f5e152512fe493c9e5f291f3dc47ca3 msgid "``OIDC.JWT.MAPPING`` configuration entry is really optional now." msgstr "" -#: ../../CHANGES.rst:430 +#: ../../CHANGES.rst:431 #: 646ffd29b1694f58a41036fec066e023 msgid "Fixed empty model attributes registration. :pr:`125`" msgstr "" -#: ../../CHANGES.rst:431 +#: ../../CHANGES.rst:432 #: 8ef81a1e8e584cab90c6401a07c88b81 msgid "Password initialization mails were not correctly sent. :pr:`128`" msgstr "" -#: ../../CHANGES.rst:434 +#: ../../CHANGES.rst:435 #: e9729b8de309453a862cb61a500d83a6 msgid "[0.0.24] - 2023-04-07" msgstr "" -#: ../../CHANGES.rst:439 +#: ../../CHANGES.rst:440 #: e25900ea2cb9451f9def4f1230cf311b msgid "Fixed avatar update. :pr:`122`" msgstr "" -#: ../../CHANGES.rst:442 +#: ../../CHANGES.rst:443 #: 6b0ff68eb4d048f9a87c723077b6a917 msgid "[0.0.23] - 2023-04-05" msgstr "" -#: ../../CHANGES.rst:447 +#: ../../CHANGES.rst:448 #: 45d12b8c7b044a6aa129a826cb589403 msgid "Organization field. :pr:`116`" msgstr "" -#: ../../CHANGES.rst:448 +#: ../../CHANGES.rst:449 #: 7554a21c2da44a10ae7044507e7e8ef1 msgid "ETag and Last-Modified headers on user photos. :pr:`116`" msgstr "" -#: ../../CHANGES.rst:449 +#: ../../CHANGES.rst:450 #: 56e3c78c43bc4ebfb789357d53401f12 msgid "Dynamic form validation. :pr:`120`" msgstr "" -#: ../../CHANGES.rst:454 +#: ../../CHANGES.rst:455 #: eef201e52d6e487fb83b276678dcf6ad msgid "UX rework. Submenu addition. :pr:`114`" msgstr "" -#: ../../CHANGES.rst:455 +#: ../../CHANGES.rst:456 #: f6dfc94a3486418cb94ebe88c6078543 msgid "Properly handle LDAP date timezones. :pr:`117`" msgstr "" -#: ../../CHANGES.rst:460 +#: ../../CHANGES.rst:461 #: c81b6adf5d6e40e8b0aeb2898e40c692 msgid "CSRF protection on every forms. :pr:`119`" msgstr "" -#: ../../CHANGES.rst:463 +#: ../../CHANGES.rst:464 #: 41e5cc643b4e4c35b9d04ed3c6eba537 msgid "[0.0.22] - 2023-03-13" msgstr "" -#: ../../CHANGES.rst:467 +#: ../../CHANGES.rst:468 #: e510bec507814d5387a49ba6117ef0a7 msgid "The `Faker` library is not imported anymore when the `clean` command is called." msgstr "" -#: ../../CHANGES.rst:470 +#: ../../CHANGES.rst:471 #: 9af418bca29f4c169f5720ea8e14e9ac msgid "[0.0.21] - 2023-03-12" msgstr "" -#: ../../CHANGES.rst:475 +#: ../../CHANGES.rst:476 #: 6c81ccf5040343cebb06fe34cc66221e msgid "Display TOS and policy URI on the consent list page. :pr:`102`" msgstr "" -#: ../../CHANGES.rst:476 +#: ../../CHANGES.rst:477 #: 4d19d14961744e028504787840181114 msgid "Admin token deletion. :pr:`100` :pr:`101`" msgstr "" -#: ../../CHANGES.rst:477 +#: ../../CHANGES.rst:478 #: cf00a4a47f2a4463a3cc06dd126d589d msgid "Revoked consents can be restored. :pr:`103`" msgstr "" -#: ../../CHANGES.rst:478 +#: ../../CHANGES.rst:479 #: 06108983455940049911e3b8892f8735 msgid "Pre-consented clients are displayed in the user consent list, and their consents can be revoked. :issue:`69` :pr:`103`" msgstr "" -#: ../../CHANGES.rst:480 +#: ../../CHANGES.rst:481 #: 2f26c80f733b42f99df3af94c8774ad5 msgid "A ``populate`` command can be used to fill the database with random users generated with faker. :pr:`105`" msgstr "" -#: ../../CHANGES.rst:482 +#: ../../CHANGES.rst:483 #: 64049d3aa81141f3b29778b9f2f3d188 msgid "SMTP SSL support. :pr:`108`" msgstr "" -#: ../../CHANGES.rst:483 +#: ../../CHANGES.rst:484 #: 6f16cdf0ce864a20b13344f84e6dfefb msgid "Server side pagination. :issue:`114` :pr:`111`" msgstr "" -#: ../../CHANGES.rst:484 +#: ../../CHANGES.rst:485 #: 7aeacbe0b4fa48c79db52ed0cf7229fd msgid "Department number support. :issue:`129`" msgstr "" -#: ../../CHANGES.rst:485 +#: ../../CHANGES.rst:486 #: e5bb989cd1fe472cb845dfe3de958f55 msgid "Address edition support (but not in the OIDC claims yet). :pr:`112`" msgstr "" -#: ../../CHANGES.rst:486 +#: ../../CHANGES.rst:487 #: 1140843546bf41dd826bf71bea29ff23 msgid "Title edition support. :pr:`113`" msgstr "" -#: ../../CHANGES.rst:491 +#: ../../CHANGES.rst:492 #: d9bd3caa1f4f47ebb304efd457802ca1 msgid "Client deletion also deletes related :class:`~canaille.oidc.basemodels.Consent`, :class:`~canaille.oidc.basemodels.Token` and :class:`~canaille.oidc.basemodels.AuthorizationCode` objects. :issue:`126` :pr:`98`" msgstr "" -#: ../../CHANGES.rst:497 +#: ../../CHANGES.rst:498 #: ac1feaf507284b65bab96bc30457d263 msgid "Removed the `DataTables` Javascript library." msgstr "" -#: ../../CHANGES.rst:500 +#: ../../CHANGES.rst:501 #: d0d7087c87844d069df327a34667ef31 msgid "[0.0.20] - 2023-01-28" msgstr "" -#: ../../CHANGES.rst:505 +#: ../../CHANGES.rst:506 #: 6254c6b37dea417d908d7679fa0c2df5 msgid "Spanish translation. :pr:`85` :pr:`88`" msgstr "" -#: ../../CHANGES.rst:506 +#: ../../CHANGES.rst:507 #: 3a8a7c3e462e4388a29c87ea44bbca31 msgid "Dedicated connectivity test email. :pr:`89`" msgstr "" -#: ../../CHANGES.rst:507 +#: ../../CHANGES.rst:508 #: 6c73a2cff39a4b8caacfca57f27ba60b msgid "Update to jquery 3.6.3. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:508 +#: ../../CHANGES.rst:509 #: 2a31509ad04a41d4a9ceab66e4447c61 msgid "Update to fomantic-ui 2.9.1. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:509 +#: ../../CHANGES.rst:510 #: 1b8798a48e73416383644caadcb8c9d0 msgid "Update to DataTables 1.13.1. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:514 +#: ../../CHANGES.rst:515 #: 43bb3fea7c22470bb734e723ae6ec2dc msgid "Fix typos and grammar errors. :pr:`84`" msgstr "" -#: ../../CHANGES.rst:515 +#: ../../CHANGES.rst:516 #: 28f37a5212944339bb10de4c91b1555d msgid "Fix wording and punctuations. :pr:`86`" msgstr "" -#: ../../CHANGES.rst:516 +#: ../../CHANGES.rst:517 #: 3511a582ca4d4dd5b57f04e945ff2615 msgid "Fix HTML lang tag. :issue:`122` :pr:`87`" msgstr "" -#: ../../CHANGES.rst:517 +#: ../../CHANGES.rst:518 #: 227f6ecacee547eab969399f3543c1a9 msgid "Automatically trims the HTML translated strings. :pr:`91`" msgstr "" -#: ../../CHANGES.rst:518 +#: ../../CHANGES.rst:519 #: ce4262a979b34e588c4d99db8ec9fae6 msgid "Fixed dynamic registration scope management. :issue:`123` :pr:`93`" msgstr "" -#: ../../CHANGES.rst:521 +#: ../../CHANGES.rst:522 #: 3326dbb8be62452d8140320a39612093 msgid "[0.0.19] - 2023-01-14" msgstr "" -#: ../../CHANGES.rst:526 +#: ../../CHANGES.rst:527 #: c15def45121b4d30ab4c57c640f5da6a msgid "Ensures the token `expires_in` claim and the `access_token` `exp` claim have the same value. :pr:`83`" msgstr "" -#: ../../CHANGES.rst:530 +#: ../../CHANGES.rst:531 #: 2e2f24525dba4a819e97e6589907d0a5 msgid "[0.0.18] - 2022-12-28" msgstr "" -#: ../../CHANGES.rst:535 +#: ../../CHANGES.rst:536 #: 82745fec4b984965b3d0b81bed5a3941 msgid "OIDC end_session was not returning the ``state`` parameter in the ``post_logout_redirect_uri``. :pr:`82`" msgstr "" -#: ../../CHANGES.rst:539 +#: ../../CHANGES.rst:540 #: 3bd062d77c0048d3816421ed0de978e6 msgid "[0.0.17] - 2022-12-26" msgstr "" -#: ../../CHANGES.rst:544 +#: ../../CHANGES.rst:545 #: 4f0e0feb2cca4a8eb54473f5764cfcc7 msgid "Fixed group deletion button. :pr:`80`" msgstr "" -#: ../../CHANGES.rst:545 +#: ../../CHANGES.rst:546 #: b6fc018fb2dc41ecaf43a313cf5330b9 msgid "Fixed post requests in oidc clients views. :pr:`81`" msgstr "" -#: ../../CHANGES.rst:548 +#: ../../CHANGES.rst:549 #: 0e9699c0d5a74e689fdb73d2ac431d28 msgid "[0.0.16] - 2022-12-15" msgstr "" -#: ../../CHANGES.rst:553 +#: ../../CHANGES.rst:554 #: a43af598d338438ea64a3352a866610c msgid "Fixed LDAP operational attributes handling." msgstr "" -#: ../../CHANGES.rst:556 +#: ../../CHANGES.rst:557 #: 11d5f04851c847e6b3939176add7c1e2 msgid "[0.0.15] - 2022-12-15" msgstr "" -#: ../../CHANGES.rst:561 +#: ../../CHANGES.rst:562 #: ce751d2ad6e44f438e092afbdcfe72ce msgid "User can chose their display name. :pr:`77`" msgstr "" -#: ../../CHANGES.rst:562 +#: ../../CHANGES.rst:563 #: 008bcd50172d46429d218c6afbd7bc0f msgid "Bumped to Authlib 1.2. :pr:`78`" msgstr "" -#: ../../CHANGES.rst:563 +#: ../../CHANGES.rst:564 #: 3edcc407205b44918ab63920f9734a50 msgid "Implemented :rfc:`RFC7592 <7592>` OAuth 2.0 Dynamic Client Registration Management Protocol. :pr:`79`" msgstr "" -#: ../../CHANGES.rst:565 +#: ../../CHANGES.rst:566 #: e327d602ecac448f8f73a848047f6319 msgid "Add the ``nonce`` parameter to the ``claims_supported`` server metadata list." msgstr "" -#: ../../CHANGES.rst:568 +#: ../../CHANGES.rst:569 #: 74ad576932584357834751ca5edd823a msgid "[0.0.14] - 2022-11-29" msgstr "" -#: ../../CHANGES.rst:572 +#: ../../CHANGES.rst:573 #: 1205e961f8944bbb8dbc519bbfdf4993 msgid "Fixed translation catalogs packaging." msgstr "" -#: ../../CHANGES.rst:575 +#: ../../CHANGES.rst:576 #: fc089f22a3a14548b469d6c4668bb3dc msgid "[0.0.13] - 2022-11-21" msgstr "" -#: ../../CHANGES.rst:580 +#: ../../CHANGES.rst:581 #: ea1f503e84f04965b18a569cf25d2941 msgid "Fixed a bug on the contacts field in the admin client form following the LDAP schema update of 0.0.12." msgstr "" -#: ../../CHANGES.rst:582 +#: ../../CHANGES.rst:583 #: 95a73e92dd77499c9109135edf0040cf msgid "Fixed a bug happening during RP initiated logout on clients without `post_logout_redirect_uri` defined." msgstr "" -#: ../../CHANGES.rst:584 +#: ../../CHANGES.rst:585 #: 5648d45162744cf4956d8d9c7d9bbf3d msgid "Gitlab CI fix. :pr:`64`" msgstr "" -#: ../../CHANGES.rst:585 +#: ../../CHANGES.rst:586 #: 1b490834cff04cb99ff4b83f9e5dd758 msgid "Fixed `client_secret` display on the client administration page. :pr:`65`" msgstr "" -#: ../../CHANGES.rst:586 +#: ../../CHANGES.rst:587 #: 5d7cd051df4c45eb9b8e2beea6ec9659 msgid "Fixed non-square logo CSS. :pr:`67`" msgstr "" -#: ../../CHANGES.rst:587 +#: ../../CHANGES.rst:588 #: 16e68eaca761436eb1add2beea510963 msgid "Fixed schema path on installation. :pr:`68`" msgstr "" -#: ../../CHANGES.rst:588 +#: ../../CHANGES.rst:589 #: 5d87e6344c9d474c821419beb33a1d56 msgid "Fixed RFC7591 ``software_statement`` claim support. :pr:`70`" msgstr "" -#: ../../CHANGES.rst:589 +#: ../../CHANGES.rst:590 #: b65b8f602a7d4440936987b7c0143cf7 msgid "Fixed client preconsent disabling. :pr:`72`" msgstr "" -#: ../../CHANGES.rst:594 +#: ../../CHANGES.rst:595 #: 05f32b1852b34334be85dc02f3bc2689 msgid "Python 3.11 support. :pr:`61`" msgstr "" -#: ../../CHANGES.rst:595 +#: ../../CHANGES.rst:596 #: 33289ea27c844082832e8eea78498d86 msgid "``apparmor`` slapd configuration instructions in the documentation page for contributions. :pr:`66`" msgstr "" -#: ../../CHANGES.rst:596 +#: ../../CHANGES.rst:597 #: d12ad2a4e17244f8b2719ba9d0749597 msgid "``preferredLanguage`` attribute support. :pr:`75`" msgstr "" -#: ../../CHANGES.rst:601 +#: ../../CHANGES.rst:602 #: dac1b885aa8243af874405b4ccce52f2 msgid "Replaced the use of the deprecated `FLASK_ENV` environment variable by `FLASK_DEBUG`." msgstr "" -#: ../../CHANGES.rst:603 +#: ../../CHANGES.rst:604 #: b6ca7ce41fa346b8bb3fa325f1e1ac0d msgid "Dynamically generate the server metadata. Users won't have to copy and manually edit ``oauth-authorizationserver.json`` and ``openid-configuration.json``. :pr:`71`" msgstr "" -#: ../../CHANGES.rst:606 +#: ../../CHANGES.rst:607 #: ae1b6570238e43f1ac83a511fece3cf5 msgid "The `FROM_ADDR` configuration option is not mandatory anymore. :pr:`73`" msgstr "" -#: ../../CHANGES.rst:607 +#: ../../CHANGES.rst:608 #: cba8b0fae91a4dfe9f0e05ddb541f667 msgid "The `JWT.ISS` configuration option is not mandatory anymore. :pr:`74`" msgstr "" -#: ../../CHANGES.rst:610 +#: ../../CHANGES.rst:611 #: 36caf034f254408aa020410594ab0cce msgid "[0.0.12] - 2022-10-24" msgstr "" -#: ../../CHANGES.rst:615 +#: ../../CHANGES.rst:616 #: 319c8b51be714d25ab11b9a83241970d msgid "Basic WebFinger endpoint. :pr:`59`" msgstr "" -#: ../../CHANGES.rst:616 +#: ../../CHANGES.rst:617 #: 97c9f28850884353be68c0ada430c443 msgid "Bumped to FomanticUI 2.9.0." msgstr "" -#: ../../CHANGES.rst:617 +#: ../../CHANGES.rst:618 #: c3938df1d7fc47aa9e9e686b32366a0a msgid "Implemented Dynamic Client Registration. :pr:`60`" msgstr "" -#: ../../CHANGES.rst:620 +#: ../../CHANGES.rst:621 #: 5fbfc5c654b0443bac204c4743931636 msgid "[0.0.11] - 2022-08-11" msgstr "" -#: ../../CHANGES.rst:625 +#: ../../CHANGES.rst:626 #: d3758c7b32f54dc38b34ab4f54a526ba msgid "Default theme has a dark variant. :pr:`57`" msgstr "" -#: ../../CHANGES.rst:630 +#: ../../CHANGES.rst:631 #: eac5e673605c44bebeab671117d02935 msgid "Fixed missing ``canaille`` binary. :pr:`58`" msgstr "" -#: ../../CHANGES.rst:633 +#: ../../CHANGES.rst:634 #: be7d08fe65be48d09396c1c7af7f0e49 msgid "[0.0.10] - 2022-07-07" msgstr "" -#: ../../CHANGES.rst:638 +#: ../../CHANGES.rst:639 #: f2759b5afad84126b4041f583edb72eb msgid "Online demo. :pr:`55`" msgstr "" -#: ../../CHANGES.rst:639 +#: ../../CHANGES.rst:640 #: e3d980415ffb4cccb2272b1cf96719cc msgid "The consent page was displaying scopes not supported by clients. :pr:`56`" msgstr "" -#: ../../CHANGES.rst:640 +#: ../../CHANGES.rst:641 #: d936dc556a9f4503b0802988273649d3 msgid "Fixed end session when user are already disconnected." msgstr "" -#: ../../CHANGES.rst:643 +#: ../../CHANGES.rst:644 #: 1732d28f09b24b89854f21bfe7942840 msgid "[0.0.9] - 2022-06-05" msgstr "" -#: ../../CHANGES.rst:648 +#: ../../CHANGES.rst:649 #: a298893156394c80b5f843c7193b0ca8 msgid "``DISABLE_PASSWORD_RESET`` configuration option to disable password recovery. :pr:`46`" msgstr "" -#: ../../CHANGES.rst:649 +#: ../../CHANGES.rst:650 #: c831a4847472435881495bdc121788f9 msgid "``edit_self`` ACL permission to control user self edition. :pr:`47`" msgstr "" -#: ../../CHANGES.rst:650 +#: ../../CHANGES.rst:651 #: 312e6a546170436ea1fa95b58e7d91e1 msgid "`RP-initiated logout` implementation. :pr:`54`" msgstr "" -#: ../../CHANGES.rst:655 +#: ../../CHANGES.rst:656 #: 797b8359f6a449e5ba16bcc78088768f msgid "Bumped to Authlib 1. :pr:`48`" msgstr "" -#: ../../CHANGES.rst:656 +#: ../../CHANGES.rst:657 #: 4d9126ad1c3742759d3d204f1cf76dac msgid "Various documentation improvements. :pr:`50`" msgstr "" -#: ../../CHANGES.rst:657 +#: ../../CHANGES.rst:658 #: 36dc25439ee04162b5a0a808de0e823e msgid "Use poetry instead of setuptools as project management tool. :pr:`51`" msgstr "" -#: ../../CHANGES.rst:658 +#: ../../CHANGES.rst:659 #: f1fc01004b2f41349cbe787739c40b03 msgid "Additional tests for the OIDC ``nonce`` parameter. :pr:`52`" msgstr "" -#: ../../CHANGES.rst:662 +#: ../../CHANGES.rst:663 #: 0183302671b24cb0b537b104dc58a9ea msgid "``HIDE_INVALID_LOGIN`` behavior and default value." msgstr "" -#: ../../CHANGES.rst:663 +#: ../../CHANGES.rst:664 #: 781578064d2347228773e4f950d612b2 msgid "Compiled translation catalogs are not versioned anymore. :pr:`49` :pr:`53`" msgstr "" -#: ../../CHANGES.rst:666 +#: ../../CHANGES.rst:667 #: d816db34635d4549985bb9d94d9a7862 msgid "[0.0.8] - 2022-03-15" msgstr "" -#: ../../CHANGES.rst:671 +#: ../../CHANGES.rst:672 #: 5c82cce323c6462687804d2c7f006f8d msgid "Fixed dependencies." msgstr "" -#: ../../CHANGES.rst:674 +#: ../../CHANGES.rst:675 #: e6ab77996ddc43dab6022173bbd8eae0 msgid "[0.0.7] - 2022-03-15" msgstr "" -#: ../../CHANGES.rst:679 +#: ../../CHANGES.rst:680 #: db3701add4984f8c8dd764706a9639fd msgid "Fixed spaces and escaped special char in LDAP ``cn/dn`` attributes. :pr:`43`" msgstr "" -#: ../../CHANGES.rst:682 +#: ../../CHANGES.rst:683 #: 099a78c093eb4078914a63b9f15403b7 msgid "[0.0.6] - 2022-03-08" msgstr "" -#: ../../CHANGES.rst:687 +#: ../../CHANGES.rst:688 #: 4598be258efa4e99ab34d7bd5648a824 msgid "Access token are JWT. :pr:`38`" msgstr "" -#: ../../CHANGES.rst:692 +#: ../../CHANGES.rst:693 #: 19eb39b5f802426f9c1380f0d3c0dfbb msgid "Default groups on invitations. :pr:`41`" msgstr "" -#: ../../CHANGES.rst:693 +#: ../../CHANGES.rst:694 #: 81b3f2d331284cd1bd5d5a148b5d3b77 msgid "LDAP schemas are shipped within the Canaille package. :pr:`42`" msgstr "" -#: ../../CHANGES.rst:696 +#: ../../CHANGES.rst:697 #: bc34ed5400c7449886a6d25b679c7ae2 msgid "[0.0.5] - 2022-02-17" msgstr "" -#: ../../CHANGES.rst:701 +#: ../../CHANGES.rst:702 #: 45fc46e1672846778b27bc8766c1aeae msgid "LDAP model objects have new identifiers. :pr:`37`" msgstr "" -#: ../../CHANGES.rst:706 +#: ../../CHANGES.rst:707 #: 8973b4acdebf481783a30266f9502cc2 msgid "Admin menu dropdown display. :pr:`39`" msgstr "" -#: ../../CHANGES.rst:707 +#: ../../CHANGES.rst:708 #: b5deb21feb4d45e58f0b010788916ecd msgid "``GROUP_ID_ATTRIBUTE`` configuration typo. :pr:`40`" msgstr "" -#: ../../CHANGES.rst:710 +#: ../../CHANGES.rst:711 #: 3dad472d941b4b5392930e039a934df2 msgid "[0.0.4] - 2022-02-16" msgstr "" -#: ../../CHANGES.rst:715 +#: ../../CHANGES.rst:716 #: 3086c540c13844a3b626a211f86a856b msgid "Client pre-authorization. :pr:`11`" msgstr "" -#: ../../CHANGES.rst:716 +#: ../../CHANGES.rst:717 #: b621896643ca409cac8c3007137ed084 msgid "LDAP permissions check with the check command. :pr:`12`" msgstr "" -#: ../../CHANGES.rst:717 +#: ../../CHANGES.rst:718 #: ac5232266c154c829a210031f4d8a1bc msgid "Update consents when a scope required is larger than the scope of an already given consent. :pr:`13`" msgstr "" -#: ../../CHANGES.rst:719 +#: ../../CHANGES.rst:720 #: 7af42dde14864ada93162b9ea16e7cd4 msgid "Theme customization. :pr:`15`" msgstr "" -#: ../../CHANGES.rst:720 +#: ../../CHANGES.rst:721 #: b8096ecde48d430b91666fa493e4fffe msgid "Logging configuration. :pr:`16`" msgstr "" -#: ../../CHANGES.rst:721 +#: ../../CHANGES.rst:722 #: 0db8075af2664c10be1433c0426592e5 msgid "Installation command. :pr:`17`" msgstr "" -#: ../../CHANGES.rst:722 +#: ../../CHANGES.rst:723 #: 5a0d7f3aca6b446fba5f0d36512be8c1 msgid "Invitation links. :pr:`18`" msgstr "" -#: ../../CHANGES.rst:723 +#: ../../CHANGES.rst:724 #: 900b1cb1421848c78ccd8559ce8aa513 msgid "Advanced permissions. :pr:`20`" msgstr "" -#: ../../CHANGES.rst:724 +#: ../../CHANGES.rst:725 #: be2815e3ce9b44f6aeb64d24d7cd75ee msgid "An option to not use OIDC. :pr:`23`" msgstr "" -#: ../../CHANGES.rst:725 +#: ../../CHANGES.rst:726 #: 6fe21ccaf0474887a8c6c04e69154ada msgid "Disable some features when no SMTP server is configured. :pr:`24`" msgstr "" -#: ../../CHANGES.rst:726 +#: ../../CHANGES.rst:727 #: 7fcdcf093e8849e59445af91ec4cfab6 msgid "Login placeholder dynamically generated according to the configuration. :pr:`25`" msgstr "" -#: ../../CHANGES.rst:727 +#: ../../CHANGES.rst:728 #: 9bebc076e1b64cb3be67690a3e46e808 msgid "Added an option to tune object IDs. :pr:`26`" msgstr "" -#: ../../CHANGES.rst:728 +#: ../../CHANGES.rst:729 #: 983fa51b51db46409b73d0ba279c76d5 msgid "Avatar support. :pr:`27`" msgstr "" -#: ../../CHANGES.rst:729 +#: ../../CHANGES.rst:730 #: 94758b3cf72342d2948e727f6deb10a7 msgid "Dynamical and configurable JWT claims. :pr:`28`" msgstr "" -#: ../../CHANGES.rst:730 +#: ../../CHANGES.rst:731 #: 33402d7e6d47455cbfc52aeb276a12f2 msgid "UI improvements. :pr:`29`" msgstr "" -#: ../../CHANGES.rst:731 +#: ../../CHANGES.rst:732 #: 181fed73a01445ea9865aadc802e9642 msgid "Invitation links expiration. :pr:`30`" msgstr "" -#: ../../CHANGES.rst:732 +#: ../../CHANGES.rst:733 #: eeaa39f7f6c842d39c1d8d40c6e4fbf8 msgid "Invitees can choose their IDs. :pr:`31`" msgstr "" -#: ../../CHANGES.rst:733 +#: ../../CHANGES.rst:734 #: 8123032bb5d341ec82aa2b0ac8caf886 msgid "LDAP backend refactoring. :pr:`35`" msgstr "" -#: ../../CHANGES.rst:738 +#: ../../CHANGES.rst:739 #: c9a12647745f472890eff2ceb165a8b8 msgid "Fixed ghost members in a group. :pr:`14`" msgstr "" -#: ../../CHANGES.rst:739 +#: ../../CHANGES.rst:740 #: 834311277daf401e9c654cfe0751d4f2 msgid "Fixed email sender names. :pr:`19`" msgstr "" -#: ../../CHANGES.rst:740 +#: ../../CHANGES.rst:741 #: 5fa1016aa05747ca84948a30c452d5a4 msgid "Fixed filter being not escaped. :pr:`21`" msgstr "" -#: ../../CHANGES.rst:741 +#: ../../CHANGES.rst:742 #: a221c0e18ffd40e3986f7d20f6eac01a msgid "Demo script good practices. :pr:`32`" msgstr "" -#: ../../CHANGES.rst:742 +#: ../../CHANGES.rst:743 #: 7e90135fab824314847bb5f4e9ab0664 msgid "Binary path for Debian. :pr:`33`" msgstr "" -#: ../../CHANGES.rst:743 +#: ../../CHANGES.rst:744 #: 39205a39be2c4d4bbc2359ba32796266 msgid "Last name was not mandatory in the forms while this was mandatory in the LDAP server. :pr:`34`" msgstr "" -#: ../../CHANGES.rst:745 +#: ../../CHANGES.rst:746 #: bef3030603fa42ccaeffb936e450cfeb msgid "Spelling typos. :pr:`36`" msgstr "" -#: ../../CHANGES.rst:748 +#: ../../CHANGES.rst:749 #: 2dc8f2d4014f4eb9805a19921e4e336a msgid "[0.0.3] - 2021-10-13" msgstr "" -#: ../../CHANGES.rst:753 +#: ../../CHANGES.rst:754 #: f0b73ca5d1da4a728d770d11887f9754 msgid "Two-steps sign-in. :issue:`49`" msgstr "" -#: ../../CHANGES.rst:754 +#: ../../CHANGES.rst:755 #: d8353e939a4341fdb9d8b51ac4e03c75 msgid "Tokens can have several audiences. :issue:`62` :pr:`9`" msgstr "" -#: ../../CHANGES.rst:755 +#: ../../CHANGES.rst:756 #: a8bf6576f8214a6299aadf379a50f282 msgid "Configuration check command. :issue:`66` :pr:`8`" msgstr "" -#: ../../CHANGES.rst:756 +#: ../../CHANGES.rst:757 #: 05a103a6101241a9afbfeffb28b04ee2 msgid "Groups management. :issue:`12` :pr:`6`" msgstr "" -#: ../../CHANGES.rst:761 +#: ../../CHANGES.rst:762 #: f9681903b632489e99eb53fdf5301bb7 msgid "Introspection access bugfix. :issue:`63` :pr:`10`" msgstr "" -#: ../../CHANGES.rst:762 +#: ../../CHANGES.rst:763 #: 08202024eda84dd2b15e255de912389d msgid "Introspection sub claim. :issue:`64` :pr:`7`" msgstr "" -#: ../../CHANGES.rst:765 +#: ../../CHANGES.rst:766 #: c8cf3465674b4ecb94bf3a4548fc5601 msgid "[0.0.2] - 2021-01-06" msgstr "" -#: ../../CHANGES.rst:770 +#: ../../CHANGES.rst:771 #: a52712c92f57496f9cbaf32727c9a2df msgid "Login page is responsive. :issue:`1`" msgstr "" -#: ../../CHANGES.rst:771 +#: ../../CHANGES.rst:772 #: 3e40e18b9ffa4afd9036177b6d1a0393 msgid "Adapt mobile keyboards to login page fields. :issue:`2`" msgstr "" -#: ../../CHANGES.rst:772 +#: ../../CHANGES.rst:773 #: cf124fc4d201473f9a1d604b092c8c0a msgid "Password recovery interface. :issue:`3`" msgstr "" -#: ../../CHANGES.rst:773 +#: ../../CHANGES.rst:774 #: 6a024dfd785b44f09e231f0f3b6a1bdd msgid "User profile interface. :issue:`4`" msgstr "" -#: ../../CHANGES.rst:774 +#: ../../CHANGES.rst:775 #: 295718a0674c41749936c9ee63d895b2 msgid "Renamed the project *Canaille*. :issue:`5`" msgstr "" -#: ../../CHANGES.rst:775 +#: ../../CHANGES.rst:776 #: 5572ba58f8934db484ed5914858c1f61 msgid "Command to remove old tokens. :issue:`17`" msgstr "" -#: ../../CHANGES.rst:776 +#: ../../CHANGES.rst:777 #: da0ebb8c52d34d209bbbc13ec7a1902a msgid "Improved password recovery email. :issue:`14` :issue:`26`" msgstr "" -#: ../../CHANGES.rst:777 +#: ../../CHANGES.rst:778 #: 2eca9a011ae64f8788ff5b22428f2b63 msgid "Use Flask `SERVER_NAME` configuration variable instead of `URL`. :issue:`24`" msgstr "" -#: ../../CHANGES.rst:778 +#: ../../CHANGES.rst:779 #: 42eb9a40233047e4a8d632b8b60a4220 msgid "Improved consents page. :issue:`27`" msgstr "" -#: ../../CHANGES.rst:779 +#: ../../CHANGES.rst:780 #: 4511807efd4b4f6ea558d2632d914cae msgid "Admin user page. :issue:`8`" msgstr "" -#: ../../CHANGES.rst:780 +#: ../../CHANGES.rst:781 #: 9928a9d6301649a2bb80e54f26506c4e msgid "Project logo. :pr:`29`" msgstr "" -#: ../../CHANGES.rst:781 +#: ../../CHANGES.rst:782 #: 4403f90b28a249c2b38248bf0c9f77f7 msgid "User account self-deletion can be enabled in the configuration with `SELF_DELETION`. :issue:`35`" msgstr "" -#: ../../CHANGES.rst:782 +#: ../../CHANGES.rst:783 #: 21fd51a849844a03b830dc97bc05ab0c msgid "Admins can impersonate users. :issue:`39`" msgstr "" -#: ../../CHANGES.rst:783 +#: ../../CHANGES.rst:784 #: 31d73c9489164e0e92e62ac84bc8c22a msgid "Forgotten page UX improvement. :pr:`43`" msgstr "" -#: ../../CHANGES.rst:784 +#: ../../CHANGES.rst:785 #: 2b400ada80514bc68dd82d954fff040d msgid "Admins can remove clients. :pr:`45`" msgstr "" -#: ../../CHANGES.rst:785 +#: ../../CHANGES.rst:786 #: 2355c3ec7d674d50ace6ac3ad2065627 msgid "Option `HIDE_INVALID_LOGIN` that can be unactivated to let the user know if the login he attempt to sign in with exists or not. :pr:`48`" msgstr "" -#: ../../CHANGES.rst:787 +#: ../../CHANGES.rst:788 #: ad8e32ede8504576b73db0b8b7bf303a msgid "Password initialization mail. :pr:`51`" msgstr "" -#: ../../CHANGES.rst:792 +#: ../../CHANGES.rst:793 #: 0f2d8650e76545438f92a8ca420e65e9 msgid "Form translations. :issue:`19` :issue:`23`" msgstr "" -#: ../../CHANGES.rst:793 +#: ../../CHANGES.rst:794 #: 6f367157d7464c9492c0f8a528dbd11f msgid "Avoid to use Google Fonts. :issue:`21`" msgstr "" -#: ../../CHANGES.rst:798 +#: ../../CHANGES.rst:799 #: ae2646eead6a4983998e7b76396f3862 msgid "'My tokens' page. :issue:`22`" msgstr "" -#: ../../CHANGES.rst:801 +#: ../../CHANGES.rst:802 #: b2a9ee20e0214e2eb650a3c0c80c6a8f msgid "[0.0.1] - 2020-10-21" msgstr "" -#: ../../CHANGES.rst:806 +#: ../../CHANGES.rst:807 #: 974217beadfa4205ad58a4fff852a8d4 msgid "Initial release." msgstr "" @@ -2059,7 +2064,7 @@ msgstr "" #: ../../canaille/translations/README.rst:1 #: 3f134d116261469d8e6e9a05b5c47b47 -msgid "Translations are done with `Weblate `_." +msgid "Translations are done with `Weblate `__." msgstr "" #: ../../canaille/translations/README.rst:3 @@ -2067,36 +2072,36 @@ msgstr "" msgid "The following commands are there as documentation, only the message extraction is needed for contributors. All the other steps are automatically done with Weblate." msgstr "" -#: readme.rst:7 +#: readme.rst:6 #: ../../canaille/translations/README.rst:8 -#: readme.rst:7 +#: readme.rst:6 #: 24b270040aba498184edc6fd3b60c94e #: 2056f7130ccd40b7b3b34c0c572a6578 #: 41a918a2d4a74a5b9b2817c613ca08f4 msgid "Message extraction" msgstr "" -#: readme.rst:9 +#: readme.rst:8 #: ../../canaille/translations/README.rst:10 -#: readme.rst:9 +#: readme.rst:8 #: 3d0d46dbb4b849429d1b20c8d4655b71 #: ca03937bab89437aaca273df6d905a44 #: 5743021622e04712918dcadbabc6c7f7 msgid "After you have edited translatable strings, you should extract the messages with:" msgstr "" -#: readme.rst:16 +#: readme.rst:15 #: ../../canaille/translations/README.rst:17 -#: readme.rst:16 +#: readme.rst:15 #: 33a52dea69f84cdd8031217438609b01 #: 1bdb41af37fb4b29970caa32ceb9f68e #: fcdbb11edc8c403dba19ddcc30f0c74a msgid "Language addition" msgstr "" -#: readme.rst:18 +#: readme.rst:17 #: ../../canaille/translations/README.rst:19 -#: readme.rst:18 +#: readme.rst:17 #: 85155247ccbe4cdda3c379b515fd2413 #: 04039c23ea56483b9ccf96d20f26f2bd #: ba0855443a6f465d9274426f59f251de @@ -2130,20 +2135,20 @@ msgstr "" #: readme.rst:1 #: readme.rst:1 -#: ffda18be929d41558176c90fbfe0475a +#: 3f134d116261469d8e6e9a05b5c47b47 #: 82307c31bbd04c86b438e8a4e005cbfd -msgid "Documentation translation Translations are done with `Weblate `_." +msgid "Translations are done with `Weblate `__." msgstr "" -#: readme.rst:4 -#: readme.rst:4 +#: readme.rst:3 +#: readme.rst:3 #: e68bab4e55074d099971067e8585e7bc #: 36d72bb59c6442f0ac0078ec35cff7db msgid "The following commands are there as documentation, only the message extraction and the language addition is needed for contributors." msgstr "" -#: readme.rst:25 -#: readme.rst:25 +#: readme.rst:24 +#: readme.rst:24 #: 2249c8bd3ebb4123b1b85e55d501a414 #: 592956cc63d849ad8f23d530a03daa2a msgid "Build the documentation in another language" @@ -3772,7 +3777,7 @@ msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:11 #: ../references/configuration.rst:14 -#: ../references/configuration.rst:93 +#: ../references/configuration.rst:94 #: ../tutorial/databases.rst:23 #: ../tutorial/databases.rst:37 #: 1b8aaa7b767b49eb9a81d6663fb6c1e8 @@ -3809,36 +3814,36 @@ msgid "Environment file" msgstr "" #: ../references/configuration.rst:42 -#: 39a7bf3ae7b64aad8763d1fc961ce4cc -msgid "Any environment variable can also be written in a ``.env``, and will be read if present." +#: 54056c93ac3b40e882bf20789d72fded +msgid "Any environment variable can also be written in an environment file, which path should be passed in the ``ENV_FILE`` environment variable. For instance, set ``ENV_FILE=.env`` to load a ``.env`` file." msgstr "" -#: ../references/configuration.rst:44 +#: ../references/configuration.rst:45 #: ba796d7f6bdb4ef5a32865f844ead63e msgid ".env" msgstr "" -#: ../references/configuration.rst:62 +#: ../references/configuration.rst:63 #: 3c2136aab27c4650acf0d25ced3636e2 msgid "Configuration methods priority" msgstr "" -#: ../references/configuration.rst:64 +#: ../references/configuration.rst:65 #: 6e85c7ec407f4fc68adff17adb6652b2 msgid "If a same configuration option is defined by different ways, here is how Canaille will choose which one to use:" msgstr "" -#: ../references/configuration.rst:66 +#: ../references/configuration.rst:67 #: 8857be48d8f54be7aa8d350d5346887a msgid "environment vars have priority over the environment file and the configuration file;" msgstr "" -#: ../references/configuration.rst:67 +#: ../references/configuration.rst:68 #: d946c715e1c34f55acfe97acc96cab68 msgid "environment file will have priority over the configuration file." msgstr "" -#: ../references/configuration.rst:70 +#: ../references/configuration.rst:71 #: 369d25ff21b042fbabf703be7b66e138 msgid "Parameters" msgstr "" @@ -4485,12 +4490,12 @@ msgstr "" msgid "The attribute to identify an object in the User DN." msgstr "" -#: ../references/configuration.rst:89 +#: ../references/configuration.rst:90 #: d0a193b9740940ceac9bbb0b609c7b38 msgid "Example file" msgstr "" -#: ../references/configuration.rst:91 +#: ../references/configuration.rst:92 #: 380ab48a596a497789c004a25fd645c8 msgid "Here is a configuration file example:" msgstr "" diff --git a/doc/references/configuration.rst b/doc/references/configuration.rst index ee25e515..dfa51be5 100644 --- a/doc/references/configuration.rst +++ b/doc/references/configuration.rst @@ -39,7 +39,8 @@ The way environment variables are parsed can be read from the `pydantic-settings Environment file ~~~~~~~~~~~~~~~~ -Any environment variable can also be written in a ``.env``, and will be read if present. +Any environment variable can also be written in an environment file, which path should be passed in the ``ENV_FILE`` environment variable. +For instance, set ``ENV_FILE=.env`` to load a ``.env`` file. .. code-block:: bash :caption: .env diff --git a/tests/app/test_configuration.py b/tests/app/test_configuration.py index 2719df23..523b9d17 100644 --- a/tests/app/test_configuration.py +++ b/tests/app/test_configuration.py @@ -93,7 +93,7 @@ def test_dotenv_file(tmp_path, configuration): def test_custom_dotenv_file(tmp_path, configuration): """Canaille should read configuration from custom .env files if they are - passed with ENV_FILE.""" + passed with env_file.""" dotenv = tmp_path / "custom.env" with open(dotenv, "w") as fd: fd.write("FOOBAR=other-custom-value") @@ -103,7 +103,7 @@ def test_custom_dotenv_file(tmp_path, configuration): def test_disable_dotenv_file(tmp_path, configuration): - """Canaille should ignore .env files if ENV_FILE is None.""" + """Canaille should ignore .env files if env_file is None.""" oldcwd = os.getcwd() os.chdir(tmp_path) dotenv = tmp_path / ".env"