Développement

Prérequis

OS

Windows

Version 10 minimum

Linux

Distributions compatibles :

  • Debian

  • Ubuntu 16.04 ou 18.04

Logiciels

  • Docker (Engine et Compose a minima)

  • Python 3.7 64 bits

  • PostgreSQL 12


Lancer en local

Commandes lancées sous Windows 10 avec WSL activé.

Installation

# create virtual env
# on Linux: python3.7 -m venv .venv
py -3.7 -m venv .venv

# enter into
.\.venv\Scripts\activate
# on Linux: source .venv/bin/activate

# upgrade install tooling
python -m pip install --upgrade pip

# install requirements
python -m pip install -U -r .\requirements\local.txt
# on Linux: python -m pip install -U -r requirements/local.txt

# download NLTK packages - please refer to `ntlk.txt`
python -m nltk.downloader punkt stopwords

# optionally, install pre-commit git-hooks
pre-commit install

Configuration

Renommer le fichier example.env en .env et le compléter. Pour info, il est possible de générer une clé Django Secret en passant par OpenSSL sur WSl : wsl -- openssl rand -base64 64 (copier/coller dans le fichier .env).

Base de données

Initialiser la base de données :

# apply migrations to database
python manage.py migrate

# create the super user
python manage.py createsuperuser

Pour charger des enregistrements de base (technologies, métiers, types de contrats, etc.), utiliser loaddata :

Lancer

# launch development web server
python .\manage.py runserver
# on Linux: python manage.py runserver

# alternatively, use the enhanced command from django-extensions
python .\manage.py runserver_plus

Ouvrir le navigateur à l’adresse indiquée dans le terminal. Par défaut : http://localhost:8000/.

Avec HTTPS

Pour développer au mieux, il est préférable de servir l’application en HTTPS. C’est possible via runserver_plus de Django Extensions (voir la documentation).

# create folder where to store certificate and key
mkdir certs
# generate SSL certificate and key
wsl -- openssl req -nodes -new -x509 -days 365 -keyout certs/serverKey.key -out certs/serverCert.cert
# on Linux: remove 'wsl -- '

# alternatively, use the enhanced command from django-extensions
python .\manage.py runserver_plus --cert-file .\certs\serverCert.cert --key-file .\certs\serverKey.key

Ouvrir le navigateur à l’adresse indiquée dans le terminal. Par défaut : https://localhost:8000/. Accepter le risque lié aux certificats auto-signés.


Docker

Prérequis Docker

  • Docker 2.2+ ou dans le détail :

    • Docker Engine : 19.03+

    • Docker Compose 1.25+

Configuration Docker

Renommer fichier example.env en docker.env et compléter :

# DEVELOPMENT
DJANGO_DEBUG=1
USE_DOCKER=1

# GLOBAL
DJANGO_ADMIN_URL="admin"
DJANGO_PROJECT_FOLDER="elgeopaso"
DJANGO_SECURE_SSL_REDIRECT=0
DJANGO_SETTINGS_MODULE="elgeopaso.settings.production"
WEB_CONCURRENCY=4

# SECURITY
DJANGO_SECRET_KEY="change_me_with_generated_key"
DJANGO_ALLOWED_HOSTS="localhost, 0.0.0.0, 127.0.0.1"

# EMAIL
REPORT_RECIPIENTS="elpaso@georezo.net,"
SMTP_USER="elpaso@georezo.net"
SMTP_PSWD=

# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_HOST=database
POSTGRES_PORT=5432
POSTGRES_DB=elgeopaso-dev
POSTGRES_USER=elgeopaso
POSTGRES_PASSWORD=elgeopaso
DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"

Usage

Lancer l’application

docker-compose -f docker-compose.dev.yml up -d

Ouvrir le navigateur sur http://localhost:8000.

Données et analyses de base

Après que l’application soit lancée :

docker-compose -f docker-compose.dev.yml run --rm webapp sh .deploy/release-tasks.sh