Skip to content

Commit 3d509d9

Browse files
committed
use .env for project configuration
1 parent 81773dc commit 3d509d9

File tree

11 files changed

+365
-154
lines changed

11 files changed

+365
-154
lines changed

.env.example

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
HTTPS=off
2+
DEBUG=true
3+
4+
# This is not the real key used in prod
5+
SECRET_KEY=(4sjxvhz@m5$0a$j0_pqicnc$s!vbve)z+&++m%g%bjhlz4+g2
6+
7+
DATABASE_URL=sqlite:///db.sqlite3
8+
# uncomment the next line if you want to use a postgres database
9+
#DATABASE_URL=postgres://user:[email protected]:5432/sith
10+
CACHE_URL=redis://127.0.0.1:6379/0
11+
12+
MEDIA_ROOT=data
13+
STATIC_ROOT=static
14+
15+
DEFAULT_FROM_EMAIL=[email protected]
16+
SITH_COM_EMAIL=[email protected]
17+
18+
HONEYPOT_VALUE=content
19+
HONEYPOT_FIELD_NAME=body2
20+
HONEYPOT_FIELD_NAME_FORUM=message2
21+
22+
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
23+
EMAIL_HOST=localhost
24+
EMAIL_PORT=25
25+
26+
SITH_URL=127.0.0.1:8000
27+
SITH_NAME="AE UTBM"
28+
29+
SITH_MAIN_CLUB_ID=1
30+
31+
SITH_GROUP_ROOT_ID=1
32+
SITH_GROUP_PUBLIC_ID=2
33+
SITH_GROUP_SUBSCRIBERS_ID=3
34+
SITH_GROUP_OLD_SUBSCRIBERS_ID=4
35+
SITH_GROUP_ACCOUNTING_ADMIN_ID=5
36+
SITH_GROUP_COM_ADMIN_ID=6
37+
SITH_GROUP_COUNTER_ADMIN_ID=7
38+
SITH_GROUP_BANNED_ALCOHOL_ID=8
39+
SITH_GROUP_BANNED_COUNTER_ID=9
40+
SITH_GROUP_BANNED_SUBSCRIPTION_ID=10
41+
SITH_GROUP_SAS_ADMIN_ID=11
42+
SITH_GROUP_FORUM_ADMIN_ID=12
43+
SITH_GROUP_PEDAGOGY_ADMIN_ID=13
44+
45+
SITH_CLUB_REFOUND_ID=89
46+
SITH_COUNTER_REFOUND_ID=38
47+
SITH_PRODUCT_REFOUND_ID=5
48+
49+
# Counter
50+
51+
SITH_COUNTER_ACCOUNT_DUMP_ID=39
52+
53+
# Defines which product type is the refilling type, and thus increases the account amount
54+
SITH_COUNTER_PRODUCTTYPE_REFILLING=3
55+
56+
SITH_ECOCUP_CONS=1152
57+
SITH_ECOCUP_DECO=1151
58+
59+
# Defines which product is the one year subscription and which one is the six month subscription
60+
SITH_PRODUCT_SUBSCRIPTION_ONE_SEMESTER=1
61+
SITH_PRODUCT_SUBSCRIPTION_TWO_SEMESTERS=2
62+
SITH_PRODUCTTYPE_SUBSCRIPTION=2
63+
64+
# Defines which club lets its members the ability to see users subscription history
65+
# 14 => "Intégration" club
66+
SITH_CAN_CREATE_SUBSCRIPTION_HISTORY=1
67+
SITH_CAN_READ_SUBSCRIPTION_HISTORY=1
68+
69+
# SAS variables
70+
SITH_SAS_ROOT_DIR_ID=4
71+
72+
# ET variables
73+
SITH_EBOUTIC_CB_ENABLED=true
74+
SITH_EBOUTIC_ET_URL="https://preprod-tpeweb.e-transactions.fr/cgi/MYchoix_pagepaiement.cgi"
75+
SITH_EBOUTIC_PBX_SITE=1999888
76+
SITH_EBOUTIC_PBX_RANG=32
77+
SITH_EBOUTIC_PBX_IDENTIFIANT=2
78+
SITH_EBOUTIC_HMAC_KEY=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
79+
SITH_EBOUTIC_PUB_KEY_PATH=sith/et_keys/pubkey.pem
80+
81+
SITH_MAILING_FETCH_KEY=IloveMails
82+
SENTRY_DSN=
83+
SENTRY_ENV=production

.github/workflows/ci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
branches: [master, taiste]
88
workflow_dispatch:
99

10+
env:
11+
SECRET_KEY: notTheRealOne
12+
DATABASE_URL: sqlite:///db.sqlite3
13+
1014
jobs:
1115
pre-commit:
1216
name: Launch pre-commits checks (ruff)

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ node_modules/
2121

