Le framework Pyramid + Pyramid-Helpers


Un framework flexible

Easter-eggs a été créée en 1997 et dès 1999, le choix de Python comme langage de prédilection pour nos développements spécifiques a été posé.

Nous nous sommes immédiatement intéressés aux frameworks orientés MVC. Zope a été le premier que nous ayons utilisé, puis très logiquement, nous sommes passés à Pylons puis, à partir de 2011, à Pyramid.

Pourquoi avons-nous choisi Pyramid et surtout, pourquoi n’avons nous pas opté pour Django ?

Django et Pyramid sont tous les deux des frameworks "full-stack". Là où ils se différencient, c’est au niveau de la philosophie. Django suit la philosophie "Batteries included" et fournit "out of the box" presque tout ce dont les développeurs ont besoin. C’est-à-dire que toutes les fonctionnalités nécessaires au développement d’une application (ORM, moteur de template, gestion des sessions, système de cache, sécurité, formulaires, scaffolding, URL mapping, Ajax, Web services, internationalisation, ...) sont fournies par des bibliothèques internes.

À contrario, Pyramid n’impose rien. Chaque fonctionnalité peut être implémentée par la bibliothèque externe de son choix.

Ce choix de philosophie de Django le rend à notre goût trop monolithique et par conséquent bien moins "souple" que Pyramid, donnant moins de contrôle au développeur. C’est là l’argument principal à l’origine de notre choix.

La flexibilité de Pyramid nous permet donc de construire notre pile logicielle idéale sur des bibliothèques externes que nous avons pu choisir :

  • Formencode, pour la gestion des formulaires ;
  • Webob, pour Web object, implémentaion WSGI/HTTP sur laquelle s’appuie Pyramid ;
  • Beaker, pour la gestion des sessions et du cache ;
  • SQLAlchemy, pour l’ORM ;
  • Mako, pour le templating - que nous préférons à JINJA2.

Autre point fort de Pyramid, sa documentation est riche et précise. Les bibliothèques sous-jacentes sont également bien documentées et robustes, ce qui a toujours permis d’apporter une réponse à une situation donnée, même les plus désespérées ;-)

En résumé, nous avons choisi Pyramid car il n’impose pas de contraintes qui peuvent être un frein aux développements c’est à dire qu’il permet de créer des applications complexes sans avoir à « contourner » les rails du framework.

Pourquoi avoir développé Pyramid-Helpers ?

L’objectif de Pyramid-Helpers est d’éviter de redévelopper à chaque fois des fonctionnalités communes à tous les projets et de fournir une boite à outils permettant de faciliter et d’accélérer le travail du développeur. On y trouve donc :

  • Une intégration simplifiée de l’internationalisation ;
  • une gestion des formulaires (validation des données côté contrôleur et génération des champs côté vue) ;
  • une gestion de la pagination ;
  • un assistant à la création d’une nouvelle application (« scaffold » ou « squelette » de l’applicatif) ;
  • un module d’identification / autorisation minimaliste ;
  • une génération dynamique d’une documentation de l’API permettant de tester les services.

Pyramid-Helpers est aussi un démonstrateur Pyramid. Une documentation par l’exemple. La documentation de Pyramid-Helpers, c’est Pyramid-Helpers.

Le couple Pyramid / Pyramid-Helpers est pour nous un socle applicatif permettant de créer des interfaces web simples et efficaces pour de la consultation/saisie de données ou bien encore dans le cas du paramètrage/pilotage/surveillance d’applications métiers.

Le principal intérêt de Pyramid / Pyramid-Helpers est sans doute de savoir se faire oublier - tous les outils pour interagir avec l’utilisateur sont à notre disposition. Cela nous permet de nous concentrer quasiment exclusivement sur les problématiques liées aux processus métiers des applications que nous devons développer.

Pour aller plus loin avec Pyramid / Pyramid-Helpers

Principaux projets Easter-eggs développés à partir de Pyramid-Helpers

  • 2012 - Démonstrateur web pour le projet Pégase pour le compte d’EDF R&D
  • 2013 - Clone de Fixmystreet pour un POC pour le compte de Bordeaux Métropole
  • 2013 - Interface web de statistiques du PBX Asterisk pour le compte de Enercoop
  • 2014 - Interface d’assistance à la prévision de production des énergies renouvelables pour EDF R&D
  • 2014 - Application de gestion des adhérents pour Europe Écologie Les Verts
  • 2016 - Application de gestion de configuration d’équipements réseau dans le cadre d’un déploiement national dans le secteur des télécommunications pour le compte d’un opérateur national
  • 2018 - Application de contrôle de gestion pour Zentiva