• Aucun résultat trouvé

Outschool, plateforme Web pour camps scolaires

N/A
N/A
Protected

Academic year: 2022

Partager "Outschool, plateforme Web pour camps scolaires"

Copied!
60
0
0

Texte intégral

(1)

Outschool, plateforme Web pour camps scolaires

Travail de bachelor 2010

Filière Informatique de gestion

Etudiant-e : Barnabé Pache

Professeur : Florian Doche

(2)

Plateforme Web outschool.ch Préface

Préface

De nos jours, de plus en plus de start-ups voient le jour. Certaines institutions comme la "Buisiness Expérience" de la HES-SO Valais, proposent d'aider les étudiants à monter leur propre entreprise. Cette dernière les aide d'un point de vue financier mais également au niveau du suivi du travail avec des personnes très compétentes qui sont à la disposition des nouveaux entrepreneurs. De plus en plus de start-ups, proposent leurs produits directement sur Internet. Ce moyen de présenter ses produits permet d'avoir beaucoup plus de clients potentiels. Mais une partie très importante de ce système est la sécurité.

En cas de faille de sécurité sur une plateforme Web, tous les avantages d'une entreprise basée sur le Web peuvent se transformer en inconvénients et ainsi forcer la fermeture de cette dernière. C'est pourquoi l'aspect sécurité est très important sur Internet.

Résumé

Le projet outschool.ch est une start-up aidée par "Buisiness Expérience" qui propose aux différentes personnes tel que des professeurs de les aider à organiser des camps scolaires. En date du 17 mai 2010, l'entreprise outschool ne dispose pas encore de plateforme Web. Toutes demandes faites par des personnes désirant organiser des camps scolaires, sont traitées de manière manuelle.

L'idée de ce projet et d'informatiser au maximum le processus de réservation afin de diminuer la masse de travail manuel de l'équipe outschool. Une version 1.0 a été mise en production au début du mois de juin 2010. Mais cette version ne fait que de proposer un formulaire qui envoie un courriel à l'équipe d'outschool avec les besoins nécessaires. Le traitement se fait ensuite de manière manuelle. La version 1.1 qui est développée dans le cadre de ce travail de bachelor offre les différentes fonctionnalités :

Possibilité à une personne désirant mettre à disposition des utilisateurs de la plateforme faisant une réservation un bien ou un service.

Pour ces personnes-là, un outil de gestion de leurs biens ou services sera également mise en place sous forme de gadget Windows.

Un formulaire dynamique de réservation donnera la possibilité à l'utilisateur de choisir lui-même les biens ou les services désirés parmi une liste affichée suivant différents paramètres.

Toutes les réservations, composées de différents biens ou services ainsi que les coordonnées de contact, seront enregistrées dans une base de données.

Cette plateforme permettra aussi l'intégration des biens ou de services depuis des bases de données externes.

(3)

Plateforme Web outschool.ch Structure du document

Structure du document

Ci-dessous se trouve une table des matières qui permet d'avoir un aperçu de toutes les différentes sections de ce document.

La section "Introduction" permet de bien comprendre le contexte du projet. Les différents objectifs de ce projet sont également diffusés dans cette partie ainsi que les motivations personnelles.

La section "Etat de l'art" permet de comprendre les différents choix technologiques qui ont été fait dans le cadre de ce projet.

La section "Le projet outschool.ch" explique de manière détaillée le fonctionnement de l'application ainsi que les fonctionnalités déjà existantes. Un aperçu de l'architecture et du diagramme de classes fait également partie de cette section.

Les sections "Développement de la plateforme Web" et "Développement du gadget Windows" expliquent, à l'aide de captures d'écran de l'application, le fonctionnement général de la plateforme. Les détails techniques de la mise en place de ces applications sont également détaillés à cet endroit.

La section "Problèmes rencontrés" liste tous les problèmes ainsi que leurs solutions qui ont été rencontrés dans le cadre de ce projet.

La section "Améliorations" permet d'avoir un aperçu des possibilités de développement futur de cette plateforme.

La section "Gestion de projet" permet de prendre connaissance des fonctionnalités réalisées ou pas par rapport au cahier des charges fixé en début de projet. Une explication générale sur le déroulement du projet est également faite dans cette partie.

La section "Conclusion" tire un bilan final du projet mais également un bilan personnel de ce que m'a apporté cet exercice.

Remerciements

Je tiens à remercier les différentes personnes qui m'ont aidé et suivi dans l'accomplissement de ce travail. Tout d'abord, Monsieur Florian Doche, professeur responsable du projet, qui a été disponible et à mon écoute durant tout ce projet. Il m'a également donné beaucoup de conseils au niveau de l'ergonomie des applications.

D'autre part, je tiens à remercier Monsieur Jean-Blaise Rey, développeur de la version 1.0 de la plateforme et qui m'a persuadé d'utiliser des technologies que je ne connaissais pas du tout.

Je remercie également toute l'équipe d'outschool, composée de Messieurs Arnaud Cotter, Benoit Goncerut et Nicolas Ansaldo, pour la confiance qu'ils m'ont accordée et la rapidité de leurs réponses.

Finalement, je remercie les membres de ma famille qui ont relu ce document et qui

(4)

Plateforme Web outschool.ch Déclaration sur l'honneur

Déclaration sur l'honneur

"Je déclare, par ce document, que j'ai effectué le travail de bachelor ci-annexé seul, sans autre aide que celles dûment signalées dans les références, et que je n'ai utilisé que les sources expressément mentionnées. Je ne donnerai aucune copie de ce rapport à un tiers sans l'autorisation conjointe du RF et du professeur chargé du suivi du travail de bachelor, y compris au partenaire de recherche appliquée avec lequel j'ai collaboré, à l'exception des personnes qui m'ont fourni les principales informations nécessaires à la rédaction de ce travail."

Pache Barnabé

(5)

Plateforme Web outschool.ch Table des matières

Table des matières

1 Introduction... 1

1.1 Contexte général ... 1

1.2 Descriptif du projet... 1

1.3 Motivations personnelles ... 2

1.4 Objectifs... 3

2 Etat de l'art ... 4

2.1 Les langages de programmation Web ... 4

2.1.1 Introduction ... 4

2.1.2 Les langages de programmation Web dynamiques... 5

2.1.3 Résultats... 7

2.1.4 Décisions prises pour le projet ... 8

2.2 Les Web services ... 8

2.2.1 Introduction ... 8

2.2.2 Les outils existant pour le Framework Django ... 10

2.2.3 Les langages d’échange de données... 10

2.2.4 Résultats... 12

2.2.5 Décisions prises pour le projet ... 12

3 Le projet outschool.ch ... 13

3.1 Description détaillée du projet ... 13

3.2 Fonctionnalités déjà existantes ... 14

3.3 Architecture ... 15

3.4 Diagramme de classes ... 16

4 Développement de la plateforme Web... 17

4.1 Fonctionnalités ... 17

4.1.1 Recherche multicritère de packages ... 17

4.1.2 Formulaire d’inscription pour les partenaires et prestataires ... 17

4.1.3 Formulaire de réservation ... 20

4.1.4 Zone d’administration ... 24

4.1.5 Le Web service... 24

4.2 Technologies utilisées ... 25

4.2.1 Framework Django ... 25

4.2.2 Environnement de développement... 26

4.2.3 SGBD... 27

4.2.4 Serveur Web... 27

5 Développement du gadget Windows 7... 28

5.1 Qu’est-ce qu’un gadget ? ... 28

5.2 Fonctionnalités ... 28

5.2.1 Vérification de l’état du serveur ... 28

5.2.2 Authentification ... 29

5.2.3 Visualisation des prochaines réservations ... 29

5.2.4 Affichage dynamique de nouvelles réservations ... 29

5.2.5 Gestion des réservations... 30

5.2.6 Gestion des biens/services ... 31

5.3 Ajouter / modifier un bien ou un service ... 31

5.4 Gestion des disponibilités... 32

5.5 Technologies utilisées ... 33

(6)

Plateforme Web outschool.ch Table des matières

5.5.2 Javascript avec l’objet XMLHTTPRequest ... 34

5.5.3 Librairie Jquery ... 35

6 Problèmes rencontrés... 36

6.1 Délai du cahier des charges... 36

6.2 Nouvelles technologies ... 36

6.2.1 Nouveau langage ... 36

6.2.2 Nouvel environnement de développement... 36

6.2.3 API pour les requêtes SQL... 36

6.2.4 Configuration de l'envoi d'email... 36

6.2.5 Récupération du projet existant... 36

6.3 Communication avec groups.ch ... 37

6.4 Communication entre les applications... 37

7 Améliorations... 38

8 Gestion de projet ... 39

8.1 Technique de gestion de projet ... 39

8.2 Fonctionnalités réalisées ... 39

8.3 Ecart de temps entre prévu et réalisé ... 40

8.4 Déroulement du projet ... 40

8.5 Nombre d’heures réalisées ... 41

9 Conclusion ... 42

9.1 Généralités sur le projet ... 42

9.2 D'un point de vue personnel... 42

10 Tables des illustrations... 43

10.1 Table des schémas ... 43

10.2 Table des extraits de code ... 43

10.3 Table des écrans ... 43

11 Sources... 44 12 Annexes ... I 12.1 Cahier des charges ... I 12.1.1 Architecture ... I 12.1.2 Fonctionnalités sur l'existant ... I 12.1.3 Fonctionnalités pour l'équipe outschool.ch ... I 12.1.4 Fonctionnalités concernant les prestataires de services... II 12.1.5 Fonctionnalités optionnelles ... II 12.2 Diagramme de Use-Case ... III 12.3 Comment reprendre le projet ... V 12.3.1 Installer Python ... V 12.3.2 Installer django ... V 12.3.3 Installer les composants nécessaires... V 12.3.4 Installer MySQL ... V 12.3.5 Installer la base de données ... V 12.3.6 Installation du plugin eclipse "Py-Dev" ... VI 12.3.7 Ouvrir le projet Django... VI 12.4 Contenu du CD-ROM ... VII 12.5 Détail des heures de travail... VII

(7)

Plateforme Web outschool.ch Introduction

1 Introduction

1.1 Contexte général

Ce travail a été réalisé dans la cadre de la formation d’informaticien de gestion à la HES-SO Valais/Wallis pour l’obtention du bachelor en informatique de gestion. Il doit être réalisé en 360 heures minimum entre le 17 mai 2010 et le 16 août 2010. Etant donné que le 6ème semestre de la formation s’est terminé le 2 juillet 2010, l’activité des 6 premières semaines s’élève à environ 50%.

Après avoir choisi six sujets, exposés par ordre de préférence, parmi ceux présents dans une liste faite par l'école, chaque élève a reçu son thème définitif pour l’élaboration de son travail de bachelor. Dans le cas de ce dossier, le thème est le suivant : "outschool.ch, la plateforme Web pour faciliter l’organisation de camps scolaires". Ce thème a été placé en choix numéro 1 par l'auteur de ce document lors de l’affectation définitive des thèmes aux élèves, ce qui est une motivation supplémentaire pour mener à bien ce travail.

Cette plateforme est une entreprise fondée via le programme "Business Expérience".

Ce dernier offre la possibilité aux étudiants de la HES-SO Valais/Wallis de se lancer dans la conception d’une start-up en les aidant financièrement. Cette entreprise est composée de trois étudiants de la filière Tourisme. Le but de cette plateforme est de faciliter l'organisation de camps scolaires. L'idée est de fournir aux établissements scolaires une plateforme qui permettra de coordonner les différents partenaires et étapes pour l'organisation de camps sportifs. Cette plateforme est en partenariat avec groups.ch qui propose les logements pour groupes dans toute la Suisse. De nombreux autres partenaires potentiels pourront être amenés à contribuer.

1.2 Descriptif du projet

Suite à une discussion une semaine avant le début du travail avec le professeur responsable, le but principal du travail était de réaliser la plateforme Web de A à Z. A ce moment-là, aucune restriction n’était exigée concernant la technologie à utiliser pour la réalisation de cette plateforme. Une réflexion sur la future technologie utilisée avait été faite en préambule du projet.

Le premier jour officiel du travail de bachelor, une séance de démarrage regroupant l’équipe outschool, le développeur de la plateforme et le professeur responsable s’est tenue afin de fixer les besoins et les fonctionnalités futures de la plateforme. Lors de cette séance, une information peu réjouissante est parvenue : une entreprise externe a été mandatée pour réaliser la version 1.0 de la plateforme !

Cette information a tout changé concernant la réalisation de ce projet. Il ne s’agit plus maintenant de réaliser la plateforme de A à Z, mais de réaliser la version 1.1 qui est la suite logique de la version 1.0. Dès lors, il a fallu changer les objectifs de la plateforme pour la réalisation du travail de bachelor. Après discussion avec l’équipe d’outschool, des fonctionnalités supplémentaires devront être développées afin d’apporter une plus-value à la plateforme. Les fonctionnalités désirées par l’équipe d’outschool sont les suivantes :

Création d’un gadget Windows 7 pour la gestion des biens

Intégration de la base de données de groups.ch (plateforme Web qui regroupe des hébergements pour groupe dans toute la Suisse).

Synchronisation des bases de données Jeunesse & Sport des divers cantons

(8)

Plateforme Web outschool.ch Introduction

A la suite de cette demande, un cahier des charges a été établi. Seuls les deux premiers points de cette liste ont été intégrés dans ce cahier des charges.

L’enjeu technique de ce travail est de trouver le meilleur moyen de communiquer entre l’application Web et le gadget Windows. Un autre objectif de ce travail est l’intégration des différents acteurs de cette plateforme. Après réflexion, quatre grands acteurs utiliseront la plateforme :

