- Informations générales
- Documentation Read the Docs
- Fonctionnalitées
- Interface d'administration Django
- Liste pré-requis
- Tests et couverture de code
- Création environnement
- Activation environnement
- Installation des librairies et dépendances
- Installation des variables d'environnement
- Exécution de l'application
- Image avec Docker
- Rapport avec flake8
- Informations importantes sur les différents fichiers et dossiers
- Auteur et contact
-
L'objectif de ce projet est de mettre à l'échelle une application Django en utilisant une architecture modulaire.
-
Plusieurs domaines du site OC Lettings ont été améliorés à partir du projet forker et cloner à l'adresse suivante ➔ Python-OC-Lettings-FR
-
L'objectif de ce projet est de mettre à l'échelle une application Django en utilisant une architecture modulaire
Plusieurs domaines du site OC Lettings ont été améliorés.
À partir du projet forker et cloner à l'adresse suivante : ➔ Python-OC-Lettings-FR
Réduction de la dette technique
- Remplacer les templates de manière cohérente dans les nouvelles applications.
- Correction des erreurs de linting.
- Correction de la pluralisation des noms de modèles dans le site d'administration.
Amélioration de l'architecture modulaire
- Créer 2 applications
lettings
,profiles
pour séparer les fonctionnalités de l'application. - remplir les nouvelles tables avec les données déjà présentes dans la base de données en utilisant les fichiers de migration Django.
- Remplir les nouvelles tables avec les données déjà présentes dans la base de données en utilisant les fichiers de migration Django.
- Convertir
oc_lettings_site
en projet Django. - Développer une suite de tests.
Ajout d'un pipeline CI/CD avec GitHub Actions et déploiement sur Heroku
- Compilation : exécuter le linting et la suite de tests.
- Conteneurisation : construire et push une image du site avec Docker.
- Déploiement : exécuter le déploiement de l'application avec Heroku.
- Compilation : exécuter le linting et la suite de tests.
- Conteneurisation : construire et push une image du site avec Docker.
- Déploiement : exécuter le déploiement de l'application avec Heroku.
Note : Monitoring de l'application et suivi des erreurs via Sentry.
Retour en haut 🡅
Bienvenue dans notre documentation complète disponible sur Read the Docs / Sphinx.
-
Vous trouverez toutes les informations essentielles pour comprendre et travailler avec notre projet.
-
La documentation est disponible à l'adresse suivante ➔ Read the Docs
Note : N'hésitez pas à explorer les différents chapitres ci-dessous.
-
Description du Projet : Découvrez notre démarche d'amélioration de l'architecture modulaire.
- Amélioration de l’architecture Modulaire
-
Installation : Apprenez comment installer notre application sur votre environnement de développement.
- Récupération et installation du projet
-
Guide de Démarrage Rapide : Obtenez rapidement votre application en marche.
- Prépartion de l’environnement
-
Technologies et Langages : Explorez les technologies et langages utilisés dans le projet.
- Les technologies et les langages utilisés
-
Structure de la Base de Données et Modèles de Données : Comprenez la structure de la base de données.
- Structure de la base de données
- Modèles de données
-
Interfaces de Programmation : Découvrez les API exposées par l'application.
- Interface de programmation
-
Guide d'Utilisation : Apprenez comment utiliser notre application avec des cas d'utilisation.
- Introdcution
-
Procédures de Déploiement et de Gestion : Suivez les étapes pour déployer et gérer l'application.
- Déploiement et gestion
Note : N'hésitez pas à explorer les différents chapitres ci-dessus.
Retour en haut 🡅
- Opérations CRUD par le site d'administration de Django.
- Navigation au travers des end points de l'API.
Note : Testé sous Windows 10 - Python 3.12.0 - Django 3.2.20
Note : Testé sous Windows 7 - Python 3.7.2 - Django 3.2.20
Retour en haut 🡅
- L'interface d'administration Django est disponible et fonctionnelle.
Identifiant : admin | Mot de passe : Abc1234!
➔ http://127.0.0.1:8000/admin/
Retour en haut 🡅
- Compte GitHub avec accès en lecture à ce repository
- Git CLI
- SQLite3 CLI
- Interpréteur Python, version 3.6 ou supérieure
Programme élaboré avec les logiciels suivants:
- Python v3.12.0 choisissez la version adaptée à votre ordinateur et système. Python est disponible à l'adresse suivante ➔ https://www.python.org/downloads/
- Git CLI
- SQLite3 CLI
- Interpréteur Python, version 3.6 ou supérieure
Programme élaboré avec les logiciels suivants:
-
Python v3.7.2 choisissez la version adaptée à votre ordinateur et système.
-
Python est disponible à l'adresse suivante ➔ https://www.python.org/downloads/
-
Django 3.2.20
-
Bootstrap 5.3.1
-
Docker Toolbox v.19.03.1
-
Sentry
-
Heroku CLI
-
SqLite Tools
-
GitHub Actions
-
Visual Studio Code 1.70.2
-
Windows 7 professionnel SP1
-
Heroku CLI
-
SqLite Tools
-
GitHub Actions
-
Visual Studio Code 1.70.2
-
Windows 7 professionnel SP1
-
Les scripts Python s'exécutent depuis un terminal.
-
Pour ouvrir un terminal sur Windows, pressez la touche
windows + r
et entrezcmd
. -
Sur Mac, pressez la touche
command + espace
et entrezterminal
. -
Sur Linux, vous pouvez ouviri un terminal en pressant les touches
Ctrl + Alt + T
.
Retour en haut 🡅
- Exécution des tests de plusieurs manières pour garantir la qualité du code.
- Pour exécuter des tests à l'aide de Pytest, utilisez la commande suivante :
$ pytest
lettings/tests.py::TestLettingsApp::test_address_model PASSED [ 7%]
lettings/tests.py::TestLettingsApp::test_letting_detail_url PASSED [ 15%]
lettings/tests.py::TestLettingsApp::test_letting_detail_view PASSED [ 23%]
lettings/tests.py::TestLettingsApp::test_letting_model PASSED [ 30%]
lettings/tests.py::TestLettingsApp::test_lettings_index_url PASSED [ 38%]
lettings/tests.py::TestLettingsApp::test_lettings_index_view PASSED [ 46%]
profiles/tests.py::TestProfilesApp::test_profile_detail_url PASSED [ 53%]
profiles/tests.py::TestProfilesApp::test_profile_detail_view PASSED [ 61%]
profiles/tests.py::TestProfilesApp::test_profile_model PASSED [ 69%]
profiles/tests.py::TestProfilesApp::test_profiles_index_url PASSED [ 76%]
profiles/tests.py::TestProfilesApp::test_profiles_index_view PASSED [ 84%]
profiles/tests.py::TestProfilesApp::test_user_model PASSED [ 92%]
oc_lettings_site/tests.py::test_dummy PASSED [100%]
================================== 13 passed in 5.79s =============================================
- Utilisation des tests Django, créer dans les fichiers tests.py des applications
lettings
etprofiles
- Utilisation des tests Django, créer dans les fichiers tests.py des applications
lettings
etprofiles
$ python manage.py test
Renvoie :
Ran 12 tests in 2.981s
OK
Destroying test database for alias 'default'...
- Utilisation de Coverage pour mesurer la couverture de code.
- Cette commande exécute vos tests en utilisant Coverage pour collecter les informations de couverture.
- Cette commande exécute vos tests en utilisant coverage pour collecter les informations de couverture.
$ coverage run manage.py test
- Cela affichera un rapport de couverture indiquant le pourcentage de code couvert par vos tests.
- Vous verrez également les lignes de code qui ont été exécutées (couvertes) ou non exécutées (non couvertes).
$ coverage report
Renvoie : 84% de couverture de code
$ coverage html
- Cela générera un dossier
htmlcov
dans lequel vous pouvez ouvrir le fichierindex.html
pour visualiser un rapport interactif de la couverture de code dans votre navigateur.
Retour en haut 🡅
- Installer une version de Python compatible pour votre ordinateur.
- Une fois installer ouvrer le cmd (terminal) placer vous dans le dossier principal (dossier racine).
- Une fois installer ouvrer le cmd (terminal) placer vous dans le dossier principal (dossier racine).
Taper dans votre terminal :
$ python -m venv venv
Un répertoire appelé venv
doit être créé.
Retour en haut 🡅
- Placez-vous avec le terminal dans le dossier principale (dossier racine).
Pour activer l'environnement virtuel créé, il vous suffit de taper dans votre terminal :
Note : Pour activer l'environnement virtuel créé, il vous suffit de taper dans votre terminal :
$ venv\Scripts\activate.bat
- Ce qui ajoutera à chaque ligne de commande de votre terminal
(venv)
:
Pour désactiver l'environnement virtuel, il suffit de taper dans votre terminal :
Note : Pour désactiver l'environnement virtuel, il suffit de taper dans votre terminal :
$ deactivate
Retour en haut 🡅
- Le programme utilise plusieurs librairies externes et modules de Python, qui sont répertoriés dans le fichier
requirements.txt
. - Placez-vous dans le dossier où se trouve le fichier requirements.txt avec le terminal, l'environnement virtuel doit être activé.
- Placez-vous dans le dossier où se trouve le fichier
requirements.txt
avec le terminal, l'environnement virtuel doit être activé. - Pour faire fonctionner le programme, il vous faudra installer les librairies requises.
- À l'aide du fichiers
requirements.txt
mis à disposition.
Taper dans votre terminal la commande :
$ pip install -r requirements.txt
- Dans un terminal exécuter la commande suivante dans le répertoire du projet.
- Cela installera toutes les dépendances spécifiées dans le fichier
package.json
➔ (package.json).
$ npm install
Retour en haut 🡅
- Pour utiliser l'application, il faut configurer l'environnement de l'application OC Lettings et générer une clé secrète aléatoire pour la configuration de Django.
- De plus, il est nécessaire d'inclure des noms de variables d'environnement préconfigurées.
-
Créer un modèle de fichier
.env
pour oc_lettings_site avec une clé secrète générée aléatoirement et des variables d'environnement préconfigurées. -
Utiliser le script
creating_environment_variables.py
➔ (creating_environment_variables.py)
pour génèrer un fichier.env
qui peut être utilisé pour configurer l'environnement de l'application oc_lettings_site -
Il génère une clé secrète aléatoire pour la configuration de Django et inclut également des noms de variables d'environnement préconfigurés tels que :
'DJANGO_SECRET_KEY'
'SENTRY_DSN'
'HEROKU_APP_NAME'
'DEBUG'
À la racine du dossier principal OC Lettings, créer le fichier .env
Taper dans votre terminal :
$ python creating_environment_variables.py
Il est essentiel de configurer l'environnement de l'application.
- Générez une clé secrète aléatoire pour la configuration de Django et incluez des noms de variables d'environnement préconfigurées.
Utilisez le fichier .env
, voici un exemple d'un fichier .env
une fois configuré avec les paramètres :
DJANGO_SECRET_KEY=sxkxd_*2rncaz^sg7u5igt3nd&4zl9@s=l5s=n_27k*7z05ktg
SENTRY_DSN=https://2714498e0009ae5e7e5df869ade74b8e@o4505744838623343.ingest.sentry.io/4505744878142551
HEROKU_APP_NAME=oc-lettings-apps
DEBUG=0
Une fois le fichier .env
créé, ouvrez-le avec un éditeur de texte.
- Remplissez les champs avec les valeurs appropriées pour chaque variable d'environnement.
- Ces étapes garantissent une configuration correcte de l'environnement nécessaire au bon fonctionnement de l'application OC Lettingss.
Note : La clé SENTRY_DSN doit être récupérée dans les paramètres de votre compte Sentry.
Note : Le fichier .env généré doit être configuré avec des valeurs appropriées pour chaque variable d'environnement avant utilisation.
Retour en haut 🡅
- Lancement du serveur Django.
- Placez-vous avec le terminal dans le dossier principal.
- Activer l'environnement virtuel et ensuite lancer le serveur Django.
Taper dans votre terminal la commande :
$ python manage.py runserver
- Lancement de l'application dans le navigateur de votre choix.
Se rendre à l'adresse ➔ http://127.0.0.1:8000/
Navigateur
Note : Les tests ont était fait sur Firefox et Google Chrome.
Retour en haut 🡅
-
Une image Docker est disponible pour ce projet.
-
Récupérer l'image sur Docker Hub ➔ Image Docker
$ docker pull bubhux/bubhux-oc-image-build:latest
- Lancer l'image en local
$ docker run -p 8080:8080 bubhux/bubhux-oc-image-build:latest
$ docker run -it bubhux/bubhux-oc-image-build:latest /bin/sh
- Accéder au dossier du container
$ docker run -it bubhux/bubhux-oc-image-build:latest /bin/sh
$ docker exec -it [ID_DU_CONTENEUR] sh
- Retourner dans les logs du conteneur en temps réel
$ docker logs -f <ID_OR_NAME>
$ docker exec -it [ID_DU_CONTENEUR] sh
$ pip install django
- Ouvrir et visualiser un fichier
$ - > cat .env
- Vérifie la présence d'un fichier
$ which .env
- Exécuter un script Python à l'intérieur du conteneur
$ python creating_environment_variables.py
- Editer un fichier
vi .env
-
Une fois que l'éditeur Vi est ouvert avec votre fichier, appuyez sur
i
pour entrer en mode édition (insertion). -
Collez l'URL que vous souhaitez copier à partir du presse-papiers dans l'éditeur Vi.
-
Pour coller dans Vi, faites un clic droit ou utilisez
Ctrl + v
. -
Après avoir collé le contenu, appuyez sur
Esc
pour quitter le mode d'insertion. -
Enregistrez vos modifications en tapant
:wq
et appuyez sur Enter. Se rendre à l'adresse. ➔ http://127.0.0.1:8000/
Note navigateur : Les tests ont était fait sur Firefox et Google Chrome.
Retour en haut 🡅
Tapez dans votre terminal la commande :
$ flake8
- Ne renvoie aucune erreur.
Retour en haut 🡅
Le dossier lettings
- Le dossier est une apps Django qui contient :
- Un dossier
migrations
contenant les fichiers de configuration pour la base de données ➔ (migrations) - Á la racine du dossier
lettings
les fichiers tels que views.py, tests.py ➔ (lettings)
Le dossier oc_lettings_site
- Le dossier est une apps Django qui contient :
- Un dossier
migrations
contenant les fichiers de configuration pour la base de données ➔ (migrations) - Á la racine du dossier
oc_lettings_site
les fichiers tels que settings.py ➔ (oc_lettings_site)
Le dossier profiles
- Le dossier est une apps Django qui contient :
- Un dossier
migrations
contenant les fichiers de configuration pour la base de données ➔ (migrations) - Á la racine du dossier
profiles
les fichiers tels que views.py, tests.py ➔ (profiles)
Le dossier lettings
- Le dossier est une apps Django qui contient :
- Un dossier
migrations
contenant les fichiers de configuration pour la base de données. ➔ (migrations) - Á la racine du dossier
lettings
les fichiers tels que views.py, tests.py. ➔ (lettings)
Le dossier oc_lettings_site
- Le dossier est une apps Django qui contient :
- Un dossier
migrations
contenant les fichiers de configuration pour la base de données. ➔ (migrations) - Á la racine du dossier
oc_lettings_site
les fichiers tels que settings.py. ➔ (oc_lettings_site)
Le dossier profiles
- Le dossier est une apps Django qui contient :
- Un dossier
migrations
contenant les fichiers de configuration pour la base de données. ➔ (migrations) - Á la racine du dossier
profiles
les fichiers tels que views.py, tests.py. ➔ (profiles)
Le dossier .github
- Le dossier contient le fichier
ci_cd_branch_master.yml
(.github)
Le dossier doc
- Le dossir contient toute la configuration de
Read the Docs
et deSphinx
(doc)
Le dossier static
- Dossier qui contient qui contient les images svg des badges et les dossiers nécessaire à
Bootstrap
.
Retour en haut 🡅
Pour toute information supplémentaire, vous pouvez me contacter.
Bubhux : [email protected]