CAW1 2019 Projet de Quentin LANUSSE et Clément LOPEZ

De Ensiwiki
Révision de 10 juin 2019 à 18:51 par Lopezcl (discussion | contributions) (Prérequis :)

Aller à : navigation, rechercher
Project schedule.png
Titre du projet Impr'Orga
Cadre Projet Web 2AA Ensimag 2019
Page principale CAW1_Demonstration_Realisation

Équipe Quentin Lanusse, Clément Lopez
Encadrants Sébastien Viardot


Impr'Orga

Description

Impr'Orga est une application Web de gestion d'une troupe d'improvisateurs (artistes de théâtre d'improvisation).

L'application permet de proposer différents évènements à la troupe avec description (date, lieu, type d'évènement, etc.) et de permettre aux membres de s'inscrire à ces évènements en fonction de leurs disponibilités.

L'idée est de faciliter la gestion des évènements pour les responsables de troupe ainsi que de garder une trace simple d'accès des évènements passés et à venir.

Objectifs

Les Objectifs du projet sont de créer une application Web permettant :

  • L'ajout/modification/suppression d'évènements
  • L'inscription à certains évènements
  • L'ajout/modification/suppression d'exercices d'entraînement
  • Un chat général ainsi qu'une gestion de commentaires par évènement

via la découverte et la prise en main du Framework Django

Screencast de l'application

Modélisation

Cas d'usage

Ci-dessous est le diagramme des cas d'utilisations à l'origine du projet, nous n'avons pas réussi à tout implémenter (notamment les modifications) durant le temps imparti. ImprOrga-DiagrammeCU.png

Voici la liste des éléments qui sont pas (ou pas complètement) implémentés :

Administrator

  • Tout est en place via l'administration Django qui pourrait être mieux personnalisée.

Moderator

  • Tous les éléments de gestion d'évènement sont en place via l'administration Django, ce qui nécessite des droits Admin est n'est pas optimal.

User

  • Les inscriptions ne sont pas en place.

Modèle de données

ImprOrga DiagrammeClasses.jpg

Choix techniques

Technologies utilisées

Django

  • Back en python
  • Front en Html/Yaml

Webservice utilisé

Nous utilisons [Leaflet](https://leafletjs.com/) comme API externe. Il s'agit d'une librairie JavaScript open-source qui utilise elle-même [OpenStreetMap](https://www.openstreetmap.org/) afin de nous permettre d'afficher une carte dynamique sur notre site.

L'intérêt de cette carte et de permettre à un utilisateur de trouver où sera situé un évènement sans avoir besoin de rechercher l'adresse en dehors de l'application.

Architecture de l'application

L'utilisation du framework Django impose la mise en place d'une architecture [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) avec l'ajout de templates réutilisables dans les vues et d'une ORM très performante et adaptable à différentes bases de données. Notre application utilise la base de données SQLite de base proposée par Django de façon à ce qu'il soit simple de faire une transition vers une base de données plus performante plus tard.

Installation

Prérequis :

Il est nécessaire d'avoir installé sur son poste les éléments suivants en amont :

  • Pip
  • Git
  • Python 3.X

Prérequis pour les tests

Certains de nos tests se font avec Selenium, qui permet de reproduire et d'automatiser des interactions utilisateur avec les applications web. Pour installer Selenium il faut exécuter la commande suivante :

 $ sudo pip install selenium

Nos tests Selenium ont été écrits pour des navigateurs Google Chrome, il vous faudra télécharger le driver correspondant et le placer dans le répertoire du projet Impr'Orga. Si vous n'utilisez pas Google Chrome, il vous faudra remplacer la ligne cls.selenium = webdriver.Chrome() du fichier testSelenium.py par le navigateur web de votre choix et télécharger le driver correspondant, dans ce cas-là ce lien pourrait vous être utile

Procédure

Il faut tout d'abord cloner le projet :

 $ git clone https://gitlab.ensimag.fr/lanusseq/impr_orga.git

On va maintenant se placer dans le répertoire de notre projet

 $ cd impr_orga

Par la suite, il faut exécuter un premier script qui va créer la structure de notre base de données et installer 2 packages :

  • Django, le framework web python utilisé pour ce projet
  • Django-Leaflet permettant d'utiliser l'API Leaflet avec Django
 $ ./setup.sh

Enfin, pour remplir notre base de données avec quelques données, il faut exécuter un deuxième script :

 $ ./loadBD.sh

Lancement

Enfin, on va pouvoir lancer le serveur :

 $ python manage.py runserver

Le serveur est alors accessible à l'adresse http://127.0.0.1:8000/ il vous sera alors demandé de vous connecter, si vous avez lancé préalablement loadBD.sh vous pouvez entrer sur le site

  • En tant qu'administrateur
    • Username : ADMIN
    • Password : PASS
  • En tant que simple utilisateur
    • Username : Player1 ou Player2
    • Password : userpassword