simplify .env.example

La plupart des variables du `.env.example` n'ont pas besoin d'être modifiées régulièrement et ont déjà des valeurs par défaut dans le `settings.py` qui sont adaptées à un environnement local.
En gardant uniquement les variables qui seront régulièrement modifiées, on rend le fichier plus compréhensible et plus simple à maintenir.
This commit is contained in:
imperosol 2025-02-16 16:54:32 +01:00
parent 59e90ec754
commit 9945993f0b
5 changed files with 70 additions and 83 deletions

View File

@ -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

View File

@ -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é.

View File

@ -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\.)(?<method>\w+)\(\s*"(?<env_name>\w+)"(\s*(, default=)(?<value>.+))?\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"
```

View File

@ -157,6 +157,7 @@ markdown_extensions:
- md_in_html
- pymdownx.details
- pymdownx.inlinehilite
- pymdownx.keys
- pymdownx.superfences:
custom_fences:
- name: mermaid

View File

@ -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 = [