2222
# compiled documentation
2323
site/
24+
.env

docs/howto/prod.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
Pour connecter l'application à une instance de sentry (ex: https://sentry.io),
44
il est nécessaire de configurer la variable `SENTRY_DSN`
5-
dans le fichier `settings_custom.py`.
5+
dans le fichier `.env`.
66
Cette variable est composée d'un lien complet vers votre projet sentry.
77

88
## Récupérer les statiques
99

1010
Nous utilisons du SCSS dans le projet.
11-
En environnement de développement (`DEBUG=True`),
11+
En environnement de développement (`DEBUG=true`),
1212
le SCSS est compilé à chaque fois que le fichier est demandé.
1313
Pour la production, le projet considère
1414
que chacun des fichiers est déjà compilé.

docs/tutorial/install-advanced.md

Lines changed: 12 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,19 @@ Commencez par installer les dépendances système :
4747
=== "Debian/Ubuntu"
4848

4949
```bash
50-
sudo apt install postgresql redis libq-dev nginx
50+
sudo apt install postgresql libq-dev nginx
5151
```
5252

5353
=== "Arch Linux"
5454

5555
```bash
56-
sudo pacman -S postgresql redis nginx
56+
sudo pacman -S postgresql nginx
5757
```
5858

5959
=== "macOS"
6060

6161
```bash
62-
brew install postgresql redis lipbq nginx
62+
brew install postgresql lipbq nginx
6363
export PATH="/usr/local/opt/libpq/bin:$PATH"
6464
source ~/.zshrc
6565
```
@@ -77,34 +77,6 @@ poetry install --with prod
7777
C'est parce que ces dépendances compilent certains modules
7878
à l'installation.
7979

80-
## Configurer Redis
81-
82-
Redis est utilisé comme cache.
83-
Assurez-vous qu'il tourne :
84-
85-
```bash
86-
sudo systemctl redis status
87-
```
88-
89-
Et s'il ne tourne pas, démarrez-le :
90-
91-
```bash
92-
sudo systemctl start redis
93-
sudo systemctl enable redis # si vous voulez que redis démarre automatiquement au boot
94-
```
95-
96-
Puis ajoutez le code suivant à la fin de votre fichier
97-
`settings_custom.py` :
98-
99-
```python
100-
CACHES = {
101-
"default": {
102-
"BACKEND": "django.core.cache.backends.redis.RedisCache",
103-
"LOCATION": "redis://127.0.0.1:6379",
104-
}
105-
}
106-
```
107-
10880
## Configurer PostgreSQL
10981

11082
PostgreSQL est utilisé comme base de données.
@@ -139,26 +111,19 @@ en étant connecté en tant que postgres :
139111
psql -d sith -c "GRANT ALL PRIVILEGES ON SCHEMA public to sith";
140112
```
141113

142-
Puis ajoutez le code suivant à la fin de votre
143-
`settings_custom.py` :
144-
145-
```python
146-
DATABASES = {
147-
"default": {
148-
"ENGINE": "django.db.backends.postgresql",
149-
"NAME": "sith",
150-
"USER": "sith",
151-
"PASSWORD": "password",
152-
"HOST": "localhost",
153-
"PORT": "", # laissez ce champ vide pour que le choix du port soit automatique
154-
}
155-
}
114+
Puis modifiez votre `.env`.
115+
Dedans, décommentez l'url de la base de données
116+
de postgres et commentez l'url de sqlite :
117+
118+
```dotenv
119+
#DATABASE_URL=sqlite:///db.sqlite3
120+
DATABASE_URL=postgres://sith:password@localhost:5432/sith
156121
```
157122

158123
Enfin, créez vos données :
159124

160125
```bash
161-
poetry run ./manage.py populate
126+
poetry run ./manage.py setup
162127
```
163128

164129
!!! note
@@ -247,7 +212,7 @@ Puis lancez ou relancez nginx :
247212
sudo systemctl restart nginx
248213
```
249214

250-
Dans votre `settings_custom.py`, remplacez `DEBUG=True` par `DEBUG=False`.
215+
Dans votre `.env`, remplacez `DEBUG=true` par `DEBUG=false`.
251216

252217
Enfin, démarrez le serveur Django :
253218

docs/tutorial/install.md

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Certaines dépendances sont nécessaires niveau système :
88
- zlib1g-dev
99
- python
1010
- gettext
11+
- redis
1112

1213
### Installer WSL
1314

@@ -79,7 +80,7 @@ cd /mnt/<la_lettre_du_disque>/vos/fichiers/comme/dhab
7980
```bash
8081
sudo apt install build-essential libssl-dev libjpeg-dev zlib1g-dev python-dev npm \
8182
libffi-dev python-dev-is-python3 pkg-config \
82-
gettext git pipx
83+
gettext git pipx redis
8384

