Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.
tizot edited this page Jan 20, 2016 · 3 revisions

Chocapix - API

Ce dépôt contient le code de la partie serveur de Chocapix, application web de gestion de bars d'étages.

Le projet est réalisé en Python (version 2.7 actuellement) avec le framework web Django (version 1.8.3).
Il propose une API REST, grâce au package Django REST Framework.

Installation

Bien que ce ne soit pas indispensable (voire compliqué pour les développeurs sous Windows...), il est recommandé d'utiliser un environnement virtuel pour développer. Pour cela, taper les commandes suivantes dans le dossier local du dépôt :

virtualenv env
source env/bin/activate

Installer ensuite les dépendances python à l'aide de pip :

pip install -r requirements.txt
pip install -r requirements_test.txt

Pour quitter l'environnement virtuel, taper deactivate.

Au sein de l'environnement virtuel, l'exécution du script manage.py se fait simplement avec la commande

./manage.py [command]

À la première installation, supprimer (éventuellement) le fichier db.sqlite3, exécuter les migrations :

./manage.py migrate

et charger les fixtures (données de travail) avec :

./manage.py loaddata fixtures_users-aliments.json

Problèmes connus

L'installation de mysql-python pose problème sur certaines machines.
Il est recommandé d'installer plutôt mysqlclient (cf. documentation de Django). Il faut avoir préalablement installé les paquets python-dev et libmysqlclient-dev (via les dépôts pour Linux ou via homebrew pour Mac OS X).

Structure du projet

Comme tout projet Django, chocapix-server est organisé en applications :

  • bars_django est le dossier principal du projet. Il contient les paramètres globaux et les définitions de routes (urls.py) ;
  • bars_core contient les modèles centraux du projet, comme User, Bar ou Account, ainsi que les définitions de rôles pour les permissions ;
  • bars_items regroupe la partie "Aliments" du site (modélisation des aliments vendus par un bar, des articles achetés, etc.) ;
  • bars_transactions gère les différents types de transactions (achat, approvisionnement, inventaire, etc.) ;
  • bars_menus permet aux utilisateurs de créer et utiliser des menus préréglés ;
  • bars_stats fournit des outils pour générer des statistiques de consommation dans les bars ;
  • bars_news est un système de news intégré dans les bars, pour favoriser la communication liée aux bars d'étages ;
  • bars_bugtracker est un outil simple de remontée de bugs.