# 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` - `pip install -r requirements.txt` - `python manage.py createsuperuser` - `python manage.py runserver` 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". ### 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 : ```bash 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 ``` ### Tests ### Pylint Dans le répertoire racine, tapez la commande suivante : ```bash pylint ./jarvis/followup ``` ### Djlint (à venir) ### Coverage ```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* ``` #### Utilisation ```bash coverage run -m pytest ``` ## 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" ``` - Se connecter à Héroku (via l'invite de commande) : `heroku login` - Ajouter Heroku à Git : `git remote add heroku https://git.heroku.com/flying-ultron.git` - Push de l'application : `git push heroku master` - 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 : ```bash 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 : ```bash python manage.py loaddata save.json ``` ## 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 ``` ## 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é