2024-07-16 16:39:54 +00:00
|
|
|
## Dépendances du système
|
|
|
|
|
|
|
|
Certaines dépendances sont nécessaires niveau système :
|
|
|
|
|
|
|
|
- poetry
|
|
|
|
- libssl
|
|
|
|
- libjpeg
|
|
|
|
- zlib1g-dev
|
|
|
|
- python
|
|
|
|
- gettext
|
|
|
|
|
|
|
|
### Installer WSL
|
|
|
|
|
|
|
|
Si vous utilisez Windows, je suis navré
|
|
|
|
de vous annoncer que, certaines dépendances étant uniquement disponibles sur des sytèmes UNIX,
|
|
|
|
il n'est pas possible de développer le site sur ce système d'exploitation.
|
|
|
|
|
|
|
|
Heureusement, il existe une alternative qui ne requiert pas de désinstaller votre
|
|
|
|
OS ni de mettre un dual boot sur votre ordinateur : `WSL`.
|
|
|
|
|
|
|
|
- **Prérequis:** vous devez être sur Windows 10 version 2004 ou ultérieure (build 19041 & versions ultérieures) ou Windows 11.
|
|
|
|
- **Plus d'info:** [docs.microsoft.com](https://docs.microsoft.com/fr-fr/windows/wsl/install)
|
|
|
|
|
|
|
|
```shell
|
|
|
|
# dans un shell Windows
|
|
|
|
wsl --install
|
|
|
|
|
|
|
|
# afficher la liste des distribution disponible avec WSL
|
|
|
|
wsl -l -o
|
|
|
|
|
|
|
|
# installer WSL avec une distro (ubuntu conseillé)
|
|
|
|
wsl --install -d <nom_distro>
|
|
|
|
```
|
|
|
|
|
|
|
|
Une fois `WSL` installé, mettez à jour votre distribution et
|
|
|
|
installez les dépendances (voir la partie installation sous Ubuntu).
|
|
|
|
|
|
|
|
Pour accéder au contenu d'un répertoire externe à `WSL`,
|
|
|
|
il suffit d'utiliser la commande suivante :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# oui c'est beau, simple et efficace
|
|
|
|
cd /mnt/<la_lettre_du_disque>/vos/fichiers/comme/dhab
|
|
|
|
```
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
2024-09-17 21:42:05 +00:00
|
|
|
À ce stade, si vous avez réussi votre installation de `WSL` ou bien qu'il
|
2024-07-16 16:39:54 +00:00
|
|
|
était déjà installé, vous pouvez effectuer la mise en place du projet en suivant
|
|
|
|
les instructions pour votre distribution.
|
|
|
|
|
|
|
|
### Installer les dépendances
|
|
|
|
|
|
|
|
=== "Linux"
|
|
|
|
|
|
|
|
=== "Debian/Ubuntu"
|
|
|
|
|
2024-09-30 08:46:41 +00:00
|
|
|
Avant toute chose, assurez-vous que votre système est à jour :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
sudo apt update
|
|
|
|
sudo apt upgrade
|
|
|
|
```
|
|
|
|
|
|
|
|
Puis, si ce n'est pas déjà fait, installez Python :
|
2024-07-16 16:39:54 +00:00
|
|
|
```bash
|
|
|
|
sudo apt install python3
|
|
|
|
# on sait jamais
|
|
|
|
sudo apt install python-is-python3
|
|
|
|
```
|
|
|
|
Si vous utilisez Ubuntu 22.04 ou Ubuntu 24.04,
|
|
|
|
votre version de Python devrait être compatible
|
|
|
|
par défaut avec celle du projet.
|
|
|
|
Si ce n'est pas le cas, nous vous conseillons
|
|
|
|
d'utiliser [pyenv](https://github.com/pyenv/pyenv)
|
|
|
|
|
|
|
|
Puis installez les autres dépendances :
|
|
|
|
|
|
|
|
```bash
|
2024-09-17 21:42:05 +00:00
|
|
|
sudo apt install build-essential libssl-dev libjpeg-dev zlib1g-dev python-dev npm \
|
2024-09-17 10:10:06 +00:00
|
|
|
libffi-dev python-dev-is-python3 pkg-config \
|
2024-07-16 16:39:54 +00:00
|
|
|
gettext git pipx
|
|
|
|
|
|
|
|
pipx install poetry
|
|
|
|
```
|
|
|
|
|
|
|
|
=== "Arch Linux"
|
|
|
|
|
|
|
|
```bash
|
|
|
|
sudo pacman -Syu # on s'assure que les dépôts et le système sont à jour
|
|
|
|
|
|
|
|
sudo pacman -S python
|
|
|
|
|
2024-09-17 21:42:05 +00:00
|
|
|
sudo pacman -S gcc git gettext pkgconf python-poetry npm
|
2024-07-16 16:39:54 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
=== "macOS"
|
|
|
|
|
|
|
|
Pour installer les dépendances, il est fortement recommandé d'installer le gestionnaire de paquets `homebrew <https://brew.sh/index_fr>`_.
|
|
|
|
Il est également nécessaire d'avoir installé xcode
|
|
|
|
|
2024-09-17 10:10:06 +00:00
|
|
|
```bash
|
2024-09-17 21:42:05 +00:00
|
|
|
brew install git python pipx npm
|
2024-07-16 16:39:54 +00:00
|
|
|
pipx install poetry
|
|
|
|
|
|
|
|
# Pour bien configurer gettext
|
|
|
|
brew link gettext # (suivez bien les instructions supplémentaires affichées)
|
|
|
|
```
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
|
|
|
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`
|
|
|
|
|
|
|
|
|
|
|
|
## Finaliser l'installation
|
|
|
|
|
2024-10-02 22:02:32 +00:00
|
|
|
Clonez le projet (depuis votre console WSL, si vous utilisez WSL)
|
|
|
|
et installez les dépendances :
|
2024-09-30 08:46:41 +00:00
|
|
|
|
2024-07-16 16:39:54 +00:00
|
|
|
```bash
|
2024-09-22 23:37:25 +00:00
|
|
|
git clone https://github.com/ae-utbm/sith.git
|
2024-09-23 08:25:27 +00:00
|
|
|
cd sith
|
2024-07-16 16:39:54 +00:00
|
|
|
|
|
|
|
# Création de l'environnement et installation des dépendances
|
2024-09-30 08:46:41 +00:00
|
|
|
poetry install # Dépendances backend
|
|
|
|
npm install # Dépendances frontend
|
|
|
|
poetry run ./manage.py install_xapian
|
|
|
|
```
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
|
|
|
La commande `install_xapian` est longue et affiche beaucoup
|
|
|
|
de texte à l'écran.
|
|
|
|
C'est normal, il ne faut pas avoir peur.
|
|
|
|
|
|
|
|
Maintenant que les dépendances sont installées, nous
|
|
|
|
allons créer la base de données, la remplir avec des données de test,
|
|
|
|
et compiler les traductions.
|
|
|
|
Cependant, avant de faire cela, il est nécessaire de modifier
|
|
|
|
la configuration pour signifier que nous sommes en mode développement.
|
|
|
|
Pour cela, nous allons créer un fichier `sith/settings_custom.py`
|
|
|
|
et l'utiliser pour surcharger les settings de base.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
echo "DEBUG=True" > sith/settings_custom.py
|
|
|
|
echo 'SITH_URL = "localhost:8000"' >> sith/settings_custom.py
|
|
|
|
```
|
2024-07-16 16:39:54 +00:00
|
|
|
|
2024-09-30 08:46:41 +00:00
|
|
|
Enfin, nous pouvons lancer les commandes suivantes :
|
2024-09-17 21:42:05 +00:00
|
|
|
|
2024-09-30 08:46:41 +00:00
|
|
|
```bash
|
2024-07-16 16:39:54 +00:00
|
|
|
# Activation de l'environnement virtuel
|
|
|
|
poetry shell
|
|
|
|
|
|
|
|
# Prépare la base de données
|
|
|
|
python ./manage.py setup
|
|
|
|
|
|
|
|
# Installe les traductions
|
|
|
|
python ./manage.py compilemessages
|
|
|
|
```
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
|
|
|
Pour éviter d'avoir à utiliser la commande `poetry shell`
|
|
|
|
systématiquement, il est possible de consulter [direnv](../howto/direnv.md).
|
|
|
|
|
|
|
|
## Démarrer le serveur de développement
|
|
|
|
|
|
|
|
Il faut toujours avoir préalablement activé
|
|
|
|
l'environnement virtuel comme fait plus haut
|
|
|
|
et se placer à la racine du projet.
|
|
|
|
Il suffit ensuite d'utiliser cette commande :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python manage.py runserver
|
|
|
|
```
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
|
|
|
Le serveur est alors accessible à l'adresse
|
2024-07-23 21:25:17 +00:00
|
|
|
[http://localhost:8000](http://localhost:8000)
|
|
|
|
ou bien [http://127.0.0.1:8000/](http://127.0.0.1:8000/).
|
|
|
|
|
|
|
|
!!!tip
|
|
|
|
|
|
|
|
Vous trouverez également, à l'adresse
|
|
|
|
[http://localhost:8000/api/docs](http://localhost:8000/api/docs),
|
|
|
|
une interface swagger, avec toutes les routes de l'API.
|
2024-07-16 16:39:54 +00:00
|
|
|
|
|
|
|
## Générer la documentation
|
|
|
|
|
|
|
|
La documentation est automatiquement mise en ligne à chaque envoi de code sur GitHub.
|
|
|
|
Pour l'utiliser en local ou globalement pour la modifier,
|
|
|
|
il existe une commande du site qui génère
|
|
|
|
la documentation et lance un serveur la rendant
|
|
|
|
accessible à l'adresse [http://localhost:8080](http://localhost:8000).
|
|
|
|
Cette commande génère la documentation à
|
|
|
|
chacune de ses modifications,
|
|
|
|
inutile de relancer le serveur à chaque fois.
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
|
|
|
Les dépendances pour la documentation sont optionnelles.
|
|
|
|
Avant de commencer à travailler sur la doc, il faut donc les installer
|
|
|
|
avec la commande `poetry install --with docs`
|
|
|
|
|
|
|
|
```bash
|
|
|
|
mkdocs serve
|
|
|
|
```
|
|
|
|
|
|
|
|
## Lancer les tests
|
|
|
|
|
|
|
|
Pour lancer les tests, il suffit d'utiliser
|
|
|
|
la commande suivante :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Lancer tous les tests
|
|
|
|
pytest
|
|
|
|
|
|
|
|
# Lancer les tests de l'application core
|
|
|
|
pytest core
|
|
|
|
|
|
|
|
# Lancer les tests de la classe UserRegistrationTest de core
|
2024-09-30 08:46:41 +00:00
|
|
|
pytest core/tests/tests_core.py::TestUserRegistration
|
2024-07-16 16:39:54 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
!!!note
|
|
|
|
|
|
|
|
Certains tests sont un peu longs à tourner.
|
|
|
|
Pour ne faire tourner que les tests les plus rapides,
|
|
|
|
vous pouvez exécutez pytest ainsi :
|
|
|
|
|
|
|
|
```bash
|
|
|
|
pytest -m "not slow"
|
|
|
|
|
|
|
|
# vous pouvez toujours faire comme au-dessus
|
|
|
|
pytest core -m "not slow"
|
|
|
|
```
|
|
|
|
|
|
|
|
A l'inverse, vous pouvez ne faire tourner que les tests
|
|
|
|
lents en remplaçant `-m "not slow"` par `-m slow`.
|
|
|
|
|
|
|
|
De cette manière, votre processus de développement
|
|
|
|
devrait être un peu plus fluide.
|
|
|
|
Cependant, n'oubliez pas de bien faire tourner
|
|
|
|
tous les tests avant de push un commit.
|
|
|
|
|
|
|
|
|