Les personnes désirant réserver un camp complet.

L’équipe outschool.ch Les partenaires

Les prestataires de services individuels

Les partenaires et les prestataires de services individuels sont deux acteurs qui alimenteront la plateforme avec leurs biens ou leurs services afin qu’une personne désirant réserver un camp puisse choisir les produits de ces deux derniers.

La principale différence entre les partenaires et les prestataires de services individuels est que les partenaires mettent à disposition de la plateforme outschool, un accès direct à leur base de données. Par la suite, les données seront affichées directement sur la plateforme outschool.ch en interrogeant la base de données distante du partenaire. Cette solution permet également de pouvoir écrire directement dans la base de données et effectuer une réservation directement sur le système distant.

Quant aux prestataires de services individuels, ce sont des personnes comme tout un chacun qui possèdent un bien et qui désirent le louer dans le cadre d’une réservation sur la plateforme d’outschool.

De plus, suite à l’annonce de la conception de la version 1.0 de la plateforme, il a également fallu se renseigner sur les différentes technologies utilisées dans la conception de cette version 1.0 de la plateforme. Le langage de programmation utilisé pour la réalisation de la première version de la plateforme est du "Python". Tout cela basé sur le framework "Django 1.1". Le système de gestion de base de données (SGBD) est basé sur MySQL.

1.3 Motivations personnelles

Possédant déjà de bonnes connaissances dans le développement d'applications Web, je suis très motivé pour mener à terme ce projet et ainsi participer à l'intégration réussie de cette entreprise dans le monde du Web.

Des challenges supplémentaires survenus en début de projet, comme les restrictions technologiques, sont d'autant plus motivants car il n'y a aucune certitude de pouvoir réaliser certaines tâches dans leur intégralité. Tout cela est dû à la méconnaissance du langage.

De plus, les résultats des examens de modules du sixième semestre sont tombés à la mi-juillet. J'ai alors appris que tous les modules ont été passés avec succès. Tout cela signifie que ce travail de bachelor est la dernière chose à valider avant l'obtention du titre délivré à la fin de la formation : "bachelor en informatique de gestion". Ceci représente une motivation supplémentaire car ce diplôme me permettra de rentrer dans le monde du travail et ainsi commencer ma carrière d'informaticien.

(9)

Plateforme Web outschool.ch Introduction

1.4 Objectifs

Les objectifs principaux de ce travail sont :

Gérer de manière autonome un projet informatique

Apprendre du langage Python et un nouveau framework de développement Web Django.

Récupérer et comprendre un projet existant Prendre les bonnes décisions technologiques

Terminer dans les temps avec toutes les fonctionnalités à réalisées.

(10)

Plateforme Web outschool.ch Etat de l'art

2 Etat de l'art

Un état de l’art est nécessaire pour la réalisation de ce projet. Il permet de trouver des solutions technologiques et ainsi de définir :

Le langage de programmation

Malgré le fait que la version 1.0 du site internet a été réalisée avec le framework Django et le langage Python, il a été nécessaire de réfléchir avec quel langage la version 1.1 sera développée parmi tous les langages présents sur le marché.

Le type de Web services

Cette analyse permettra dans un premier temps de choisir entre les deux types de Web services (REST ou WS-*). Dans un second temps, il permettra de définir quel outil/composant fourni par le langage de développement choisi au point ci-dessus sera le plus adapté à la situation du projet.

Le format des données

Cette analyse permettra de définir le meilleur langage qui sera utilisé pour l’échange des données entre la base de données de la plateforme Web et le gadget Windows.

2.1 Les langages de programmation Web

2.1.1 Introduction

Parmi tous les sites internet présents sur la toile, on peut clairement en différencier deux types :

Les sites Web statiques

Ces pages sont généralement créées à l’aide du langage HTML et/ou Javascript. Le contenu de ces pages est dit "statique" car toutes les informations se trouvent directement dans la page elle-même. On parle de langage exécuté coté client. Cela signifie que le client (navigateur Web) interroge le serveur et ce dernier renvoie la ressource demandée au client.

Cette ressource est analysée et interprétée par le navigateur Web du client.

En terme de sécurité, cette méthode et assez vulnérable.

Serveur web Client

Le client demande une page web

Le serveur renvoie la page demandée

Schéma 1 - Sites Web statiques

Les sites Web dynamiques

Il existe plusieurs langages de programmation permettant de créer des sites Web dynamiques. Contrairement aux sites statiques, le contenu de sites dynamiques est généré, comme son nom le dit, "dynamiquement". Cela

(11)

Plateforme Web outschool.ch Etat de l'art

signifie que les résultats affichés sur la même page peuvent différer selon le choix de l’utilisateur ou les choix du programme lui-même. Ces informations sont généralement stockées dans des systèmes de gestion de bases de données appelés SGBD. Il existe plusieurs SGBD tel que MySQL, SQL Server ou encore Oracle. Mais ce document ne va pas s’étendre en détail sur ces différents SGBD. On parle alors de langage exécuté coté serveur. Cela signifie que c’est le serveur qui analyse la requête du client, ensuite il exécute le code dynamique (PHP par exemple) et lui renvoie seulement le résultat sous forme de fichier contenant seulement du HTML. Le code du langage dynamique n’apparaît donc pas chez le client.

Serveur web Client

Le client demande une page web (php, aspx ou autre)

Le serveur renvoie la page demandée avec le code exécuté

(HTML)

Le serveur exécute le script

Schéma 2 - Sites Web dynamiques

Ce sont bien sur les langages dynamiques qui sont les plus intéressants car ils offrent beaucoup plus de possibilités dans le traitement et la manipulation de données que le HTML et les autres langages statiques.

2.1.2 Les langages de programmation Web dynamiques

Ci-dessous se trouve une liste plus ou moins exhaustive des différents langages de programmation dynamiques. Pour chacun des langages, un fichier récapitulatif a été faite. On peut remarquer que deux produits sur six sont payants tandis que les autres sont totalement gratuits et certains sont même open source1.

PHP (Hypertext Preprocessor)

Selon les statistiques fournies par TIOBE2 au mois d’août 2010, le PHP serait le langage le plus utilisé sur la toile. De plus, il possède des Content Management System, également appelé CMS, très connus et très performants tel que "Joomla" ou encore "Typo3".

PHP

Nom complet Hypertext Preprocessor

Société The PHP group

Année de parution 1994

Licence Gratuit

Version actuelle 5.3

Framework Zend – cakePHP – Symfony

CMS Joomla – typo3

Site internet http://www.php.net

1

(12)

Plateforme Web outschool.ch Etat de l'art

PYTHON

Ce langage, tout comme le JSP, est un des langages Web les plus récents.

Avec un framework très puissant surnommé "Django", Python a fait une excellente entrée dans le monde du développement Web ces dernières années. Il est également intéressant de savoir que Google utilise ce langage pour une partie de ses développements dans différentes applications

PYTHON

Auteur Guido van Rossum

Société Python Software Foundation Année de parution 1990

