INSTALL.md 3.69 KB

Installation de Plan De Charge

Prérequis

  • python3
  • sqlite ( pour le développement et les tests unitaires )
  • chrome-driver et chromium ( pour les tests unitaires)
  • postgresql ou mysql/mariadb ( pour la production )

Obtenir un répertoire fonctionnel

export GIT_SSL_NO_VERIFY=1
git clone https://gitlab.irap.omp.eu/PDC-IRAP/pdc-web.git
cd pdc-web
git checkout dev # éventuellement travailler avec la branche la plus à jour

Installer l'environment python

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Configurer l'application

# D'abord les accès base de donnée
cp resources/pdc_config.py .
$(EDITOR) pdc_config.py 
cp resources/db_config.py .
$(EDITOR) db_config.py 

# Ensuite l'application elle même (ce fichier est utilisable tel quel)
cp resources/flaskenv .flaskenv
$(EDITOR) .flaskenv

Créer la base de données

Utiliser l'outil de ligne de commande fourni avec l'application.

flask pdc_db --help

# créer la structure de la base
flask pdc_db create_db

# renseigner des agent depuis une base type lesia
flask pdc_db feed_from_lesia 

# entrer des périodes
# ( inutile s'il y a eu un import Lesia)
flask pdc_db feed_periods 

# entrer des charges aléatoires (une centaine)
# ( inutile s'il y a eu un import Lesia)
flask pdc_db feed_random_charges

Jouer les tests et exécuter un serveur local

pip install -r requirements-tests.txt
PYTHONPATH=. pytest

# éventuellement voir le taux de couverture
PYTHONPATH=. pytest  --cov=app --cov-report=xml:"coverage.xml" --cov-report=term --junitxml "tests-report.xml" 

# ouvrir un serveur sur localhost:5000
flask run

Configurer l'appli web avec apache

Les fichiers concernés:

  • pdc_web.wsgi
  • pdc_config.py
  • db_config.py

La procédure:

# créer le répertoire pour le web
export WEB_DIR=/var/www/html/pdc-web
mkdir $WEB_DIR

# le peupler avec le code 
export GIT_DIR=/path/to/pdc_web/.git
export GIT_BRANCH=master
git --work-tree=$WEB_DIR --git-dir=$GIT_DIR checkout -f $GIT_BRANCH

# le configurer : cf plus haut "Obtenir un répertoire fonctionnel"
cd $WEB_DIR
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
$(EDITOR) pdc_config.py db_config.py .flaskenv 

# configurer le serveur web
cp ./resources/apache2-virtual-host.conf /etc/apache2/sites-available/pdc-web.conf
$(EDITOR) /etc/apache2/sites-available/pdc-web.conf 
a2ensite pdc-web 
apachectl restart

Mise à jour

git autodeploy

Les fichiers concernés:

  • scripts/post-deploy.sh
  • resources/post-receive.git-hook

La procédure:

git --work-tree=/var/www/html/pdc-web --git-dir=/path/to/the/repo.git checkout -f master

# make bare repo
git clone --bare /path/to/the/repo.git
# put on hook
cp /path/to/working-directory/resources/post-receive.git-hook repo.git/hooks/post-receive
$(EDITOR) repo.git/hooks/post-receive

git push to repo

Intégration Pycharm

Ce projet utilisant le pattern "factory", il faut procéder à quelques configuration afin de le faire tourner avec pycharm.

Pour une procédure détaillée, voir la page:

https://flask.palletsprojects.com/en/1.1.x/cli/#pycharm-integration

Dans le menu 'Edit Configurations', changer les champs:

  • 'module name' positionné à 'flask'
  • et dans le champs 'Parameters' choisir 'run'

Normalement, cette configuration permet de lire les variables positionées dans le fichier .flaskenv

FLASK_ENV=development
FLASK_APP=pdc_web

Ainsi fait, exécutez votre projet depuis pycharm et testez.