Application Django pour le suivi des consos en K-Nûm
Find a file
Aurélien Delobelle f73b25e65f Amélioration gestion des relevés
Nouveau relevé:

Il faut donner le détail du nombre de chaque
  pièces/billets pris et laissé en caisse pour calculer les valeurs
`balance_new` et `amount_taken` d'un relevé (`CheckoutStatement`).
L'erreur est directement calculée par rapport à la balance actuelle de
la caisse et ces 2 valeurs. Une erreur positive correspond à un surplus
d'argent et inversement.

Modification d'un relevé:

Il est possible de modifier les infos d'un ancien relevé. L'erreur est
ensuite recalculée à partir de ces infos.
Important: Dans le cas où `balance_new` est modifiée et qu'il s'agit du
relevé le plus récent sur cette caisse. Alors la balance de la caisse
est mise à jour en prenant en compte cette correction (et en conservant
les modifications s'il y a eu des mouvements sur la caisse)
2016-08-23 00:15:17 +02:00
apache Update Py3 compat 2016-07-15 00:20:08 +02:00
bda Merge branch 'master' into Kerl/deprec 2016-07-30 00:27:59 +02:00
cof Fix 404 widget media 2016-08-21 16:30:22 +02:00
gestioncof Merge branch 'master' into Kerl/deprec 2016-07-30 00:27:59 +02:00
kfet Amélioration gestion des relevés 2016-08-23 00:15:17 +02:00
provisioning Install redis-server et fix requirements 2016-08-18 14:23:27 +02:00
static Vues gestion caisses et amélioration Account 2016-08-04 05:21:04 +02:00
.gitignore Ajoute un cron pour les mails de rappel 2016-07-23 14:16:19 +02:00
manage.py Grod commit dégueux avec une tonne de trucs. Berk. 2014-08-19 12:54:22 +02:00
README.md Mentionne les fixtures dans le README 2016-07-15 13:39:23 +02:00
requirements-devel.txt Ajoute un environnement de développement 2016-05-26 20:52:03 +02:00
requirements.txt Utilisation d'un fork du package 'channels' 2016-08-20 15:30:33 +02:00
sync_clipper.py Update Py3 compat 2016-07-15 00:20:08 +02:00
sync_clipper.sh Commit gore : premier push vers git.eleves 2016-05-21 23:57:36 +02:00
Vagrantfile Ajoute un environnement de développement 2016-05-26 20:52:03 +02:00

GestioCOF

Installation

Vagrant

La façon recommandée d'installer GestioCOF sur votre machine est d'utiliser Vagrant. Vagrant permet de créer une machine virtuelle minimale sur laquelle tournera GestioCOF; 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.

Si vous êtes sous Linux, votre distribution propose probablement des paquets Vagrant dans le gestionnaire de paquets (la version sera moins récente, ce qui peut parfois poser des problèmes de compatibilité).

Vagrant permet d'utiliser différents types de machines virtuelles; par défaut il utilise Virtualbox qu'il vous faudra également installer.

Une fois ces dépendances installées voici quelques commandes importantes pour gérer la machine virtuelle :

  • vagrant up permet 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 (la première fois que vous lancez cette commande, Vagrant va télécharger une image d'Ubuntu; il vaut mieux avoir une connexion Internet pas trop mauvaise).

  • vagrant suspend permet de sauver l'état de la machine virtuelle sur le disque pour la relancer plus tard (y compris après un reboot) avec vagrant up

  • vagrant halt permet d'éteindre la machine virtuelle (par comparaison avec vagrant suspend, cela prend moins de place sur le disque car il n'y a pas besoin de sauver la RAM, mais la recréation avec vagrant up sera plus lente)

  • Enfin, vagrant destroy permet de détruire complètement la machine virtuelle : lors du prochain appel de vagrant up, elle sera réinstallée de zéro. Attention, contrairement aux deux méthodes précédentes, vagrant destroy dé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 ssh vous connecte en SSH à la machine virtuelle, dans le dossier où est installé GestioCOF. Vous pouvez utiliser les commandes Django habituelles (manage.py runserver etc.); toutefois pour lancer le serveur il faut faire

    python manage.py runserver 0.0.0.0:8000
    

    car par défaut Django n'écoute que sur l'adresse locale de la machine virtuelle - or vous voudrez accéder à GestioCOF depuis votre machine physique.

Le dossier avec le code de GestioCOF est partagé entre la machine virtuelle et votre machine physique : vous pouvez donc utiliser votre éditeur favori pour coder depuis l'extérieur de la machine virtuelle, et les changements seront répercutés dans la machine virtuelle.

Installation manuelle

Si vous optez pour une installation manuelle plutôt que d'utiliser Vagrant, il est fortement conseillé d'utiliser un environnement virtuel pour Python.

Il vous faudra installer mercurial, pip, les librairies de développement de python, ainsi qu'un client et un serveur MySQL ; sous Debian et dérivées (Ubuntu, ...) :

sudo apt-get install mercurial python-pip python-dev libmysqlclient-dev

Si vous décidez d'utiliser un environnement virtuel Python (virtualenv; fortement conseillé), déplacez-vous dans le dossier où est installé GestioCOF (le dossier où se trouve ce README), et créez-le maintenant :

virtualenv env

Pour l'activer, il faut faire

. env/bin/activate

dans le même dossier.

Vous pouvez maintenant installer les dépendances Python depuis les fichiers requirements.txt et requirements-devel.txt :

pip install -r requirements.txt -r requirements-devel.txt

Enfin, copiez le fichier cof/settings_dev.py dans cof/settings.py.

Installation avec MySQL

Il faut maintenant installer MySQL. Si vous n'avez pas déjà MySQL installé sur votre serveur, il faut l'installer ; sous Debian et dérivées (Ubuntu, ...) :

sudo apt-get install mysql-server

Il vous demandera un mot de passe pour le compte d'administration MySQL, notez-le quelque part (ou n'en mettez pas, le serveur n'est accessible que localement par défaut). Si vous utilisez une autre distribution, consultez la documentation de votre distribution pour savoir comment changer ce mot de passe et démarrer le serveur MySQL (c'est automatique sous Ubuntu).

Vous devez alors créer un utilisateur local et une base cof_gestion, avec le mot de passe de votre choix (remplacez mot_de_passe) :

mysql -uroot -e "CREATE DATABASE cof_gestion; GRANT ALL PRIVILEGES ON cof_gestion.* TO 'cof_gestion'@'localhost' IDENTIFIER BY 'mot_de_passe'"

Éditez maintenant le fichier cof/settings.py pour y intégrer ces changements ; la définition de DATABASES doit ressembler à (à nouveau, remplacez mot_de_passe de façon appropriée) :

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'cof_gestion',
    'USER': 'cof_gestion',
    'PASSWORD': 'mot_de_passe',
}
}

Installation avec SQLite

GestioCOF est installé avec MySQL sur la VM COF, et afin d'avoir un environnement de développement aussi proche que possible de ce qui tourne en vrai pour éviter les mauvaises surprises, il est conseillé d'utiliser MySQL sur votre machine de développement également. Toutefois, GestioCOF devrait fonctionner avec d'autres moteurs SQL, et certains préfèrent utiliser SQLite pour sa légèreté et facilité d'installation.

Si vous décidez d'utiliser SQLite, il faut l'installer ; sous Debian et dérivées :

sudo apt-get install sqlite3

puis éditer le fichier cof/settings.py pour que la définition de DATABASES ressemble à :

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

Fin d'installation

Il ne vous reste plus qu'à initialiser les modèles de Django avec la commande suivante :

python manage.py migrate

Une base de donnée pré-remplie est disponible en lançant la commande :

python manage.py loaddata users bda gestion

Vous êtes prêts à développer ! Lancer GestioCOF en faisant

python manage.py runserver

Mise à jour

Pour mettre à jour les paquets Python, utiliser la commande suivante :

pip install --upgrade -r requirements.txt -r requirements-devel.txt

Pour mettre à jour les modèles après une migration, il faut ensuite faire :

python manage.py migrate

Documentation utilisateur

Une brève documentation utilisateur pour se faliliariser plus vite avec l'outil est accessible sur le wiki.