Licence Gratuit

Version actuelle 3.1

Framework Django – Pylons

CMS Django-cms

Site internet http://www.Python.org

PERL

Ce langage est basé sur le langage "C" et y reprend ses principales fonctionnalités. Ce langage est particulièrement apprécié dans la manipulation et le traitement des données de fichiers texte grâce à son système de gestion des expressions régulières très performant.

PERL

Auteur Larry Wall

Société The PHP Foundation

Année de parution 1987

Licence Gratuit

Version actuelle 5.12

Framework Catalyst – Gantry Site internet http://www.perl.org

JSP (Java Server Pages)

Il faut savoir que le JSP n’est pas réellement un langage de programmation mais un framework Web. Comme son nom l’indique, le JSP est basé sur le langage "Java". Les pages jsp sont compilées pour se transformer en servlets java.

JAVA – JSP

Nom complet Java Server Pages

Société Sun Microsystem

Licence Gratuit

Version actuelle 2

Framework Struts – WebWork

Site internet http://java.sun.com/products/jsp/

(13)

Plateforme Web outschool.ch Etat de l'art

ASP.NET (Active Server Pages)

Ce langage est le successeur de l’ASP 3.0 qui est l’ancien langage de programmation Web proposé par Microsoft. En général, le code dynamique utilisé est le "C#". Mais les applications Web peuvent également être écrites en Vbscript. Grâce au framework ".NET" très ergonomique, il est très aisé de créer des pages Web. De bonnes connaissances du "C#" ou du "Vbscript"

sont conseillées.

ASP.NET

Nom complet Active Server Page

Société Microsoft

Année de parution 2002

Licence CHF 1'800 (édition standard) CHF 15'000 (édition entreprise) Version actuelle 4

Framework .NET 4.0 – DotNetNuke Site internet http://www.asp.net

COLDFUSION

Ce langage est la solution proposée par Adobe pour la réalisation d’application Web. Ce langage est très proche du "HTML" contrairement à la plupart des autres langages.

COLDFUSION

Auteur Jérémy Allaire

Société Adobe

Année de parution 1995

Licence CHF 1'300 (édition standard) CHF 7'500 (édition entreprise) Version actuelle 9

Framework Struts – WebWork

Site internet http://www.adobe.com/products/coldfusion

2.1.3 Résultats

On peut dire que tous les langages de programmation Web dynamiques se valent. La concurrence entre eux est très rude, même si on peut dire que le PHP est le plus utilisé de nos jours. Ils possèdent tous les mêmes fonctionnalités de base. La seule différence peut se faire du côté des frameworks qui sont peut-être plus ergonomiques et plus faciles d’utilisation du côté des produits payants. De plus, ces derniers offrent plus de fonctionnalité déjà existante ce qui permet de gagner beaucoup de temps pour la réalisation d’une plateforme Web.

Comme exemple, on peut prendre l’intégration d’un calendrier dans une page Web.

En ASP.NET cette fonctionnalité est réalisée à l’aide d’un simple drag-and-drop à l’endroit désiré sur la page. Dans le cas des langages gratuits tel que PHP, il faut

(14)

Plateforme Web outschool.ch Etat de l'art

intégrer d’autres libraires / scripts tel que Jquery, ce qui prend beaucoup plus de temps qu’avec un drag-and-drop3 sous Visual Studio.

L’avantages des produits gratuits est certainement du coté de la communauté en ligne qui est très active. Un problème peut être résolu en moins d’une demi-journée.

De plus, la plupart d’entre eux sont open source, ce qui permet de pouvoir s’attaquer directement à la structure du langage et modifier certaines fonctionnalités / composants à sa guise.

2.1.4 Décisions prises pour le projet

