Django-Waffle est un « feature flipper » pour Django qui permet de contrôler la visibilité de fonctions dans votre application web selon différentes stratégies.
De manière générale les gestionnaires d’options sont utilisés pour gérer différentes versions d’une application web. Il peut être intéressant d’avoir plusieurs versions d’un site pour par exemple faire face à une surcharge, un autre cas d’utilisation est l’ouverture progressive de fonction à un groupe de testeurs afin de détecter d’éventuels bugs ou pour faire des tests A/B. Ils sont aussi parfois utilisés dans le cadre de l’intégration continue venant remplacer l’utilisation des branches d’un gestionnaire de version.
Django-Waffle utilise trois types d’interrupteurs chacun correspondant à un modèle Django particulier, s’activant selon différentes stratégies en fonction d’attributs de configuration stockés en base de données, les voici du plus simple au plus complexe :
Les modèles fournis par Django-Waffle et configurés dans l'espace d’administration par le développeur peuvent ensuite être utilisés dans les vues, les templates ou dans une commande.
Un ensemble de template tag construit sur le principe des blocs conditionnels permet d’utiliser les interrupteurs dans les templates.
Dans le code python des blocs conditionnels classiques aidés de fonctions permet de faire les branchements nécessaires. Il existe un raffinement supplémentaire pour les « flags » et les « switches » qui peuvent être utilisés autour d’une vue à l’aide d’un décorateur, renvoyant une erreur 404 lorsque celui-ci n’est pas actif.
Une bibliothèque Javascript accompagne Django-Waffle qui permet d’utiliser les interrupteurs directement coté client.
Le fichier README du projet explique de façon un peu plus détaillé l'utilisation de la bibliothèque.
Actions sur le document