L'objectif de l'application est de rationaliser la gestion des compétitions entre les clubs (hébergement, inscriptions, frais et administration). L'application permettra aux clubs d'inscrire des athlètes aux compétitions organisées au sein de la division. Seules les admins et les secrétaires de club auront accès à l'application.
Actuellement, les clubs gagnent des points via la mise en place et le déroulement des compétitions. Chaque club peut voir son solde actuel et échanger des points pour inscrire des athlètes à de futures compétitions, à raison d'un point par inscription. Chaque compétition aura un nombre limité d'inscriptions, et chaque club ne peut inscrire qu'un maximum de 12 athlètes.
- Phase 1 du projet : régler les bogues du POC.
- Phase 2 du projet : améliorer les fonctionnalités de l'application par des tests.
- Schéma de base de donnée GUDLFT.
-
Par souci de transparence, les visiteurs peuvent consulter le nombre de points disponibles pour chaque club.
-
Les visiteurs peuvent s'inscrire sur la plateforme GUDLFT en créant un compte "secrétaire".
-
Les secrétaires de club pourront utiliser leur adresse électronique pour se connecter.
-
Les secrétaires pourront réinitialiser leur mot de passe sur la rubrique "mot passe oublié".
-
Les secrétaires pourront créer leur club qui sera associé à leur compte utilisateur secrétaire. Contrainte : un compte secrétaire ne peut gérer plusieurs clubs à la fois.
-
Les secrétaires peuvent consulter la liste des compétitions à venir, en ayant un aperçu des places restantes et de la date de chaque compétition. Contraintes : les secrétaires ne pourront pas avoir accès aux compétitions "complètes" ou dont la date est déjà passée.
-
Les secrétaires pourront ensuite sélectionner une compétition et utiliser les points de leur club pour réserver des places dans cette compétition. Les points utilisés seront déduits du total précédent. Contraintes : chaque secrétaire ne peut effectuer qu'une seule réservation dans chaque compétition, et les secrétaires ne pourront pas réserver plus de 12 places dans une compétition dans la limite des points que possède leur club (afin de garantir l'équité envers les autres clubs).
-
Les secrétaires auront la possibilité de consulter leurs réservations et les annuler pour récupérer leurs points. Contrainte : les secrétaires ne peuvent pas annuler une réservation sur une compétition dont la date est déjà passée.
-
Les secrétaires des clubs pourront se déconnecter.
- CRUD : Create, Read, Update, Delete.
-
Les admins pourront utiliser leur adresse électronique pour se connecter.
-
Les admins pourront réaliser du CRUD sur la liste des utilisateurs inscrits sur l'application.
-
Les admins pourront réaliser du CRUD sur la liste des clubs inscrits sur l'application.
-
Les admins pourront réaliser du CRUD sur la liste des compétitions inscrites sur l'application.
-
Les admins pourront réaliser du CRUD sur la liste des réservations inscrites sur l'application.
- Installer Python 3 : Téléchargement Python 3
- Installer git : Téléchargement Git
git clone https://github.com/NidalChateur/OC_P11_GUDLFT.git
cd OC_P11_GUDLFT
- Créer l'environnement virtuel:
python -m venv env
- Activer l'environnement virtuel :
- Windows :
env\Scripts\activate.bat
- Unix/MacOS :
source env/bin/activate
- Windows :
pip install -r requirements.txt
pip install poetry
poetry install
- Lancer le script à l'aide de la commande suivante :
flask run
- Lancer le script à l'aide de la commande suivante :
poetry run flask run
Lorsque le serveur fonctionne, l'application peut être consultée à partir de l'url [http://127.0.0.1:5000].
Les étapes 1, 2 et 4 ne sont requises que pour l'installation initiale. Pour les lancements ultérieurs du serveur de l'application, il suffit d'exécuter les étapes 3 et 5 à partir du répertoire racine du projet.
Flake8 est souvent utilisé pour vérifier le respect des conventions de style PEP 8 dans le code Python. Pour réaliser ceci, se positionner à la racine du projet puis exécuter dans le terminal :
flake8
Un rapport d'erreur au format html, sera alors disponible dans le dossier "flake8_report".
La couverture de test vérifie le taux de lignes couvertes par des tests.
Pour réaliser ceci, se positionner à la racine du projet puis exécuter dans le terminal :
pytest --cov=. --cov-report html
Quand le script est terminé, vous découvrez qu'un nouveau dossier "htmlcov" a été créé à l'endroit où vous avez lancé la commande. Ce dossier contient différents documents dont des fichiers HTML.
Ouvrez le fichier "index.html" qui contient un résumé du rapport de couverture.
À partir de cette page, vous pourrez naviguer à travers les différents fichiers afin d’avoir le détail sur la couverture. Effectivement, vous aurez un rapport détaillé pour chaque fichier source sous le format HTML.
Locust est un outil de test de performance open source. Il permet de tester la charge de l’application en simulant des milliers d’utilisateurs simultanément sur notre application.
Pour réaliser ce test de performance :
-
Lancer le serveur flask de l'application dans un terminal cf "Installation" partie 5.
-
Ouvrir un nouveau terminal tout en conservant le terminal faisant tourner le serveur flask et entrer les lignes de commande suivantes:
cd tests/performance/
locust
-
Ouvrir un navigateur à cette adresse http://localhost:8089/
-
Sur cette page, vous devez préciser :
-
Number of total users to simulate : le nombre total d'utilisateurs à simuler.
-
Spawn rate : le taux de création d'utilisateurs, il correspond au nombre d’utilisateurs créés par seconde jusqu’à atteindre le nombre total d’utilisateurs.
-
Host : l’adresse de votre application, dans notre cas l’application est lancée sur http://localhost:5000/
-
-
Analyse des résultats :
-
Requests : Nombre total de demandes effectuées jusqu'à présent.
-
Fails : Nombre de demandes qui ont échoué.
-
Median : Vitesse de réponse pour 50 centiles en ms.
-
90%ile : Vitesse de réponse pour 90 centiles en ms.
-
Average : Vitesse de réponse moyenne en ms.
-
Min : Vitesse de réponse minimale en ms.
-
Max : Vitesse de réponse maximale en ms.
-
Average size : Taille moyenne des réponses en octets.
-
Current RPS : Requêtes actuelles par seconde.
-
Current Failure/s : Nombre total d'échecs par seconde
-