Etant donné que le serveur sur lequel est hébergé actuellement la version 1.0 de la plateforme (http://djangohosting.ch/) et que la future plateforme devra également être hébergée chez ce dernier (pour des raisons de contrat), deux langages de programmation Web étaient à disposition :

PHP

Python (framework Django)

Le dilemme qui se posait était le suivant :

Recommencer le site à zéro en utilisant du PHP avec la reprise du design existant. Cette solution semblait bien car je possède beaucoup plus de connaissances en PHP. Je développe depuis 3 ans, à côté de mes études, en PHP dans une entreprise qui réalise des sites internet. Mais d’un autre côté, il faut quand même un certain temps pour reprendre le travail effectué sur la version 1.0

Soit continuer sur les bases du projet existant sur du Python et le Framework Django. La méconnaissance de ce nouveau langage a installé un certain doute pendant plusieurs jours.

Je me suis posé la question suivante : "Est-ce que le temps passé à apprendre le langage Python sera suffisant pour refaire toute la plateforme existante en PHP ?" Après réflexion, je me suis dit qu’apprendre un nouveau langage de programmation serait un plus pour moi et que refaire ce qui existe déjà dans un autre langage juste pour que le travail soit plus facile pour moi était une mauvaise idée.

Au final, la décision d’apprendre ce nouveau langage qu’est le Python a été prise.

Ceci augmente la difficulté de ma tâche mais cela représente un énorme challenge qui mérite d’être relevé.

2.2 Les Web services

2.2.1 Introduction

Un Web service est une application internet permettant de communiquer et d’échanger des données entre plusieurs applications. Il est en général composé de plusieurs fonctions. Chacune d’entre elles possède sa propre fonctionnalité de fournir un certain type de données. Les services Web permettent également d’avoir accès en temps réel aux données disponibles sur d’autres systèmes d’informations et d’interagir avec elles sans intervention de l’être humain.

3 Terme anglais pour désigné le glisser-déplacer. Cette pratique permet de prendre un élément et de la déplacer à l'endroit désiré.

(15)

Plateforme Web outschool.ch Etat de l'art

Un Web service peut être de type public ou de type privé. Cela signifie que certaines données accessibles depuis l’extérieur peuvent bien sûr être protégées par un système d’authentification.

Deux grands types de Web service existent actuellement dans le monde du Web : Type REST (Representational state transfer)

Ce type de Web service propose toutes ses fonctionnalités en tant que ressource (appelée URI) accessible via le protocole HTTP. Il est donc basé sur l’architecture de l’internet.

Le protocole http offre quatre principales méthodes pour interagir avec ces ressources disponibles sur un Web service de type REST

o GET permet de lire une / des ressource(s) o POST permet d’ajouter une ressource o PUT permet de modifier une ressource o DELETE permet de supprimer une ressource Type WS

Ce type de Web service propose exactement les mêmes fonctionnalités mais cette fois non pas sous forme de ressource mais sous forme d’exécutables à distance. Ce système utilise les standards SOAP (Simple Object Access Protocol) employés pour l’échange des données et WSDL (Web Service Description Language) pour tout ce qui concerne la description du service en lui-même. On entend par là, la description des fonctionnalités, celle des fonctions disponibles, celle des protocoles utilisés et également celle du type de données. Il est basé sur une architecture de type SOA (System Oriented Architecture).

En résumé, les deux types de Web service proposent deux architectures totalement différentes. L’un est basé sur une architecture Web et l’autre sur une architecture SOA. Étant donné que le Web est plus universel, moins de problèmes sont rencontrés avec des Web services de type REST dans la capacité de s’intégrer et d’opérer avec plusieurs systèmes d’informations hétérogènes.

(16)

Plateforme Web outschool.ch Etat de l'art

2.2.2 Les outils existant pour le Framework Django

Il existe deux composants Django permettant la création de Web service. Il s’agit de Django-piston et de Django-rest-interface. Ces deux composants proposent la création de Web service de type REST. Le tableau ci-dessous démontre les différentes fonctionnalités que propose chacun des composants.

Fonctionnalité Piston Rest-Interface

Intégration dans des projets django Ressources basées sur des objets Ressources personnalisables Création de Web service publics

Création de Web service privés Authentification HTML Authentification avec Oauth4

Langage de manipulation de données XML

JSON YAML HATEOAS

Génération de la documentation

Difficultés de mise en place 2/5 4/5

Restriction sur les méthodes HTTP

2.2.3 Les langages d’échange de données

Il existe plusieurs sortes de langage permettant l’échange de données entre les systèmes d’informations. Le plus connu d’entre eux est le XML. Mais d’autres langages tels que le JSON ou le YAML sont également présents sur le marché. Tous ces langages sont utilisés pour manipuler tous types de données uni codes.

XML (Extensible Markup Language) Les principaux avantages :

o Il possède une meilleure structure que les autres langages o Le code est facile à comprendre

o Tous les jeux de caractères sont supportés (uft-8 ou autre) o Il est reconnu et utilisé par tous les langages de programmation

4 Protocole libre permettant une authentification à une API (http://fr.wikipedia.org/wiki/OAuth)

(17)

Plateforme Web outschool.ch Etat de l'art

Le principal inconvénient :

o Un fichier XML peut rapidement devenir très lourd par rapport à d’autres formats binaires ou des formats sous forme de tableaux comme le JSON

Extrait de code 1 - Exemple XML

JSON (Javascript Object Notation) Les principaux avantages

o Il est facile à utiliser en Javascript car il possède la structure d’objets Javascript

o Il est reconnu et utilisé par de plus en plus de langages de programmation

Le principal inconvénient

o Pour travailler avec un document, l’utilisateur est obligé de connaître la structure de l’objet avec lequel il travaille

Extrait de code 2 - Exemple JSON

YAML (Ain’t Markup Language) Les principaux avantages

o Il est très léger

o Il est très lisible, car aucune balise n’est utilisée o Il est possible d’y intégrer de la syntaxe JSON

(18)

Plateforme Web outschool.ch Etat de l'art

Les principaux inconvénients

o Sa structure est basée sur l’indentation donc très complexe

o Pas beaucoup de langages de programmation sont munis de parseur YAML.

Extrait de code 3 - Exemple YAML

2.2.4 Résultats

Au niveau des composants django pour la création de Web services, on peut en déduire, d’après le tableau ci-dessus, que django-piston est beaucoup plus complet et propose beaucoup plus de fonctionnalités que son concurrent direct django-rest-interface. Il propose également plus de langages permettant le transfert de données. Mais les fonctionnalités de base d’un Web service sont présentes chez les deux composants.

Au niveau des langages d’échanges de données, les principaux acteurs de ce domaine sont le XML et le JSON. Au vu des avantages cités ci-dessus, le XML offre beaucoup plus de solutions que ses concurrents. L’utilisation de l’un ou l’autre de ces langages dépend souvent des technologies utilisées dans un projet.

2.2.5 Décisions prises pour le projet

Après plusieurs tests effectués dans le cadre de ce travail, il est totalement juste d’affirmer que django-piston est beaucoup plus difficile à mettre en place et à utiliser.

La génération de la documentation n'a jamais fonctionnée dans le cadre de ce projet.

Cette dernière fonction était un des points forts de django-piston. N’arrivant pas à la faire fonctionner, j’ai donc décidé d’utiliser django-rest-interface. Les fonctionnalités de ce composant suffisent entièrement à la réalisation de ce projet.

Etant donné que le composant utilisé, soit django-rest-interface, ne propose que le XML et le JSON comme formats d’échanges de données, des tests ont été réalisés avec ces deux langages. Le test de lecture du XML en Javascript a été très satisfaisant et très rapide. Cela est certainement dû à de bonnes connaissances de ce langage. Comme je ne connaissais pas du tout le JSON, l’apprentissage a été plus difficile et moins convaincant avec quelques problèmes non résolus. Malgré plusieurs tutoriaux suivis sur le net, je n’ai même pas réussi à lire un objet JSON avec JavaScript et la fonction "eval()" qui est prévue à cet effet ! Pour éviter de passer encore des heures sur ce problème, mon choix c’est rapidement porté sur le XML.

(19)

Plateforme Web outschool.ch Le projet outschool.ch

3 Le projet outschool.ch

3.1 Description détaillée du projet

Pour rappel, la plateforme outschool.ch doit permettre de faciliter l’organisation de camps scolaires aux professeurs d’école de la Suisse entière. C’est, en résumé, un site de réservation de différents biens ou services proposés par des partenaires ou des prestataires de services individuels. Ces biens et services sont répartis dans différentes catégories telles que : Hébergement, Moniteur, Transport et Matériel.

Un partenaire est une "entreprise Web" qui propose plusieurs biens d’une catégorie. Par exemple groups.ch, qui propose des centaines d’hébergements situés dans toute la Suisse.

Un prestataire de services individuels est un particulier qui désire mettre à disposition des personnes organisant des camps un bien qui lui appartient.

Par exemple, une personne possédant une grande maison qui permettrait de loger une vingtaine de personnes pourrait être utilisée par un groupe.

Il est très important pour la suite de la lecture de bien comprendre la différence entre ces deux types d’acteurs.

Concernant l’intégration des partenaires, il a fallu réfléchir sur une solution qui permette l’intégration des données de la base de données des partenaires directement sur la plateforme outschool.ch. Car groups.ch avait demandé à ne pas être impliqué dans cette intégration au niveau de ses employés et en particulier des informaticiens.

Avec ces différentes restrictions, la meilleure solution qui est ressortie est la suivante : le partenaire devra mettre à disposition un accès à sa base de données en production. Par la suite, un outil de mapping sera utilisé pour mettre en relation la base de données du partenaire avec celle d’outschool et finalement pouvoir intégrer facilement les données du partenaire sur la plateforme outschool.ch. Avec ce système, groups.ch n’a besoin que de 3 minutes pour s’inscrire sur la plateforme et renseigner les informations nécessaires à la connexion à distance sur sa base de données (URL, type de base de données, utilisateur et mot de passe).

Concernant l’intégration des prestataires de services individuels, un outil de gestion est donc nécessaire afin que ces derniers puissent ajouter, modifier ou supprimer un bien leur appartenant. Une autre fonctionnalité de cet outil est d’avoir un aperçu visuel des occupations d’un bien sur le calendrier. Sur proposition de l’équipe outschool, un gadget Windows sera utilisé comme outils de gestion. Cette idée peut paraître un peu bizarre mais finalement cet outil est intéressant car l’utilisateur n’a pas besoin de se connecter via un navigateur Web sur une plateforme, la gestion se fait directement depuis son bureau Windows. De plus le gadget permet d’obtenir des informations en temps réel ce qui peut être utile pour afficher les nouvelles réservations sur son bien par exemple.

La grande force de la plateforme est qu’elle est générique, cela signifie qu’une fois le développement de cette plateforme terminé, aucune intervention (ou presque) de la part d’un développeur Web n’est nécessaire pour ajouter l’un ou l’autre des éléments présents sur la plateforme.

(20)

Plateforme Web outschool.ch Le projet outschool.ch

3.2 Fonctionnalités déjà existantes

Une version 1.0 du site a été développée et mise en production les 2 juin 2010. Le code source du site a donc été remis peu après cette date (3 semaines après le début du travail de bachelor). La plateforme contenait à ce moment-là les fonctionnalités suivantes :

Un module de news Un formulaire de contact

Réservation d’un package "all-inclusive"

Réservation d’un package personnalisé

Après l’analyse du code reçu au début du mois de juin 2010, le module de news, le formulaire de contact et la mise en place du CMS (django-cms) étant fonctionnel, ces éléments ne vont pas être modifiés et gardés tels quels pour ce projet. Au niveau de la réservation de package "all-inclusive", peu de changements vont être réalisés car toutes les informations sont déjà stockées dans la base de données. Par contre, au niveau de la réservation personnalisée, tout est à refaire. A ce moment-là le système ne sauve rien dans la base de données, il ne fait qu'envoyer un mail avec les diverses informations d’un formulaire "en dur" concernant la réservation souhaitée par l’utilisateur. Le traitement se fait ensuite manuellement pas l’équipe d’outschool.

Ecran 1 - Formulaire de réservation (version 1.0)

(21)

Plateforme Web outschool.ch Le projet outschool.ch

3.3 Architecture

Ci-dessous se trouve une représentation visuelle qui liste les différents éléments mis en place pour la réalisation du projet outschool. Grâce à l'outil de mapping objet relationnel, la couche de données contient les classes métiers. Pour le Web service, des collections faisant appel aux classes métiers sont utilisées pour manipuler les enregistrements provenant de la base de données. Concernant l'accès aux bases de données externes, les connexions sont ouvertes au moment où la plateforme fait appel aux données, c'est-à-dire dans le formulaire de réservation.

Base de données outschool .ch Base de données groups .ch

Site internet www.outschool.ch

Widget windows 7

Couche d’accès aux données Base de données partenaires

Webservice public /privé

Formulaires HTML Classes métiers

Collection (webservice )

Pays Bien ...

Private Public

Schéma 3 - Architecture de l'application

(22)

Plateforme Web outschool.ch Le projet outschool.ch

3.4 Diagramme de classes

Comme cité dans la description ci-dessus, l’application se veut d’être générique. Ce diagramme de classe permet d’être partiellement générique surtout au niveau des prestataires de service et de leurs biens. On remarque que la classe "Bien" ne contient pas de champs car tous les champs sont générés automatiquement avec la classe "Champs". Vous pouvez voir sur le schéma ci-dessous toutes les classes, les variables et les relations entre les classes qui sont utilisées pour la plateforme.

DetailPackage Date_debut : Date

Date_fin : Date ValeurChamps Valeur : String

BienPartenaire Table : String Champs : String Valeur : String For_display : Boolean

TypeChamps Type_champs DetailReservation

Date_debut : Date Date_fin : Date Valide : Boolean Statut

Statut : String 0..* 11 0..*

TypePrestation TypePrestation : String TypeBaseDonnees

Type : String Engine : String

TypePartenaire Type_partenaire : String

LinkTable Table_one : String Champs_one : String Table_two : String Champs_two : String Pays

Code : String Fr : String En : String

DisponibiliteBien Date_debut : Date Date_fin : Date Package

Nom : String Description : String Image : String Prix : Double

Champs Nom_champs : String Obligatoire : Boolean For_reservation : Boolean Is_prix : Boolean 1

1..*

1 1..*

1..*

1

1..*

1 Partenaire

Societe : String Nom : String Prenom : String Adresse : String Telephone : String Fax : String Email : String Password : String Actif : Boolean

0..*

1 0..*

1 0..*

0..1 0..*

0..1

1..*

1..*

1..*

1..*

1 0..*

1 0..*

1 0..*

1 0..*

Reservation Societe : String Nom : String Prenom : String Adresse : String Date_debut : Date Date_fin : Date Nbre_eleve : Integer Nbre_accompagnant : Integer Telephone : String Fax : String Email : String

0..*

0

0..*

0

Bien

1 1..*

1 1..*

1..*

1..*

1..*

1..* 1..*

1..*

1..*

1..*

1 1..*

1 1..*

1..*

0..*

1..*

0..*

Localite NPA : Integer Localite : String

0..*

1 0..*

1 0..*

1 0..*

1

1 0..*

1 0..*

1 0..*

1 0..*

Schéma 4 - Diagramme de classes

(23)

Plateforme Web outschool.ch Développement de la plateforme Web

4 Développement de la plateforme Web

4.1 Fonctionnalités

4.1.1 Recherche multicritère de packages

Cette fonctionnalité permettra à l’utilisateur final de filtrer les résultats des packages

"all-inclusive". Cette fonctionnalité a été demandée par l’équipe outschool car elle n’a pas été réalisée pour la version 1 de la plateforme. C’est d’ailleurs la seule modification qui a eu lieu sur la partie des packages "all-inclusive". Il a fallu bien analyser et comprendre le code existant pour connaître son fonctionnement et ajouter le code nécessaire aux bons endroits afin d’obtenir le résultat ci-dessous. A noter qu’aucun champ n’est obligatoire et que si l’utilisateur envoie le formulaire vide, le système retournera tous les packages existants.

Le filtre peut être réalisé sur les critères suivants : Le nombre de personnes

Le prix en francs suisses par personne

Savoir si les différents services sont inclus dans le package o Transport

o Cuisine o Moniteur o Equipement

Ecran 2 - Formulaire de recherche multicritère

4.1.2 Formulaire d’inscription pour les partenaires et prestataires

Afin que les différents acteurs du contenu de la plateforme, soit les partenaires et les prestataires de services individuels, puissent y enregistrer leurs biens et services, ils doivent tout d’abord s’inscrire via le formulaire prévu à cet effet dans la page partenaire du site.

Ce formulaire contient toutes les informations relatives à un partenaire ou prestataire de services afin de pouvoir contacter les personnes en cas de problème.

(24)

Plateforme Web outschool.ch Développement de la plateforme Web

Le champ "Type partenaire" est rempli dynamiquement avec la table du même nom dans la base de données. Elle contient également une info-bulle. Quand l’utilisateur clique sur cette dernière, une fenêtre apparaît et explique la différence entre un partenaire et un prestataire de services.

Les champs "Type prestation" et "Localité" sont également remplis dynamiquement depuis la base de données.

Ecran 3 - Formulaire d'inscription

Lorsque l’utilisateur clique sur le bouton "S’inscrire", un contrôle automatique est effectué sur tous les champs obligatoires. Si ces derniers ne sont pas remplis, un message rouge apparaît pour signaler à l’utilisateur que le formulaire n’a pas été correctement rempli.

Un contrôle est également fait sur les champs "Email". Si l’adresse email n’a pas un format correct, une erreur s’affiche indiquant que le format n’est pas correct.

Si tous les champs ont été correctement remplis, un nouvel enregistrement est inséré dans la base de données. Pour des raisons de sécurité, un identifiant encodé est généré à la création d’un compte. Cet identifiant est composé de l’adresse email rentrée dans le formulaire, du mot de passe de l’utilisateur (chaîne de six caractères générée aléatoirement lors de l’inscription) ainsi que la date et l’heure de l’inscription.

Ces trois paramètres permettent d’obtenir un identifiant unique pour chaque enregistrement. Pour finir, cette chaîne de caractères est cryptée à l’aide de l’algorithme MD5. Le mot de passe de six caractères est lui également crypté à l’aide de cet algorithme.

(25)

Plateforme Web outschool.ch Développement de la plateforme Web

A ce moment-là, l’utilisateur ne peut pas encore être utilisé car il doit être validé par l’utilisateur. Pour ce faire, un courriel est envoyé à l’adresse fournie dans le formulaire (ce qui permet de contrôler si l’utilisateur est bien propriétaire de l’adresse email).

A l’intérieur de ce courriel, se trouvent deux liens. Le premier permet d’activer le compte et le second permet à l’utilisateur de changer son mot de passe qui a été, auparavant, généré automatiquement. Il faut noter que la partie du mot de passe est visible seulement sur le courriel envoyé aux prestataires de services individuels. Les partenaires n’ont pas besoin de mot de passe étant donné qu’il donne l’accès à leur base de données.

On peut remarquer dans l’exemple de courriel ci-dessous, la présence de l’identifiant encodé à la fin de chaque adresse internet également appelé URL.

Ecran 4 - Courriel de confirmation

Quand l’utilisateur clique sur le lien de confirmation (1er lien), il est redirigé vers la plateforme outschool.ch. Un simple message de confirmation s’affiche. S’il clique sur le 2ème lien, il sera redirigé vers le formulaire permettant de modifier son mot de passe. Ce formulaire demande une double validation du mot de passe.

(26)

Plateforme Web outschool.ch Développement de la plateforme Web

Attention : Si le type de partenaire choisi dans la liste déroulante du formulaire d’inscription est "Partenaire" cela signifie qu’il désire mettre à disposition un accès sur sa base de données. A ce moment-là, il devra remplir un autre formulaire concernant toutes les informations pour la connexion à distance sur sa base de données.

Le champ "Type de base de données" est rempli dynamiquement depuis la base de données et contient également la chaîne de caractères permettant de se connecter à une base de données externes avec le framework Django.

Ecran 6 - Formulaire d'informations sur la base de données

Il a fallu réfléchir à des solutions alternatives au cas où le partenaire ne désire pas délivrer ces informations. Peu de solutions ont été trouvées car il n’existe pas énormément de solutions pour obtenir les informations en temps réel d’un système d’informations externes (accès direct à la base de données ou accès à un Web service). Les solutions citées ci-dessous ne seront pas développées dans le cadre de ce travail, car le temps mis à disposition ne le permet pas!

La première solution étudiée serait de demander aux partenaires les accès à un Web service qui délivreraient également les informations sur les biens et pourraient être ensuite affichés sur la plateforme outschool.ch.

La seconde solution serait de persuader le partenaire de donner ses informations.

L’utilisateur aurait la possibilité de faire une demande de démonstration à l’équipe d’outschool. A ce moment-là, l’équipe outschool devrait demander une copie de la base de données au partenaire afin de l’installer sur un serveur de développement, pour ensuite se rendre chez le partenaire afin de lui faire une démonstration et ainsi espérer qu’il soit convaincu de mettre à disposition les accès à sa base de données.

4.1.3 Formulaire de réservation

Le formulaire de réservation qui sera utilisé par des personnes désirant réserver des camps personnalisés est décomposé en quatre grandes parties. A chaque étape du processus, les données sont à chaque fois enregistrées dans une variable de session, ce qui permet de les modifier en tout temps. Cela signifie que l’utilisateur pourra sans aucun problème revenir sur une étape du processus et y retrouver les informations précédemment saisies. Cette variable de session sera détruite à la fin du processus de réservation.

(27)

Plateforme Web outschool.ch Développement de la plateforme Web

Pour cette partie, il faut noter que pour l’intégration des biens de la base de données des partenaires, tout n’a pas pu être réalisé car la base de données de groups nous a été remise dix jours avant la fin de ce travail.

Les informations générales sur le camp

Ces informations seront très importantes car elles seront utilisées dans l’étape suivante pour afficher les services par rapport à ces critères. Pour la sélection des dates, le "datepicker" de la librairie "Jquery" a été utilisé. Un contrôle est effectué sur tous les champs afin de vérifier s’ils sont bien remplis.

Ecran 7 - Formulaire de réservation Saisie des informations principales

Les services désirés lors de ce camp

A cette étape, les informations saisies dans l’étape 1 seront utilisées pour filtrer les différents services à disposition. Ce filtre est effectué sur tous les champs saisis à l’étape précédente, c’est-à-dire les dates, la capacité et la destination.

Au sommet de l’écran, un résumé de l’étape 1 est affiché. L’utilisateur peut en tout temps cliquer sur "Modifier" pour modifier les paramètres de base.

Attention, cette opération supprimera tous les services choisis car ils dépendent évidemment des critères de l’étape une. Par exemple, si l’utilisateur change la destination, les propositions de services ne seront plus les mêmes.

Sur cette page et pour des raisons d’organisation et d'ergonomie, tous les types de services sont affichés chacun dans un onglet. C’est à cet endroit que sont affiché les biens et services des prestataires de services individuels et ceux des partenaires. On remarque sur l’écran ci-dessous qu’un message s’affiche lorsque le bien provient d’un partenaire, c’est-à-dire d’une base de données externe. On remarque également que pour le bien provenant d’un partenaire, tous les champs s’affichent. Cela signifie que tous les champs n’ont pas pu être mappé avec les champs d’un bien de type "Hébergement".

(28)

Plateforme Web outschool.ch Développement de la plateforme Web

Pour l'hébergement, l’utilisateur ne peut sélectionner qu’un bien tandis que pour les autres services (moniteur, matériel et transport) l’utilisateur peut sélectionner plusieurs choix à l’aide de check box.

Ecran 8 - Formulaire de réservation Sélection des services

Les coordonnées de contact

Ce formulaire permet d’obtenir les coordonnées de contact de la personne faisant une réservation. C’est un formulaire simple avec un contrôle des champs obligatoires. Le champ "Localité" est rempli dynamiquement depuis la base de données.

(29)

Plateforme Web outschool.ch Développement de la plateforme Web

Ecran 9 - Formulaire de réservation Coordonnées de contact

Confirmation

Avant de confirmer, l’utilisateur a la possibilité de voir un aperçu global de toutes les prestations sélectionnées. Les coordonnées de contact de chaque prestataire sont également affichées sur ce résumé

Ecran 10 - Formulaire de réservation Confirmation

Une fois que l’utilisateur a cliqué sur "Terminer et confirmer", la réservation est enregistrée dans la base de données. Tous les biens sélectionnés sont

(30)

Plateforme Web outschool.ch Développement de la plateforme Web

du camp. Le statut "non-lu" est mis par default à chaque réservation. Ce statut évolue selon les choix des prestataires de service. Cette partie sera développée dans la partie du gadget Windows.

Egalement à ce moment-là, la variable de session est détruite et les informations ne sont donc pus récupérables. Tous les formulaires sont à nouveau vierges. De plus, lors de la confirmation, un email est envoyé à la personne ayant fait la réservation. Dans ce mail se trouve un lien qui permet de voir l’avancement des différentes demandes de services ou de biens.

Ecran 11 - Suivi d'une réservation

4.1.4 Zone d’administration

Le framework Django fournit un outil qui permet de générer une zone d’administration par rapport aux classes métiers que le développeur a créées. Il suffit de spécifier le nom de la classe de l’objet que l’on désire modifier via l’interface d’administration Web pour voir apparaître dans la zone d’administration les différentes actions possibles sur tous les objets de cette classe. Les différentes actions possibles sont les suivantes : ajouter, modifier et supprimer un objet.

Un outil de mapping avec les bases de données externes des partenaires devait être réalisé pour ce travail. Suite à un retard de la réception de la base de données de groups.ch et surtout à un manque de temps durant ce travail, cet outil n’a pas pu être réalisé comme voulu. Mais la structure de la base de données est déjà prévue pour réaliser cet outil. D’ailleurs, les tables prévues à cet effet ont été remplies manuellement afin de pouvoir quand même afficher les données depuis une base de données distantes dans le formulaire de réservation.

4.1.5 Le Web service

La mise en place d’un Web service a été nécessaire afin de pouvoir permettre la communication entre la base de données de la plateforme outschool.ch et l'outil de gestion des biens pour les prestataires de services individuels. Il s’agit du gadget Windows 7.

Ce Web service pourra également être utilisé pour d’autres outils de gestion. L’équipe d’outschool m’a déjà demandé de faire un gadget pour Mac étant donné qu'un certain nombre de professeurs utilise des Mac et n’ont donc pas accès à Windows. A ce moment-là, toutes les fonctionnalités existent déjà sur le Web service et il sera donc plus aisé pour la réalisation de ce gadget pour Mac.

(31)

Plateforme Web outschool.ch Développement de la plateforme Web

Ce service a été réalisé à l’aide du composant "django-rest-interface" conçu pour fonctionner avec le framework Django. Il permet de créer assez aisément des Web services de type REST. Il a été séparé en 2 parties :

Un Web service public qui sera utilisé pour effectuer l’authentification depuis le gadget Windows 7 sur la base de données. Cela signifie que l’utilisateur, avant de pouvoir utiliser l'outil de gestion de contenu, va devoir s’authentifier avec son adresse email et le mot de passe qui a été généré lors du processus d’inscription. Si l’authentification réussit, le système va pouvoir afficher toutes les informations nécessaires en utilisant la partie privée du Web service. Pour des raisons de sécurité, seule la méthode GET, qui permet la lecture de ressources, est autorisée à l’appel de cette fonction.

Un Web service privé qui requiert une authentification HTTP a été crée afin de sécuriser toutes les données sensibles. Sur certaines fonctionnalités, il n’y a pas seulement la méthode GET qui est utilisé mais également les méthodes POST, PUT et DELETE. Ces dernières permettent d’ajouter, modifier et supprimer des ressources c’est pourquoi le Web service a été sécurisé. Par défaut, le composant vérifie l’authentification sur une table appelée

"django_users" créée par Django. C’est pourquoi le composant a subit des modifications pour que l’authentification se fasse sur la table "Partenaire" de la plateforme outschool.

Widget windows 7 Base de données

outschool.ch Webservice

public /privé

Schéma 5 - Fonctionnement du Web service

4.2 Technologies utilisées

4.2.1 Framework Django

Le framework Web Django a été développé il y a 4 ans. Il a été écrit entièrement en Python. Très puissant, il a été utilisé par des organisations comme la "NASA" et le

"Washington Times" ainsi que le "Google App Engine5" qui a été en partie développé avec ce framework. La version actuelle de ce framework est la 1.2 sortie en mai 2010. Son slogan est le suivant : "Le framework Web pour les perfectionnistes sous pression ". Ce qui laisse entrevoir un travail rapide et bien fait.

Django est un framework assez simple d’utilisation grâce à la bonne documentation que propose différents sites. Il est quand même nécessaire d’avoir d’excellentes connaissances de programmation Web et de programmation orientée objet (POO).

Django est basé sur le système "Modèle-Vue-Contrôleur" (MVC) ce qui permet d’avoir chaque partie de l’application séparée l’une de l’autre. Il fournit également d’autres fonctionnalités très utiles comme par exemple:

5

Références

Documents relatifs

Mais comme tout ce travail à déjà été réalisé dans d’autres travaux et que nous avons déjà à disposition une base de données qui gère les triples stores avec un

Vous devez également disposer de quelques bases solides dans le domaine de la programma- tion , car ce livre s’articule autour de nombreux exemples, issus du monde réel, dans

In recent years, pension funds investments in real estate were generally oriented towards new developments on four main segments: office buildings, shopping malls,

Robotique, IOT (Internet des objets) modèles et prévi- sions, données connectées en provenance du fruit, de la plante et de l’environnement : depuis dix ans, le numé- rique a fait

Cohort purpose: The Collaboration of Observational HIV Epidemiological Research Europe (COHERE) was formed to pool and harmonize existing longitudinal data on

Pendant le régime autoritaire, sous la Constitution de 1967 et l'amendement de 1969, les députés et sénateurs n'avaient aucune compétence pour présenter des amendements au

– Un petit démon (programme : httpd) attend les requêtes pour les

Percutaneous thermal ablative techniques, such as radio- frequency ablation (RFA), microwave ablation (MWA), or cryoablation, have become valuable alternatives to surgery in