créer un back-end performant et sécurisé via des points de terminaison d'API pour la conception d'une application de suivi de problèmes
Le but de l'excercice est de concevoir une API en utilisant les outils Django-server et Django-Rest-FrameWork pour la conception de points de terminaison d'API via une connexion sécurisée.
Seuls les utilisations connectées et contribuant aux différents projects peuvent avoir accès aux informations demandées. Chaque projet peut se voir associer des problèmes qui lui sont liés ; l'utilisateur ne doit pouvoir appliquer le processus CRUD aux problèmes du projet que si il ou elle figure sur la liste des contributeurs.
Ceci pour le respect des conditions dictées par le RGPD pour la confidentialités des données présentes dans la base de données.
Une connexion des utilisateurs se fera par la mise en place de Token via une authentification JWT
git clone https://github.com/Litibe/P10.git
création de l'environnement virtuel
python3 -m venv [nom_de_votre_environnement_virtuel]
activation de l'environnement virtuel
source [nom_de_votre_environnement_virtuel]/bin/activate
source .\[nom_de_votre_environnement_virtuel]\Scripts\activate
Aller dans le dossier P10 contenant les fichiers
cd P10
pip install -r requirements.txt
Exécution du serveur local Django via la commande :
python manage.py runserver
Cette commande produit le resultat suivant : en effet, le programme dispose d'une interface dans le terminal.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
DATE - HEURE
Django version 4.0, using settings 'softDesk.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Vous pouvez lancer votre navigateur web avec le lien http://127.0.0.1:8000/
le lien http://127.0.0.1:8000/ affichera une simple page d'accueil de l'application afin d'avoir accès à la documentation des différents points de terminaison API créés.
Différents utilisateurs ont été construit pour la "démonstration". Voici la liste des utilisateurs, ayant tous le mot de passe : motdepasse2022 :
- motdepasse2022@lioneltissier.fr
- motdepasse2022@djangotest2.fr
- motdepasse2022@djangotest3.fr
L'API SoftDesk permet :
- La création de projet, ainsi que l'attribution de collaborateur (PROJECT)
- La saisie de problème pour un projet donné, et l'atribution de la résolution du dit problème à un utilisateur précis (ISSUE)
- Pour chaque problème, l'auteur du problème ou son utilisateur attribué peuvent ajouter des commentaires. (COMMENT)
Après avoir activé l'environnement virtuel, vous pouvez entrez la commande suivante :
flake8 --format=html --htmldir=flake_rapport --config=flake8.ini
Un rapport sous format HTML sera généré dans le dossier "flake_rapport", avec comme argument "max-line-length" défini par défaut à 79 caractères par ligne si non précisé. Dans le fichier de configuration "flake8.ini", est exclu le dossier env/, settings.py, manage.py, ainsi que les dossiers migrations générés par Django.
La documentation PostMan présente à l'adresse : https://documenter.getpostman.com/view/16769688/UVXdQegN permettra à tous utilisateurs enregistrés et connectés de façon sécurisée avoir accès aux différentes méthodes CRUD des liens associés.
Une fonctionnalité de TEST de tous les points de terminaisons a été conçue dans Django sous la requete :
python manage.py test
Found 20 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
[...]
Ran 20 tests in 15.971s
OK
Destroying test database for alias 'default'...
qui testera l'ensemble des points de terminisons, utilisateurs refusés puis autorisés à l'accès des données.
Des tests précis peuvent être réalisés via les commandes terminales suivantes :
python manage.py test softDeskApi.tests.Test_A_Users
python manage.py test softDeskApi.tests.Test_B_Projects
python manage.py test softDeskApi.tests.Test_C_ProjectDetails
python manage.py test softDeskApi.tests.Test_D_ContributorProject
python manage.py test softDeskApi.tests.Test_E_IssuesProject
python manage.py test softDeskApi.tests.Test_F_CommentProject