Web app
Bootstrapping
Laurent Guérin
@ltguerin
laurent.guerin@sogeti.com
Meetup Python Nantes
5 Juin 2018
@telosys http://www.telosys.org 2
Les applications cibles
DAOService
Controller
MVC
Controller
REST
Entity
App
@telosys http://www.telosys.org 3
La phase de début de projet
On part de …. rien
Il va falloir poser le cadre du projet
Une part du développement va être répétitive
@telosys http://www.telosys.org 4
Tâche répétitives : tout ce qui est lié aux entités du projet
Par exemple, pour chaque entité :
• La « classe domaine » de l’entité
• Un formulaire de saisie / mise à jour / suppression (CRUD)
• Les listes d’entités
• Les « contrôleurs » (côté serveur)
• Les services REST
• La couche d’accès à la base de données
• etc
N fois !
N entités
@telosys http://www.telosys.org 5
La juste part du développeur
Plate-forme ( ex Python, …)
Application
Framework 1
( ex Bottle )
Framework 2
( ex SqlAlchemy )
Code stéréotypé
& répétitif
Développeur Générateur
La part de code répétitif qui ne peut pas être
portée par le socle technique
peut être générée.
@telosys http://www.telosys.org 6
Le générateur de code
RAPIDE
www.telosys.org
@telosys http://www.telosys.org 7
Deux outils (au choix)
plugin C L I
Extensions
VSCode et Atom
@telosys http://www.telosys.org 8
Abstract model
DSL model
Comment ça marche ?
Database model
Etape 1 : Définir un modèle d’entités
Soit un « db model » initialisé à partir du schéma
d’une base de données relationnelle (puis modifiable)
Soit un « DSL model » basé sur des fichiers de type
texte avec une grammaire simple
init/update
@telosys http://www.telosys.org 9
Project
templates
Comment ça marche ?
Etape 2 : Récupérer (ou créer) des « templates »
Templates standards
GitHub
Utilisation
de templates
standards
prédéfinis
Création ou adaptation
de templates pour
des cas spécifiques
Un template est
un « patron »
pour un type de cible
de génération :
Java, PHP, HTML, etc
@telosys http://www.telosys.org 10
Comment ça marche ?
Etape 3 : Lancer la génération
Project
templatesGenerator
@telosys http://www.telosys.org 11
Application Web MVC / DSL Model
#1
@telosys http://www.telosys.org 12
Initialisation du projet
Création d’un projet Python pour l’application MVC : projet « python-mvc »
Initialisation
de Telosys :
@telosys http://www.telosys.org 13
Création d’un modèle
Création d’un
« DSL model » : « cars »
Création d’une entité : « Driver »
@telosys http://www.telosys.org 14
Modèle complet
@telosys http://www.telosys.org 15
Téléchargement des templates
https://github.com/telosys-templates-v3
@telosys http://www.telosys.org 16
Templates utilisés
bundles de templates :
DAOService
Controller
MVC
Controller
REST Entity
python-persistence-sqlalchemy
python-web-mvc-bottle
@telosys http://www.telosys.org 17
Téléchargement des templates
@telosys http://www.telosys.org 18
Génération de code
@telosys http://www.telosys.org 19
Tests et lancement de l’application
Tests :
Run as …  Python Run
create_database.py
init_database.py
run_test.py
Lancement de l’application :
Run as …  Python Run
app.py
@telosys http://www.telosys.org 20
Lancement et tests
@telosys http://www.telosys.org 21
Application Web REST
#2
@telosys http://www.telosys.org 22
Nouveau projet et initialisation
Même principe que pour projet précédent :
 Création d’un projet Python : projet « python-rest »
Initialisation de Telosys
Recopie du modèle du projet précédent
Recopie des templates du projet précédent
@telosys http://www.telosys.org 23
Templates utilisés
bundles de templates :
DAOService
Controller
MVC
Controller
REST Entity
python-web-rest-bottle
python-persistence-sqlalchemy
@telosys http://www.telosys.org 24
Lancement et tests
@telosys http://www.telosys.org 25
Application Web MVC / Database Model
#3
@telosys http://www.telosys.org 26
Configuration de la connexion à la base de données
Démarrer la base de données
Placer le fichier « .jar » contenant le driver JDBC dans « lib »
Configurer la connexion à la base
@telosys http://www.telosys.org 27
Création du modèle à partir de la base de données
Tester la récupération des tables, colonnes, etc
 « Create model »
 Fichier « .dbrep »
@telosys http://www.telosys.org 28
Consultation/modification du modèle
Ouvrir le fichier « .dbrep »
@telosys http://www.telosys.org 29
Génération de code
@telosys http://www.telosys.org 30
Telosys CLI / VS Code - Application Web MVC - DSL
#4
@telosys http://www.telosys.org 31
Telosys CLI + VS Code
VS Code avec
extension Telosys :
pour éditer les fichiers
Telosys CLI :
pour exécuter les
commandes Telosys
@telosys http://www.telosys.org 32
Initialisation & création du modèle
Telosys :
Initialisation :
> init
Modèle :
> lm
> nm cars
> le
> ne car
Pour démo, recopier un modèle complet
@telosys http://www.telosys.org 33
Installation des templates
Telosys :
Bundles :
> lb (List Bundles)
> lgh (List GitHub)
> ib pyt (Install Bundles « pyt »)
> lb
@telosys http://www.telosys.org 34
Génération de code
Sélection d’un bundle :
> b alch (Bundle) : « alch » = abréviation du nom de bundle
> gen * * -r (Generate all entities and all templates with resources )
@telosys http://www.telosys.org 35
Tests
Run Python file in terminal
• create_database.py
• init_database.py
• run_tests.py
@telosys http://www.telosys.org 36
Génération de code
Sélection d’un bundle :
> b mvc (Bundle) : « alch » = abréviation du nom de bundle
> gen * * -r (Generate all entities and all templates with resources )
Run Python file in terminal
• app.py
@telosys http://www.telosys.org 37
@telosys http://www.telosys.org 38
Pour plus d’info…
www.telosys.org @telosys
@telosys http://www.telosys.org 39
Des questions ?

Meetup python-bottle-telosys-2018-lgu-v1.0