CAW1 2018 Projet de François DUPONT et Alexandre BOUQUET

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet Site d'import d'entrainements et de compétitions
Cadre Projet Web (alternants 2A)
Page principale CAW1_Demonstration_Realisation

Équipe Alexandre BOUQUET, François DUPONT
Encadrants Sébastien Viardot


Oilon est un site web pour les athlètes et les coachs, permettant d'importer ses séances (depuis Strava) et ses compétitions (Base athlé en athletisme et FFS en ski)

Les athlètes peuvent ainsi avoir un visuel en même sur leurs entraînements et leurs compétitions.

Pour les coachs, cela permet d'observer les entraînements/compétitions de ses athlètes.

Screencast

https://vimeo.com/272957326

Objectifs

Problématique  : Permettre au même endroit, de voir à la fois ses entrainement et ses compétitions. Permettre aux coachs de voir le carnet d'entrainement de ses athlètes.

Cahier des charges :

  • Gestion des utilisateurs (non connecté, connecté, athlètes/Coach)
  • Connexion Strava
  • Import des séances depuis Strava
  • Import des compétitions depuis Base athlé (Athlétisme) et FFS(Ski / Ski de fond)
  • Application "responsive"

Cas d'usage

Pour les athlètes :

  • S'inscrire
  • Se connecter
  • Renseigner ses identifiants Strava/FFS/Base athlé
  • Import des séances et des compétitions

Pour les entraîneurs :

  • S'inscrire
  • Se connecter
  • Regarder les carnets d'entrainements des athlètes

Import des données Strava

Il a fallu utiliser l'API de strava Doc api strava

Import des données des compétitions

Il a fallu écrire des parser pour récuperer les données de ces sites.
2 parser ont étés fait : pour Base athlé et pour la FFS
Base athlé est un site qui recense toutes les données des compétitions pour l'athlétisme français
FFS est le site des compétitions du ski français (fond+piste+autre)

Modèle de données

Les classes présentées dans le modèle UML ci-dessus ont été implémentées.

Oilon uml.png

Choix techniques

Le projet a été réalisé en utilisant la version de production du framework Django v1.11.13

Framework CSS

Nous avons utilisé le framework CSS Bootstrap4 pour notre front-end. Ce framework nous permet d'avoir facilement un rendu élégant et un site responsive.

Base de données

Nous avons utilisé la base de donnée SQLite par défaut de Django pour stocker les données relatives à notre application (données utilisateur).

Mise en place de la gestion des rôles

Il est possible de créer un administrateur à l'aide de la commande suivante :

   python3 manage.py createsuperuser

Installation

Cette procédure d'installation a été écrite pour un système Linux.

Prérequis

pip
python3 (>=3.5)

Environnement virtuel

  • Python < 3.6
   virtualenv dev_env && virtualenv dev_env -p /usr/bin/python3.5 && source dev_env/bin/activate && pip install -r requirements.txt
  • Python 3.6
   apt-get install python3.6-venv
   python3.6 -m venv dev_env
  • Puis il faut sourcer l'env et installer les packets python
   source dev_env/bin/activate
   pip install -r requirements.txt

Installation des dépendances

Commande à lancer à la racine du projet dans l'environnement virtuel

  pip install -r requirements.txt

Lancement de l'application

Toujours à la racine du projet :

  • python3 manage.py runserver

L'application devrait maintenant être accessible à l'URL : http://localhost:8000

API

Chaque route POST reçoit les données en JSON et toutes les routes renvoient du JSON.

Routes

  • /api/new/user
    • POST --> création d'un utilisateur
  • /api/users
    • GET --> retourne la liste des utilisateurs
  • /api/user/(?P<pk>\d+)/activities
    • GET --> retourne la liste des activités selon un utilisateur
  • /api/user/(?P<pk>\d+)/competitions
    • GET, retourne la liste des compéitions selon un utilisateur


Détails

  • /api/new/user
    • Champ obligatoire : 'email', champs facultatifs --> tous ceux du modèle CustomUser.
    • En cas de réussite, renvoit l'email du nouvel utilisateur et son mot de passe.
    • Cas d'erreurs :
      • 'email is missing'
      • 'Veuillez saisir une addresse mail valide'
      • 'unexpected field :' (un field qui n'existe pas dans le modèle CustomUser)
      • 'email already used'.
  • /api/users
    • Renvoi la liste des utilisateurs de la base de données avec comme information : 'email', 'pk', 'activities' (nombre d'activités), 'competitions' (nombre de compétitions).
  • /api/user/(?P<pk>\d+)/activities & /api/user/(?P<pk>\d+)/competitions
    • Renvoi la liste d'activités ou compétitions avec tous les attributs de la classe correspondante (Activity ou Competition).

Tests

Fonctionnels

On peut lancer les tests grâce à la commande suivante :

   python3 manage.py test oilon.tests

Selenium

Pour lancer les tests selenium, il faut avoir installé https://github.com/mozilla/geckodriver/releases (driver firefox)

ensuite, dans le dev_env :

   python manage.py test oilon.tests.selenium

API

Architecture de l'application

Rendu

Contenu du zip :

  • Readme
  • L'application
  • Un export de cette page wiki en PDF comprenant le modèle de données, le cahier des charges, etc

Futur

Le site pourrait être mis en production tel qu'il est à l'heure actuelle. Cependant on pourrait ajouter les fonctionnalités suivantes :

  • Import des séances depuis d'autres services que Strava (Polar, Garmin, Suunto ..)
  • Import des compétitions depuis d'autres services (autres sports)
  • Import automatique
  • Connexion depuis d'autres services tel que FB, Gmail ..
  • Ajout manuel de séance/compétition
  • Editer des séances
  • Exporter les données dans un format style carnet d'entraînement (pour imprimer par exemple)