Technologie¶
Le ClimWeb comprend des outils et des fonctionnalités destinés à soutenir les SMHN dans leurs activités quotidiennes de gestion de sites Web, en fournissant des informations et des services à leurs utilisateurs.
Cette section vise à présenter le choix des technologies, l’approche de développement et à présenter les packages qui supportent les fonctionnalités disponibles sur le ClimWeb à un niveau élevé.
Le ClimWeb développé est open source et hébergé sur GitHub à l’adresse https://github.com/wmo-raf/nmhs-cms
Cadre de base ClimWeb¶
Le modèle de site Web est construit sur le framework open source Wagtail. Wagtail lui-même est construit sur Django , qui est un framework Web Python de haut niveau qui encourage un développement rapide et une conception propre et pragmatique.

Les éléments suivants ont été pris en compte lors du choix de Wagtail comme cadre de choix :
Python comme langage de programmation. Le domaine météorologique et climatique nécessite de nombreuses interactions avec les données scientifiques. Python est l’un des langages de script qui facilite le développement de procédures permettant de manipuler ce type de données. Développer un site Web en utilisant Python permet ainsi la flexibilité de développer des fonctionnalités basées sur les données
Facile à utiliser : L’une des principales caractéristiques de Wagtail est son interface intuitive et conviviale. Cela permet aux éditeurs de contenu de gérer facilement des sites Web sans avoir à apprendre les complexités et les aspects techniques du cadre sous-jacent.
Flexibilité : Wagtail est flexible lorsqu’il s’agit de créer et de gérer des sites Web. Il permet le développement rapide de sites Web hautement personnalisés avec des mises en page, du contenu et des fonctionnalités complexes, en fonction des besoins des éditeurs de contenu.
Extensibilité : Wagtail est conçu pour être facilement étendu avec une grande variété de plugins, de thèmes, de composants et d’autres fonctionnalités. Cela permet d’ajouter de nouvelles fonctionnalités, de personnaliser l’apparence de leur site Web et d’étendre les fonctionnalités de ClimWeb.
Sécurité : Wagtail est conçu dans un souci de sécurité. Il est livré avec les fonctionnalités de sécurité intégrées de Django telles que l’authentification des utilisateurs, la validation des entrées et la protection contre les méthodes d’attaque courantes.
Évolutivité : Basé sur Django, Wagtail est conçu pour être hautement évolutif, ce qui en fait un choix idéal pour les sites Web comportant de grandes quantités de contenu et d’utilisateurs. Il peut gérer de grandes quantités de données sans aucun problème de performances, permettant aux développeurs de créer des sites Web qui peuvent se développer à mesure que leur base d’utilisateurs augmente.
Fonctionnalités d’entreprise prêtes à l’emploi : Wagtail inclut les autorisations des utilisateurs et des groupes, les flux de travail de contenu et de modération, les rapports, le suivi de l’historique des modifications de contenu et d’autres fonctionnalités dont les administrateurs et les équipes de sites Web ont besoin.
Expérience de l’équipe de développement : L’équipe de développement actuelle de ClimWeb du SMHN possède une vaste expérience dans le développement de projets basés sur Wagtail et Django. Cela permet de mettre en œuvre rapidement de nouvelles fonctionnalités et fonctionnalités
Approche de développement¶
Nous utilisons l’approche modulaire Django/Wagtail pour développer des « applications Django » pour fournir un ensemble de fonctionnalités. Une application Django/Wagtail est un package Python qui fournit un ensemble de fonctionnalités. Les applications peuvent être réutilisées dans divers projets.
Les applications incluent une combinaison de modèles Django, de vues, de modèles, de balises de modèle, de fichiers statiques, d’URL, de middleware, etc. Ceux-ci sont ensuite connectés au projet avec les paramètres INSTALLED_APPS. Une application est donc, dans ce contexte, un ensemble de codes qui interagit avec différentes parties du framework.
Le NMHS ClimWeb est ainsi conçu avec un ensemble d’applications internes qui fournissent des fonctionnalités pour différentes pages Web du site Web fonctionnel. Celles-ci sont organisées sous le répertoire pages du code source de ClimWeb. Chaque sous-répertoire des pages correspond à une section du site Web qui peut permettre de créer une ou plusieurs pages liées à cette section
Des fonctionnalités plus spécialisées sont développées sous forme d’applications externes Wagtail qui peuvent être connectées au projet de code. Ceux-ci sont ensuite installés sous forme de packages Python publiés sur le Python Package Index (PyPI), qui est un référentiel de logiciels pour le langage de programmation Python.
Packs de fonctionnalités¶
CAP Composer : Outil de composition et de publication du Common Alerting Protocol (CAP) qui fournit des fonctionnalités permettant de créer et de publier des alertes au format CAP.
Forecast Manager – Interface de gestion des prévisions urbaines des SMHN
GeoManager - Fournit une interface interactive pour gérer et publier des ensembles de données géoréférencées (SIG)
Administrative Boundary Manager : Fournit des fonctionnalités pour charger, gérer et visualiser les limites d’un pays
Éditeur WebStories - Fournit des fonctionnalités pour créer et publier des Google Web Stories
Surveys Creator – Fournit des fonctionnalités pour créer et publier des enquêtes directement dans ClimWeb, visualisation et analyse des résultats à l’aide de graphiques interactifs
Packages d’intégration d’outils tiers¶
Marketing par e-mail¶
Intégration Mailchimp : Intégrer Mailchimp dans les projets Wagtail
Intégration Mautic : Intégration des formulaires Mautic dans les projets Wagtail.
Réunions en ligne¶
Intégration Zoom : Intégrez Zoom l’inscription aux événements (réunions ou webinaires) pour former des pages créées avec Wagtail
Cadres et bibliothèques d’interface utilisateur¶
Modèles - Modèles basés sur Django
Cadre CSS - Bulma
Bibliothèque JavaScript - JQuery
Bibliothèque de cartographie Web - MapLibre GL JS
Sources d’icônes SVG - Font Awesome , Icônes humanitaires Ocha
Développement de nouvelles fonctionnalités¶
Une approche modulaire est utilisée lors du développement de nouvelles fonctionnalités à inclure dans ClimWeb. La nouvelle fonctionnalité doit être développée de manière isolée en tant que package Wagtail Python et publiée sur PyPi pour être installée à l’aide de Pip.
Nous suivons les étapes suivantes en général :
Explorez les packages existants dans la communauté Wagtail/Django qui offrent des fonctionnalités similaires.
Si un package existant existe et ne peut pas être directement intégré au ClimWeb, nous essayons de personnaliser au maximum ce package, pour le rendre interopérable. Sinon, on l’utilise directement
Si nous ne trouvons pas de packages existants, nous développons le package à partir de zéro. L’idée est d’éviter autant que possible de réinventer la roue.
Déploiement de production¶
Docker permet de conteneuriser les différents composants du ClimWeb.
Les autres conteneurs utilisés comprennent
PostgreSQL avec l’extension PostGIS comme base de données
Nginx en tant que serveur Web et proxy Web
Memcached comme système de mise en cache pour les requêtes Web
Eclipse Mosquitto en tant que courtier de messages MQTT. Principalement utilisé pour la messagerie des alertes CAP
Ceux-ci sont placés dans un fichier de configuration Docker Compose, utilisé pour déployer le projet à l’aide de Docker Compose.
Un référentiel d’initialisation est fourni qui rassemble tous les différents composants en un seul projet. Ceci est accessible sur https://github.com/wmo-raf/nmhs-cms-init . Un guide d’installation est fourni dans le fichier README du référentiel.
Gestion des mises à jour¶
De nouvelles versions contenant des corrections de bogues et des mises à jour de fonctionnalités sont publiées périodiquement sur les versions du référentiel nmhs-cms.
Lorsqu’il y a une nouvelle version, l’interface d’administration de ClimWeb affichera un message indiquant qu’il y a une nouvelle version. L’administrateur du site Web peut alors choisir de mettre à niveau vers la nouvelle version, après avoir parcouru les notes de version qui accompagnent chaque version.
La mise à niveau se fait par un clic sur un bouton, qui déclenche un processus de construction de Docker avec les nouvelles versions. Une fois la nouvelle version créée avec succès, le conteneur est redémarré avec la nouvelle version appliquée.

Dans les rares cas où le déclencheur de build automatique échoue, les administrateurs système sont formés pour effectuer manuellement la mise à niveau.
Sécurité dans Django/Wagtail¶
Le ClimWeb, utilisant Django/Wagtail, contient les fonctionnalités de sécurité suivantes intégrées. Plus de détails sur chaque fonctionnalité peuvent être trouvés sur https://docs.djangoproject.com/en/5.0/topics/security
Protection contre les scripts intersites (XSS)
Protection contre la falsification de requêtes intersites (CSRF)
Protection contre les injections SQL
Protection contre le détournement de clics
Paramètres de protection SSL\HTTPS
Validation de l’en-tête de l’hôte
Protection de la politique de référence
Politique d’ouverture d’origine croisée
Sécurité des sessions
Protection du contenu téléchargé par l’utilisateur
Fonctionnalités de sécurité spécifiques à ClimWeb :¶
Possibilité de changer périodiquement l’URL de l’administrateur
Mécanismes de sauvegarde quotidienne
Préventions des connexions par force brute
Authentification à 2 facteurs pour le compte administrateur