Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

211 views

Published on

Python web app bootstraping with Telosys

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Web app Bootstrapping Laurent Guérin @ltguerin laurent.guerin@sogeti.com Meetup Python Nantes 5 Juin 2018
  2. 2. @telosys http://www.telosys.org 2 Les applications cibles DAOService Controller MVC Controller REST Entity App
  3. 3. @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
  4. 4. @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
  5. 5. @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.
  6. 6. @telosys http://www.telosys.org 6 Le générateur de code RAPIDE www.telosys.org
  7. 7. @telosys http://www.telosys.org 7 Deux outils (au choix) plugin C L I Extensions VSCode et Atom
  8. 8. @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
  9. 9. @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
  10. 10. @telosys http://www.telosys.org 10 Comment ça marche ? Etape 3 : Lancer la génération Project templatesGenerator
  11. 11. @telosys http://www.telosys.org 11 Application Web MVC / DSL Model #1
  12. 12. @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 :
  13. 13. @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 »
  14. 14. @telosys http://www.telosys.org 14 Modèle complet
  15. 15. @telosys http://www.telosys.org 15 Téléchargement des templates https://github.com/telosys-templates-v3
  16. 16. @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
  17. 17. @telosys http://www.telosys.org 17 Téléchargement des templates
  18. 18. @telosys http://www.telosys.org 18 Génération de code
  19. 19. @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
  20. 20. @telosys http://www.telosys.org 20 Lancement et tests
  21. 21. @telosys http://www.telosys.org 21 Application Web REST #2
  22. 22. @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
  23. 23. @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
  24. 24. @telosys http://www.telosys.org 24 Lancement et tests
  25. 25. @telosys http://www.telosys.org 25 Application Web MVC / Database Model #3
  26. 26. @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
  27. 27. @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 »
  28. 28. @telosys http://www.telosys.org 28 Consultation/modification du modèle Ouvrir le fichier « .dbrep »
  29. 29. @telosys http://www.telosys.org 29 Génération de code
  30. 30. @telosys http://www.telosys.org 30 Telosys CLI / VS Code - Application Web MVC - DSL #4
  31. 31. @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
  32. 32. @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
  33. 33. @telosys http://www.telosys.org 33 Installation des templates Telosys : Bundles : > lb (List Bundles) > lgh (List GitHub) > ib pyt (Install Bundles « pyt ») > lb
  34. 34. @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 )
  35. 35. @telosys http://www.telosys.org 35 Tests Run Python file in terminal • create_database.py • init_database.py • run_tests.py
  36. 36. @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
  37. 37. @telosys http://www.telosys.org 37
  38. 38. @telosys http://www.telosys.org 38 Pour plus d’info… www.telosys.org @telosys
  39. 39. @telosys http://www.telosys.org 39 Des questions ?

×