Skip to content

unistra/django-hypnos

Repository files navigation

django-hypnos

Code Health

image

image

Génération automatique d'un webservice à partir d'une base de données existante.

  • Installation en environnement de développement :
    • créer un environnement virtuel avec virtualenvwrapper : :

      mkvirtualenv -a /path/to/project django-hypnos
    • installer les pré-requis : :

      pip install -r requirements/dev.txt
    • éditer le fichier /path/to/virtualenvs/django-hypnos/bin/postactivate et ajouter les lignes suivantes en les adaptant :
      • DJANGO_SETTINGS_MODULE définit que l'on est en mode developpement
      • DEFAULT_DB correspond à la base de données de l'application django
      • WEBSERVICE_DB correspond à la base de donnée à laquelle on veut brancher le webservice :

        export DJANGO_SETTINGS_MODULE=hypnos.settings.dev
        
        export DEFAULT_DB_NAME=your_default_db_name
        export DEFAULT_DB_USER=your_default_db_user
        export DEFAULT_DB_PASSWORD=your_default_db_password
        export DEFAULT_DB_PORT=your_defaultdb_port
        export DEFAULT_DB_HOST=your_default_db_host
        export DEFAULT_DB_ENGINE=your_default_db_name (ex: postgresql_psycopg2, sqlite3, oracle)
        
        export WEBSERVICE_DB_NAME=your_webservice_db_name
        export WEBSERVICE_DB_USER=your_webservice_db_user
        export WEBSERVICE_DB_PASSWORD=your_webservice_db_password
        export WEBSERVICE_DB_PORT=your_webservice_db_port
        export WEBSERVICE_DB_HOST=your_webservice_db_host
        export WEBSERVICE_DB_ENGINE=your_webservice_db_engine (ex: postgresql_psycopg2, sqlite3, oracle)
    • éditer le fichier /path/to/virtualenv/postdeactivate et ajouter les lignes suivantes : :

      unset DJANGO_SETTINGS_MODULE
      
      unset DEFAULT_DB_NAME
      unset DEFAULT_DB_USER
      unset DEFAULT_DB_PASSWORD
      unset DEFAULT_DB_PORT
      unset DEFAULT_DB_HOST
      unset DEFAULT_DB_ENGINE
      
      unset WEBSERVICE_DB_NAME
      unset WEBSERVICE_DB_USER
      unset WEBSERVICE_DB_PASSWORD
      unset WEBSERVICE_DB_PORT
      unset WEBSERVICE_DB_HOST
      unset WEBSERVICE_DB_ENGINE
    • Réactiver le virtualenv : :

      deactivate && workon django-hypnos
    • Génération du webservice : :

      python manage.py loadwebservice
    • Creation de la base de donnée django (django < 1.9): :

      python manage.py syncdb && python manage.py migrate
    • Creation de la base de donnée django (django > 1.9): :

      python manage.py migrate
    • Démarrer l'application : :

      python manage.py runserver
    • Personnalisation du Webservice et gestionnaire de version :

      • Spécifier le nouveau dépot : :

        git remote set-url origin git@github.com:<username>/<newProject>.git

      * Supprimer du fichier .gitignore les lignes correspondantes à votre Webservice : :

      # generated webservice
      hypnos/apps/webservice/models.py
      hypnos/apps/webservice/serializers.py

      hypnos/apps/webservice/urls.py hypnos/apps/webservice/views.py hypnos/apps/webservice/filters.py

  • Installation en environnement de test :
    • Modifier le fichier fabfile.py pour définir l'environnement de test
    • Executer les commander suivante : :

      pip install pydiploy
      fab tag:master test pre_install deploy loadwebservice post_install --set <parameters>
  • Installation en environnement de production :
    • Modifier le fichier fabfile.py pour définir l'environnement de production
    • Executer les commander suivante : :

      pip install pydiploy
      fab tag:master prod pre_install deploy loadwebservice post_install --set <parameters>
  • Utilisation :
    • Créer un utilisateur via l'interface d'admin de django, menu "Users"
    • Lui donner les permissions de type "view" sur les objets souhaités
    • Lui générer un token de connection via le menu "Tokens"
    • Lui donner les droits sur les champs souhaités via le menu "User fields permissions"
    • Cet utilisateur pourra alors questionner le webservice via :
  • Compatible par défaut avec :
    • sqlite
    • postgresql
    • Pour oracle, il faut en plus:
      • Installer le client oracle
      • pip install -r requirements/oracle.txt
      • Décommenter la partie concernant oracle dans le fabfile
    • Pour mysql, il faut en plus:
      • pip install -r requirements/mysql.txt
  • Astuces :
    • S'il y a des problèmes avec le modèle du webservice lors du démarrage du serveur, il faut les corriger manuellement
    • Pour ne générer que certaines tables dans le modèle du webservice, vous pouvez utiliser l'option "filter" de "loadwebservice" : :

      python manage.py loadwebservice --filter "user book address"

About

A django webservice's generator for an existing database

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages