Architecture du projet

Made with Django Made with Wagtail

Sites Conformes est développé en utilisant le framework Django et le CMS Wagtail. Il est centré autour d’une application principale nommée sites_conformes.core, accompagnée d’applications annexes pour divers types de pages :

Applications Django

  • sites_conformes.core : l’application principale, contient les contenus communs, les pages standard (pages de contenu), les pages d’index de catalogue, la page de recherche et la gestion des configurations

  • blog : Permet de gérer des articles de blog et des index de blog, et les flux RSS correspondants.

  • dashboard : Contient les personnalisations des panneaux d’administration de Wagtail (dans templates/wagtailadmin et wagtail_hooks.py)

  • events : Similaire à blog, mais permet de gérer des événements et des pages de calendrier, ainsi que les exports iCal correspondants.

  • forms : implémentation du module de création de formulaire de Wagtail, par exemple pour les pages de contact. Volontairement assez limité (suffisant pour un formulaire de contact mais pas beaucoup plus), pour les cas complexes il vaut mieux privilégier l’intégration de Demarche.numerique.gouv.fr ou de Grist.

  • db_storage : stockage des médias en base de données PostgreSQL, alternative au S3 pour les PaaS avec filesystem éphémère (cf. Stockage des médias en base de données (DB Storage))

  • proconnect : permet la connexion via ProConnect

DSFR

django-dsfr est une dépendance du projet et permet d’utiliser facilement le système de design de l’État dans des templates Django.

Autres répertoires

En plus des applications déjà citées, le dépôt contient les répertoires suivants :

  • config : le projet Django proprement dit

  • locale : la traduction des templates de base et du JS global du site (cf. Traductions). La localisation des apps listées plus haut se fait à l’intérieur de celles-ci.

  • scripts : scripts shell utilisés par certaines commandes et fichiers de configurations associés.

  • static : des fichiers statiques communs à l’ensemble du site (CSS global, JS global, quelques images intégrées par défaut) ainsi que la librairie tierce TarteaucitronJS, utilisée pour la gestion des cookies tiers.

  • templates : les templates de base du site.

Schéma

Schéma montrant les apps listées ci-dessus ainsi que l’interconnection avec la BDD, le S3 et les services tiers (dont ProConnect)

Schéma de l’application dans le cas d’un hébergement sur Scalingo.

Indexation des contenus

Les contenus des pages sont indexés pour la recherche par un script just index qui appelle python manage.py update_index (cf. documentation de Wagtail).

Le lancement automatique et périodique de ce script en production est décrit dans Sur un serveur Linux (VPS, dédié ou interne) — 🔵 Confirmé.