Ce projet est basé sur la proposition de créer un notificateur de série. Un processus en V à été utilisé lors de sa création, de par une volonté que tout le monde touche à toute les parties du code. Nous avons essayé de respecter PEP 8 et typer au maximum le code afin d'améliorer et l'autocomplete durant le dévelopement.
Il a au départ été défini un UML https://ibb.co/cebO0V, cet UML a été utilisé comme base du model M(V)C que nous avons tenté d'implémenter.
Taches effectuées dans l'ordre :
- Modèles et la base de donnée en parallèle :
src/db
,src/models
- Contrôlleurs :
src/controllers
- Routes appelant les contrôlleurs :
src/ressources
+src/app.py
- Front :
front
Prérequis : Python3, npm
Dans le dossier principal :
./install.sh
=> installe les modules nécessaires et la base de données./launch.sh
=> lance le serveur sur localhost:5000
Passer dans le dossier du front : cd front
npm install
=> installation de l'ensemble des packages nécessairesnpm run dev
=> lance l'application sur http://localhost:8080/
Users par défaut :
- nicolas/mymdp
- amelie/mymdp
- rachel/mymdp
On peut voir ce projet comme un wrapper de l'application TMDB : https://www.themoviedb.org/.
L'application permet ainsi de naviguer au travers des différentes séries de TMDB et les mettre en favori. Une fois qu'elles sont en favori, l'utilisateur reçoit des notifications lorsqu'un nouveau prochain épisode arrive.
L'idée a été d'une part de généraliser les données reçues par TMDB en les utilisant pour générer nos propres objets et d'autre part de minimiser les call API sur TMDB.
Surtout présente nos models : src/models
- Utilisation au maximum d'attributs privés.
- Utilisations de class pour définir nos contrôlleurs qui ne sont pourtant qu'une librairie de fonctions.
- Actor et Author heritent de Person (dans
src/models
) - ApiHelperTMDB implémente ApiHelper (dans
src/api_helper
), ce dernier étant une classe que nous avons voulu abstraite. Cet héritage était un peu forcé mais permettrait d'avoir plusieurs sources d'API. - les erreurs custom héritent de GCErrorException (dans
src/errors
)
Utilisé par NotificationManager vu qu'il hérite de Thread et que la method __init__ est un polymorphisme du __init__ de Thread (vu que ce dernier est appelé.)
Les erreurs de fonctionnalités détectées dans les routes (utilisateur existant déjà lors de la création, recherche d'une série qui n'existe pas...), sont décrites par le model src/errors
dans le __init__ de ce dernier.
La détection de l'erreur peut être vue au niveau des routes src/ressources
.
Le thread s'occuper de gérer l'update des notifications tout en essayant de se limiter aux quotas. L'idée est de maximiser le temps entre chaque mise à jour tout en s'accordant une fréquence de mise à jour raisonnable. Il se trouve dans src/notification_manager