OC Lettings est une application web Django permettant de consulter des locations immobilières et des profils utilisateurs.
Le projet a été refactorisé afin de passer d'une architecture monolithique à une architecture modulaire, puis conteneurisé, testé et déployé avec une chaîne CI/CD.
- Application en production : https://oc-lettings-47nw.onrender.com/
- Documentation : https://python-oc-lettings-fr-aurelien7777.readthedocs.io/fr/latest/
- Dépôt GitHub : https://github.com/Aurelien7777/Python-OC-Lettings-FR
- consultation de la liste des locations ;
- consultation du détail d'une location ;
- consultation de la liste des profils ;
- consultation du détail d'un profil ;
- administration des données avec l'interface Django ;
- pages d'erreur personnalisées ;
- surveillance des erreurs avec Sentry.
- Python 3.7 ;
- Django 3.0 ;
- SQLite ;
- Gunicorn ;
- WhiteNoise ;
- Docker ;
- GitHub Actions ;
- Docker Hub ;
- Render ;
- Sentry ;
- Sphinx ;
- Read the Docs.
Le projet est organisé en trois composants principaux :
oc_lettings_site: configuration générale, page d'accueil et pages d'erreur ;lettings: gestion des adresses et des locations ;profiles: gestion des profils utilisateurs.
- Git ;
- Python 3.7 ;
pip;- le module
venv.
git clone https://github.com/Aurelien7777/Python-OC-Lettings-FR.git
cd Python-OC-Lettings-FRSous Windows :
py -3.7 -m venv venv
.\venv\Scripts\Activate.ps1Sous macOS ou Linux :
python3.7 -m venv venv
source venv/bin/activatepython -m pip install --upgrade pip
pip install -r requirements.txtCréer un fichier .env à la racine du projet :
SECRET_KEY=replace-with-a-local-secret-key
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
SENTRY_ENVIRONMENT=developmentPour activer Sentry localement :
SENTRY_DSN=replace-with-your-sentry-dsnLe fichier .env ne doit pas être ajouté au dépôt Git.
python manage.py migratepython manage.py runserverL'application est accessible à l'adresse suivante :
Créer un compte administrateur :
python manage.py createsuperuserPuis ouvrir :
coverage run manage.py test
coverage report --fail-under=80La CI exige une couverture minimale de 80 %.
flake8docker build -t oc-lettings:local .docker run --rm -p 8000:8000 -e SECRET_KEY=django-insecure-local -e DEBUG=False -e ALLOWED_HOSTS=localhost,127.0.0.1 oc-lettings:localL'application est alors accessible à l'adresse suivante :
Le workflow GitHub Actions :
- exécute les tests Django avec
coverage; - vérifie que la couverture atteint au moins 80 % ;
- exécute
flake8; - construit l'image Docker sur la branche
master; - publie l'image sur Docker Hub avec les tags
latestet le SHA du commit ; - déclenche le déploiement sur Render.
Image Docker de production :
docker.io/aurelienamorin/oc-lettings:latest
Sentry centralise les erreurs rencontrées par l'application.
La configuration repose principalement sur les variables suivantes :
SENTRY_DSN;SENTRY_ENVIRONMENT.
L'option send_default_pii est désactivée afin de ne pas transmettre automatiquement les données personnelles des utilisateurs.
La documentation technique est générée avec Sphinx et publiée sur Read the Docs :
https://python-oc-lettings-fr-aurelien7777.readthedocs.io/fr/latest/
Pour construire la documentation localement :
cd docs
.\make.bat clean
.\make.bat htmlLes fichiers HTML sont générés dans :
docs/build/html/