Jarvis/README.md

192 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2023-04-25 17:06:14 +02:00
# Ultron
[![Build Status](https://drone.grimbox.be/api/badges/Sulley/Ultron/status.svg)](https://drone.grimbox.be/Sulley/Ultron)
## Déploiement en local (Docker)
- installer Docker (+ drivers PGSQL)
- créer un fichier `docker-compose.yml` :
```
version: "3"
services:
db:
image: "postgres:14"
restart: always
container_name: "jarvis_container"
environment:
POSTGRES_DB: "jarvis_db"
POSTGRES_USER: "Iamironman"
POSTGRES_PASSWORD: "J4rV1s"
ports:
- "5432:5432"
volumes:
- ./data:/var/lib/postgresql/data
```
- tapez la commande `docker-compose up -d`
2023-04-29 15:31:14 +02:00
- `pip install -r requirements.txt`
2024-01-22 10:49:07 +01:00
- `python manage.py createsuperuser`
2023-04-29 15:31:14 +02:00
- `python manage.py runserver`
2024-01-22 10:49:07 +01:00
Aller dans l'administration de django -> Group. Là, il faut créer deux groupes : "trainer" et "gymnast".
Ensuite, attribuer au super user créé le groupe "trainer".
2023-04-25 17:06:14 +02:00
### Installation de weasyprint
En plus du `pip install weasyprint` et `pip install django-weasyprint`, il faut installer weasyprint (via homebrew, …)
puis, **pour les mac M1** exécuter les commandes :
2023-05-01 17:07:50 +02:00
```bash
2023-04-25 17:06:14 +02:00
sudo ln -s /opt/homebrew/opt/glib/lib/libgobject-2.0.0.dylib /usr/local/lib/gobject-2.0
sudo ln -s /opt/homebrew/opt/pango/lib/libpango-1.0.dylib /usr/local/lib/pango-1.0
sudo ln -s /opt/homebrew/opt/harfbuzz/lib/libharfbuzz.dylib /usr/local/lib/harfbuzz
sudo ln -s /opt/homebrew/opt/fontconfig/lib/libfontconfig.1.dylib /usr/local/lib/fontconfig-1
sudo ln -s /opt/homebrew/opt/pango/lib/libpangoft2-1.0.dylib /usr/local/lib/pangoft2-1.0
2024-01-21 13:53:57 +01:00
```
2024-02-06 12:42:31 +01:00
### Tests
2024-01-21 13:53:57 +01:00
### Pylint
Dans le répertoire racine, tapez la commande suivante :
```bash
pylint ./jarvis/followup
```
### Djlint
(à venir)
### Coverage
2024-03-06 15:13:09 +01:00
```bash
pip install coverage
```
#### Configuration
```bash
touch .coveragerc
vim .coveragerc
```
Ajoutez les lignes suivantes :
```bash
omit = *__init__.py,*/migrations/*,*test*,*settings*,*urls*,*wsgi*,manage.py,*apps*
```
2024-03-06 15:54:00 +01:00
#### Utilisation
```bash
coverage run -m pytest
```
2023-04-25 17:06:14 +02:00
## Déploiement sur Heroku
- Créer l'application sur Heroku
- Créer les variables d'environnement :
- ALLOWED_HOSTS : avengers-jarvis.herokuapp.com
- DATABASE_NAME : ultron
- DISABLE_COLLECTSTATIC : 1
- SECRET_KEY : django-insecure-g_eoy6z%xshku4o5#k%o%i_%nb%_pz80config_#+t%f
- DATABASE_URL : créé automatiquement lorsqu'on ajoute l' `element` PostgreSQL
Exemple :
```
heroku config:set DISABLE_COLLECTSTATIC="1"
heroku config:set ALLOWED_HOSTS="avengers-jarvis.herokuapp.com"
heroku config:set SECRET_KEY="django-insecure-g_eoy6z%xshku4o5#k%o%i_%nb%_pz80config_#+t%f"
heroku config:set DATABASE_NAME="ultron"
2023-04-29 15:31:14 +02:00
```
2023-04-25 17:06:14 +02:00
- Se connecter à Héroku (via l'invite de commande) : `heroku login`
2023-04-29 15:31:14 +02:00
- Ajouter Heroku à Git : `git remote add heroku https://git.heroku.com/flying-ultron.git`
- Push de l'application : `git push heroku master`
2023-04-25 17:06:14 +02:00
- Création du super user : `heroku run python manage.py createsuperuser`
## Récupération des données :
Pour transferer des données d'un site à un autre, le plus simple est d'utiliser la commande
`./manage.py dumpdata > db.json`.
Pour ne pas récupérer les user, les authorisation et les content-type, utilisez la commande :
2023-05-01 17:07:50 +02:00
```bash
2023-04-25 17:06:14 +02:00
python manage.py dumpdata --natural-foreign --exclude contenttypes --exclude auth.permission --exclude admin.logentry --exclude sessions.session --indent 4 > save.json
```
Pour charger les données, tapez ensuite :
2023-05-01 17:07:50 +02:00
```bash
2023-04-25 17:06:14 +02:00
python manage.py loaddata save.json
```
2023-06-13 14:35:29 +02:00
## Commandes
Pour refaire la learning line des skills :
```python
heroku run python manage.py rebuild_closure_table_tree_for_skill
```
Pour refaire la learning line des séries :
```python
heroku run python manage.py rebuild_closure_table_tree_for_routine
```
Pour remettre tous les rank des skills à 0 :
```python
heroku run python manage.py remove_rank_from_skill
```
Pour retirer les espaces dans le code numérique des skills :
```python
heroku run python manage.py remove_space_from_skill_notation
```
2023-04-25 17:06:14 +02:00
## Applications
### Right
Il y a 3 types pe de droits :
- Administrateur
- Entraineur (groupe `Trainer`)
- Gymnaste (groupe `Gymnast`)
##### Administrateur
Il peut tout faire.
##### Entraîneur
Peut tout faire sauf :
- Gérer les skill
- Gérer les Pays
- Gérer les lieux
##### Gymnaste
Un gymnaste peut tout faire pour *lui-même* :
- Ajouter un chrono
- Ajouter un score
- Ajouter un height/weight
-
### Skill
### Learned Skill
Il y a quatre niveau de connaissance d'un skill :
- non connu
- connu avec aide (tapis, élastiques, fosse, …)
- connu sans aucune aide
- connu et enchainé