diff --git a/.env.example b/.env.example index 0f716d8a..5c4c0d97 100644 --- a/.env.example +++ b/.env.example @@ -1,86 +1,11 @@ HTTPS=off -DEBUG=true +SITH_DEBUG=true # This is not the real key used in prod SECRET_KEY=(4sjxvhz@m5$0a$j0_pqicnc$s!vbve)z+&++m%g%bjhlz4+g2 -# comma-separated values -CSRF_TRUSTED_ORIGINS= - +# comment the sqlite line and uncomment the postgres one to switch the dbms DATABASE_URL=sqlite:///db.sqlite3 -# uncomment the next line if you want to use a postgres database #DATABASE_URL=postgres://user:password@127.0.0.1:5432/sith + CACHE_URL=redis://127.0.0.1:6379/0 - -MEDIA_ROOT=data -STATIC_ROOT=static - -DEFAULT_FROM_EMAIL=bibou@git.an -SITH_COM_EMAIL=bibou_com@git.an - -HONEYPOT_VALUE=content -HONEYPOT_FIELD_NAME=body2 -HONEYPOT_FIELD_NAME_FORUM=message2 - -EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend -EMAIL_HOST=localhost -EMAIL_PORT=25 - -SITH_URL=127.0.0.1:8000 -SITH_NAME="AE UTBM" - -SITH_MAIN_CLUB_ID=1 - -SITH_GROUP_ROOT_ID=1 -SITH_GROUP_PUBLIC_ID=2 -SITH_GROUP_SUBSCRIBERS_ID=3 -SITH_GROUP_OLD_SUBSCRIBERS_ID=4 -SITH_GROUP_ACCOUNTING_ADMIN_ID=5 -SITH_GROUP_COM_ADMIN_ID=6 -SITH_GROUP_COUNTER_ADMIN_ID=7 -SITH_GROUP_SAS_ADMIN_ID=8 -SITH_GROUP_FORUM_ADMIN_ID=9 -SITH_GROUP_PEDAGOGY_ADMIN_ID=10 - -SITH_GROUP_BANNED_ALCOHOL_ID=11 -SITH_GROUP_BANNED_COUNTER_ID=12 -SITH_GROUP_BANNED_SUBSCRIPTION_ID=13 - -SITH_CLUB_REFOUND_ID=89 -SITH_COUNTER_REFOUND_ID=38 -SITH_PRODUCT_REFOUND_ID=5 - -# Counter - -SITH_COUNTER_ACCOUNT_DUMP_ID=39 - -# Defines which product type is the refilling type, and thus increases the account amount -SITH_COUNTER_PRODUCTTYPE_REFILLING=3 - -SITH_ECOCUP_CONS=1152 -SITH_ECOCUP_DECO=1151 - -# Defines which product is the one year subscription and which one is the six month subscription -SITH_PRODUCT_SUBSCRIPTION_ONE_SEMESTER=1 -SITH_PRODUCT_SUBSCRIPTION_TWO_SEMESTERS=2 -SITH_PRODUCTTYPE_SUBSCRIPTION=2 - -# Defines which clubs let its members the ability to see users subscription history -SITH_CAN_CREATE_SUBSCRIPTION_HISTORY=1 -SITH_CAN_READ_SUBSCRIPTION_HISTORY=1 - -# SAS variables -SITH_SAS_ROOT_DIR_ID=4 - -# ET variables -SITH_EBOUTIC_CB_ENABLED=true -SITH_EBOUTIC_ET_URL="https://preprod-tpeweb.e-transactions.fr/cgi/MYchoix_pagepaiement.cgi" -SITH_EBOUTIC_PBX_SITE=1999888 -SITH_EBOUTIC_PBX_RANG=32 -SITH_EBOUTIC_PBX_IDENTIFIANT=2 -SITH_EBOUTIC_HMAC_KEY=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF -SITH_EBOUTIC_PUB_KEY_PATH=sith/et_keys/pubkey.pem - -SITH_MAILING_FETCH_KEY=IloveMails -SENTRY_DSN= -SENTRY_ENV=production \ No newline at end of file diff --git a/docs/howto/prod.md b/docs/howto/prod.md index 472f8c3e..df7c7644 100644 --- a/docs/howto/prod.md +++ b/docs/howto/prod.md @@ -8,7 +8,7 @@ Cette variable est composée d'un lien complet vers votre projet sentry. ## Récupérer les statiques Nous utilisons du SCSS dans le projet. -En environnement de développement (`DEBUG=true`), +En environnement de développement (`SITH_DEBUG=true`), le SCSS est compilé à chaque fois que le fichier est demandé. Pour la production, le projet considère que chacun des fichiers est déjà compilé. diff --git a/docs/tutorial/install-advanced.md b/docs/tutorial/install-advanced.md index 357d013c..7b4fe493 100644 --- a/docs/tutorial/install-advanced.md +++ b/docs/tutorial/install-advanced.md @@ -212,7 +212,7 @@ Puis lancez ou relancez nginx : sudo systemctl restart nginx ``` -Dans votre `.env`, remplacez `DEBUG=true` par `DEBUG=false`. +Dans votre `.env`, remplacez `SITH_DEBUG=true` par `SITH_DEBUG=false`. Enfin, démarrez le serveur Django : @@ -224,7 +224,7 @@ uv run ./manage.py runserver 8001 Et c'est bon, votre reverse-proxy est prêt à tourner devant votre serveur. Nginx écoutera sur le port 8000. Toutes les requêtes vers des fichiers statiques et les medias publiques -seront seront servies directement par nginx. +seront servies directement par nginx. Toutes les autres requêtes seront transmises au serveur django. @@ -238,3 +238,64 @@ un cron pour la mettre à jour au moins une fois par jour. ```bash python manage.py update_spam_database ``` + +## Personnaliser l'environnement + +Le site utilise beaucoup de variables configurables via l'environnement. +Cependant, pour des raisons de maintenabilité et de simplicité +pour les nouveaux développeurs, nous n'avons mis dans le fichier +`.env.example` que celles qui peuvent nécessiter d'être fréquemment modifiées +(par exemple, l'url de connexion à la db, ou l'activation du mode debug). + +Cependant, il en existe beaucoup d'autres, que vous pouvez trouver +dans le `settings.py` en recherchant `env.` +(avec `grep` ou avec un ++ctrl+f++ dans votre éditeur). + +Si le besoin de les modifier se présente, c'est chose possible. +Il suffit de rajouter la paire clef-valeur correspondante dans le `.env`. + +!!!tip + + Si vous utilisez nushell, + vous pouvez automatiser le processus avec + avec le script suivant, qui va parser le `settings.py` + pour récupérer toutes les variables d'environnement qui ne sont pas + définies dans le .env puis va les rajouter : + + ```nu + # si le fichier .env n'existe pas, on le crée + if not (".env" | path exists) { + cp .env.example .env + } + + # puis on récupère les variables d'environnement déjà existantes + let existing = open .env + + # on récupère toutes les variables d'environnement utilisées + # dans le settings.py qui ne sont pas encore définies dans le .env, + # on les convertit dans un format .env, + # puis on les ajoute à la fin du .env + let regex = '(env\.)(?\w+)\(\s*"(?\w+)"(\s*(, default=)(?.+))?\s*\)'; + let content = open sith/settings.py; + let vars = $content + | parse --regex $regex + | filter { |i| $i.env_name not-in $existing } + | each { |i| + let parsed_value = match [$i.method, $i.value] { + ["str", "None"] => "" + ["bool", $val] => ($val | str downcase) + ["list", $val] => ($val | str trim -c '[' | str trim -c ']') + ["path", $val] => ($val | str replace 'BASE_DIR / "' $'"(pwd)/') + [_, $val] => $val + } + $"($i.env_name)=($parsed_value)" + } + + if ($vars | is-not-empty) { + # on ajoute les nouvelles valeurs, + # en mettant une ligne vide de séparation avec les anciennes + ["", ...$vars] | save --append .env + } + + print $"($vars | length) values added to .env" + ``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index f307cb8a..9a7c3114 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -157,6 +157,7 @@ markdown_extensions: - md_in_html - pymdownx.details - pymdownx.inlinehilite + - pymdownx.keys - pymdownx.superfences: custom_fences: - name: mermaid diff --git a/sith/settings.py b/sith/settings.py index 09d155ee..9cd3ca89 100644 --- a/sith/settings.py +++ b/sith/settings.py @@ -59,7 +59,7 @@ BASE_DIR = Path(__file__).parent.parent.resolve() SECRET_KEY = env.str("SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = env.bool("DEBUG", default=False) +DEBUG = env.bool("SITH_DEBUG", default=False) TESTING = "pytest" in sys.modules INTERNAL_IPS = ["127.0.0.1"] @@ -711,7 +711,7 @@ SITH_MAILING_FETCH_KEY = env.str("SITH_MAILING_FETCH_KEY", default="ILoveMails") SITH_GIFT_LIST = [("AE Tee-shirt", _("AE tee-shirt"))] -SENTRY_DSN = env.str("SENRY_DSN", default=None) +SENTRY_DSN = env.str("SENTRY_DSN", default=None) SENTRY_ENV = env.str("SENTRY_ENV", default="production") TOXIC_DOMAINS_PROVIDERS = [