8485
pipx install poetry
8586
```
@@ -91,7 +92,7 @@ cd /mnt/<la_lettre_du_disque>/vos/fichiers/comme/dhab
9192

9293
sudo pacman -S python
9394
94-
sudo pacman -S gcc git gettext pkgconf python-poetry npm
95+
sudo pacman -S gcc git gettext pkgconf python-poetry redis npm
9596
```
9697

9798
=== "macOS"
@@ -100,7 +101,7 @@ cd /mnt/<la_lettre_du_disque>/vos/fichiers/comme/dhab
100101
Il est également nécessaire d'avoir installé xcode
101102

102103
```bash
103-
brew install git python pipx npm
104+
brew install git python pipx redis npm
104105
pipx install poetry
105106

106107
# Pour bien configurer gettext
@@ -112,6 +113,15 @@ cd /mnt/<la_lettre_du_disque>/vos/fichiers/comme/dhab
112113
Si vous rencontrez des erreurs lors de votre configuration, n'hésitez pas à vérifier l'état de votre installation homebrew avec :code:`brew doctor`
113114

114115

116+
Parmi les dépendances installées se trouve redis (que nous utilisons comme cache).
117+
Redis est un service qui doit être activé pour être utilisé.
118+
Pour cela, effectuez les commandes :
119+
120+
```bash
121+
sudo systemctl start redis
122+
sudo systemctl enable redis # si vous voulez que redis démarre automatiquement au boot
123+
```
124+
115125
## Finaliser l'installation
116126

117127
Clonez le projet (depuis votre console WSL, si vous utilisez WSL)
@@ -133,20 +143,24 @@ poetry run ./manage.py install_xapian
133143
de texte à l'écran.
134144
C'est normal, il ne faut pas avoir peur.
135145

136-
Maintenant que les dépendances sont installées, nous
137-
allons créer la base de données, la remplir avec des données de test,
138-
et compiler les traductions.
139-
Cependant, avant de faire cela, il est nécessaire de modifier
140-
la configuration pour signifier que nous sommes en mode développement.
141-
Pour cela, nous allons créer un fichier `sith/settings_custom.py`
142-
et l'utiliser pour surcharger les settings de base.
146+
Une fois les dépendances installées, il faut encore
147+
mettre en place quelques éléments de configuration,
148+
qui peuvent varier d'un environnement à l'autre.
149+
Ces variables sont stockées dans un fichier `.env`.
150+
Pour le créer, vous pouvez copier le fichier `.env.example` :
143151

144152
```bash
145-
echo "DEBUG=True" > sith/settings_custom.py
146-
echo 'SITH_URL = "localhost:8000"' >> sith/settings_custom.py
153+
cp .env.example .env
147154
```
148155

149-
Enfin, nous pouvons lancer les commandes suivantes :
156+
Les variables par défaut contenues dans le fichier `.env`
157+
devraient convenir pour le développement, sans modification.
158+
159+
Maintenant que les dépendances sont installées
160+
et la configuration remplie, nous allons pouvoir générer
161+
des données utiles pendant le développement.
162+
163+
Pour cela, lancez les commandes suivantes :
150164

151165
```bash
152166
# Activation de l'environnement virtuel
@@ -187,6 +201,30 @@ python manage.py runserver
187201
[http://localhost:8000/api/docs](http://localhost:8000/api/docs),
188202
une interface swagger, avec toutes les routes de l'API.
189203

204+
!!! question "Pourquoi l'installation est aussi complexe ?"
205+
206+
Cette question nous a été posée de nombreuses fois par des personnes
207+
essayant d'installer le projet.
208+
Il y a en effet un certain nombre d'étapes à suivre,
209+
de paquets à installer et de commandes à exécuter.
210+
211+
Le processus d'installation peut donc sembler complexe.
212+
213+
En réalité, il est difficile de faire plus simple.
214+
En effet, un site web a besoin de beaucoup de composants
215+
pour être développé : il lui faut au minimum
216+
une base de données, un cache, un bundler Javascript
217+
et un interpréteur pour le code du serveur.
218+
Pour nos besoin particuliers, nous utilisons également
219+
un moteur de recherche full-text.
220+
221+
Nous avons tenté au maximum de limiter le nombre de dépendances
222+
et de sélecionner les plus simples à installer.
223+
Cependant, il est impossible de retirer l'intégralité
224+
de la complexité du processus.
225+
Si vous rencontrez des difficulté lors de l'installation,
226+
n'hésitez pas à demander de l'aide.
227+
190228
## Générer la documentation
191229

192230
La documentation est automatiquement mise en ligne à chaque envoi de code sur GitHub.

0 commit comments

Comments
 (0)