Environnement de développement
Il a deux façon d'accéder à l'environnement de développement de GestionÉvènementiel. Celui utilisant la Vagrant, plus lourde, mais très proche des conditions de développement, et l'utilisation d'un virtualenv qui a l'avantage d'être plus rapide d'utilisation.
La VM Vagrant
Installation
La façon recommandée de simuler GestionÉvènementiel sur votre machine est d'utiliser Vagrant. Vagrant permet de créer une machine virtuelle minimale sur laquelle tournera GestionÉvènementiel; ainsi on s'assure que tout le monde à la même configuration de développement (même sous Windows !), et l'installation se fait en une commande.
Pour utiliser Vagrant, il faut le télécharger et l'installer.
Vagrant permet d'utiliser différents types de machines virtuelles; par défaut il utilise Virtualbox qu'il vous faudra également télécharger et installer.
L'installation est terminée.
Utilisation
Premier lancement
Machine virtuelle
Le lancement se fait avec la commande vagrant up dans le répertoire du dépot local.
À son premier lancement, Vagrant va télécharger une image Debian8 ainsi que des mises à jour (il vaut mieux avoir une connexion Internet pas trop mauvaise)
Paquets Python
Pour mettre à jour les paquets Python, il faut d'abord se connecter à la machine virtuelle en utilisant vagrant ssh, puis utiliser la commande suivante : pip install --upgrade -r requirements-devel.txt
Pour mettre à jour les modèles après une migration, il faut ensuite faire : python manage.py migrate
Utilisations suivantes
Voici quelques commandes importantes pour gérer la machine virtuelle :
-
vagrant uppermet de lancer la machine virtuelle. Si une machine virtuelle existe déjà, elle sera réutilisée ; sinon, Vagrant va créer et configurer une nouvelle machine virtuelle pour vous. -
vagrant suspendpermet de sauver l'état de la machine virtuelle sur le disque pour la relancer plus tard (y compris après un reboot) avecvagrant up -
vagrant haltpermet d'éteindre la machine virtuelle (par comparaison avecvagrant suspend, cela prend moins de place sur le disque car il n'y a pas besoin de sauver la RAM, mais la recréation avecvagrant upsera plus lente) -
Enfin,
vagrant destroypermet de détruire complètement la machine virtuelle : lors du prochain appel devagrant up, elle sera réinstallée de zéro. Attention, contrairement aux deux méthodes précédentes,vagrant destroydétruira irrémédiablement le contenu de votre base de données locale, si elle vous est d'un quelconque intérêt, réfléchissez à deux fois ! -
vagrant sshvous connecte en SSH à la machine virtuelle.
Une fois connecté en SSH, vous pouvez utiliser les commandes Django habituelles.
Lancement du serveur
Par défaut Django n'écoute que sur l'adresse locale de la machine virtuelle - or vous voudrez accéder à GestionÉvènementiel depuis votre machine physique.
Pour lancer le serveur, il faut donc lancer la commande python manage.py runserver 0.0.0.0:8000.
Le dossier avec le code est partagé entre la machine virtuelle et votre machine physique : vous pouvez donc utiliser votre éditeur favori pour coder depuis votre machine physique, et les changements seront répercutés automatiquement dans la machine virtuelle.
You know sometimes…
Des fois on essaye des trucs, on rate une migration, on s'assoie sur son clavier et PAF on casse la base de donnée.
Même si le très radical vagrant destroy && vagrant up est une solution, elle est un peu longue. Il est possible de repartir
avec une base de donnée fraîche en tapant les commandes suivantes
mysql -uroot -p$DBPASSWD -e "DROP DATABASE $DBNAME; CREATE DATABASE $DBNAME"
python manage.py migrate
Le virtualenv
Utilisation de virtualenv
premier lancement
Pour créer le virtualenv il suffit de lancer la commande virtualenv venv depuis la racine de votre dossier git, qui créera un répertoire venv à cet endroit. Pour installer les paquets python nécessaires : pip install -r requirements-devel.txt.
Utilisation
Pour rentrer dans l'environnement virtuel simplement lancer : source venv/bin/activate. S'il y a de nouveaux paquets à installer il suffit de les installer à l'aide de pip une fois dans le virtualenv ou simplement de lancer à nouveau pip install -r requirements-devel.txt.
Pour sortir du virtualenv simplement lancer deactivate.
Environnement
Avec cette méthode les condition ne sont pas les mêmes qu'en production. Le SQL est géré ç l'aide de SQLite et la base de donnée est stockée dans un fichier à la racine du répertoire git. Il est possible de lancer django comme d'habitude. Cela est assuré par le fichier /evenementiel/settings/devlocal.py.
Commandes utiles pour interagir avec GestionÉvènementiel
Django fournit un certain nombre de fonctions pour interagir avec GestionÉvènementiel en ligne de commande. Pour les lancer, taper python manage.py <command_name>. Une partie d'entre elles sont décrites ci-dessous.
Les indispensables
- La commande
runserver… lance le serveur ! On peut spécifier une interface et un port en ajoutant à la suite0.0.0.0:8000par exemple. - La commande
migratepermet de faire suivre la base de donnée lorsque les modèles changent. Les "migrations" appliquées parmigratesont stockées dansapp_name/migrations/. Lorsque vous effectuez des changements dans les modèles, utilisezmakemigrations(cf plus bas) pour créer ces fichiers de migration automatiquement. On peut rétablir une version précise de la BDD, pour une application, avecmigrate bda 0001par exemple. - La commande
makemigrationscrée automatiquement les fichiers de migrations dont il est question plus haut. Ils sont stockés dansapp_name/migrations/. Ils peuvent être édités à la main si les migrations automatiques ne suffisent pas à vos besoins. Typiquement s'il faut ajouter un élément à la base de donnée pour la rendre cohérente. Cf https://docs.djangoproject.com/en/dev/ref/migration-operations/ pour plus de détails - La commande
createsuperuserpermet de créer un utilisateur avec tous les droits. Il peut créer des utilisateurs, des objets, etc via l'[interface-admin](gestiocof admin).
Autres commandes utiles
- La commande
shellouvre un shell python qui connaît la config du site. Ça permet de faire toutesles opérations qu'on pourrait faire depuis une vue par exemple. Utile pour faire des essais avant de coder ou manipuler la base de données. - Un autre commande permettant de manipuler la base de donneés :
dbshellqui lance un shell mysql sur la BDD de GestionÉvènementiel - Les commandes
loaddataetdumpdatapermettent respectivement de charger et d'exporter tout ou partie de la base de données. À noter que l'option--indent=4est utile pour la lisibilité. Attention il peut se passer des choses pas nettes si on charge une bdd dans une bdd non vide.
Doc officielle
Pour plus de détails sur ces commandes et d'autres encore, ne pas hésiter à taper python manage.py help <command_name>et à visiter https://docs.djangoproject.com/en/dev/ref/django-admin/