Skip to main content

Gestionnaire de contenu permettant de créer et gérer un site internet basé sur le Système de design de l'État, accessible et responsive

Project description

Sites-Faciles

Sur la base de l'application gestionnaire de contenu CMS et blog sous technologie Wagtail sites-facile de la DINUM, France, elle-même à base de l'application de mise en page de site dynamique Django django-dsfr, elle même basé sur le Design Système de l'Etat ou DSFR du gouvernement français, cette application gestionnaire de contenu dit CMS et blog Sites-Faciles propose de capitaliser sur le travail de fond pour le traitement d'information et de la communication en rendant les composants génériques.

Les conditions d’utilisation de DSFR pour des acteurs privés sont claires :

2° Conditions d’utilisation des Composants par les Autres Utilisateurs

Tous les Autres Utilisateurs sont autorisés à utiliser le code source selon les conditions de la licence MIT.

Il est expressément rappelé aux Autres Utilisateurs que toute utilisation des Composants en dehors des limites visées aux présentes ou dans le but de les détourner et de s’approprier d’une manière ou d’une autre la Marque de l’État est punissable de sanctions civiles et/ou pénales.

Les conditions de l'utilisation de dango-design-system and sites-faciles (content_manager) sont encore moins problématiques un fois que la question fondamentale du DSFR est traitée de manière responsable. Le défi est de proposer un deal équitable et sympa pour l'Etat. Cela serait aidé, je pense, par la contribution fondamentale de proposer des thèmes graphiques très différents de la charte du DSFR. Il y a encore un peu de travail à faire dans ce sens, mais c'est bien parti.

Maîtriser l'ensemble de la chaîne de design-system à django-design-system à wagtail-design-system à sites-faciles a été une joie parce-que les développements sont propres et faits de manière responsable.

Voici un autre diagramme autour de l'idée de faire un outil publiquement utilisable wagtail-design-system avec django-design-system Module Python django-design-system et design-system.

flowchart TD

subgraph GouvernementFR
	DSFR
end
subgraph numerique-gouv
	django-dsfr
	sites-faciles
end
subgraph ResDigita 
	design-system
	django-design-system
	wagtail-design-system
	resdigita-sites-faciles
end


django-dsfr -.-> Django 
sites-faciles-.-> Wagtail 
django-design-system -.-> Django
wagtail-design-system -.-> Wagtail 
DSFR -.-> NodeJS 
design-system  -.-> NodeJS 

DSFR --> django-dsfr
django-dsfr --> sites-faciles
DSFR --> uniquement-generique{{Reprise uniquement\ndes éléments\ngénériques}}
uniquement-generique --> design-system
design-system --> django-design-system

django-dsfr --> intro-submodules{{Introduction\nde submodules\npar desgin de site}}
intro-submodules --> django-design-system
django-design-system --> wagtail-design-system --> resdigita-sites-faciles
sites-faciles --> wagtail-design-system

Django --> Wagtail

Voici des notes aléatoires:

CREATE USER sitesfaciles  with ENCRYPTED PASSWORD 'SOMEPASSWORD';
CREATE DATABASE "sitesfaciles" WITH OWNER "sitesfaciles" ENCODING 'UTF8';
ALTER database sitesfaciles owner to sitesfaciles;
GRANT ALL privileges ON DATABASE sitesfaciles TO sitesfaciles;
git clone git@github.com:chris2fr/sites-faciles.git
python -m venv venv
source venv/bin/activate
pip install pre-commit django
cp .env.example .env
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
vi .env
pre-commit install
pre-commit run --all-files
poetry install
poetry run python manage.py makemigrations
make migrations
make collectstatic
poetry run python manage.py createsuperuser
SECRET_KEY=<VALUE>
DEBUG=False
HOST_PROTO=http
# HOST_URL and ALLOWED_HOSTS: use 0.0.0.0 for Docker
HOST_URL=0.0.0.0
ALLOWED_HOSTS=localhost, 127.0.0.1, sites-pfaciles.resdigita.com
HOST_PORT=8890
SITE_NAME=Sites Faciles
MEDIA_ROOT=medias


Texte reproduite de la DINUM

Créez et gérez votre site internet simplement

Gestionnaire de contenu (CMS) pour créer un site internet dont le domaine se terminant par .gouv.fr . Pas besoin de compétence technique pour mettre à jours le contenu.

Un CMS basé sur la solution open source Wagtail

Créez ou modifiez des pages, ajoutez un menu de navigation, des boutons, images, vidéos, contributeurs etc

Système de Design de l'État

Construisez vos pages à l'aide de composants prêts à l'emploi issus du Système de Design de l'État (DSFR)

Accessible et responsive

Le contenu des pages générées par le CMS est partiellement conforme selon la norme RGAA 4.1 et responsive

Prérequis

  • Python 3.10
  • Postgreql 14.x.

Installer les pre-commit hooks

pre-commit install

On peut faire un premier test en faisant tourner :

pre-commit run --all-files

Installation

Le projet peut se lancer en local ou avec Docker.

Dans tous les cas, copier les variables d’environnement

  • Copier le fichier
cp .env.example .env
  • Générer la SECRET_KEY
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
  • Mettre les valeurs pertinentes dans le fichier .env

En local

Installer poetry s’il ne l’est pas

Cf. la documentation de poetry

Installer le projet

  • La commande suivante installe les dépendances, fait les migrations et collecte les fichiers
make init

Créer un utilisateur

  • La commande suivante crée un utilisateur administrateur avec tous les droits:
poetry run python manage.py createsuperuser

Lancer le serveur

make runserver

via Docker

Lancer les containers

docker compose up

Effectuer les tests

Les tests unitaires peuvent être lancés avec make test-unit.

Vous pouvez également générer un rapport sur la couverture de tests :

coverage run manage.py test --settings sites_faciles.config.settings_test

Indexation des contenus

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

Scalingo

Le script est lancé automatiquement après les déploiements sur Scalingo.

Il est recommandé de procéder à une nouvelle indexation une fois par semaine, en renommant le fichier cron.json.example en cron.json (cf. documentation de Scalingo)

Autres déploiements

Il est recommandé de faire de même pour les déploiements sur d’autres plateformes, en ajoutant une ligne à la crontab de l’utilisateur avec lequel tourne le site :

0 3 * * SUN python manage.py update_index

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sites_faciles-0.0.2.tar.gz (376.5 kB view details)

Uploaded Source

Built Distribution

sites_faciles-0.0.2-py3-none-any.whl (387.6 kB view details)

Uploaded Python 3

File details

Details for the file sites_faciles-0.0.2.tar.gz.

File metadata

  • Download URL: sites_faciles-0.0.2.tar.gz
  • Upload date:
  • Size: 376.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.6 Linux/6.6.54-2-MANJARO

File hashes

Hashes for sites_faciles-0.0.2.tar.gz
Algorithm Hash digest
SHA256 e2c47b4e1f109b12d72950fde167e15030ef27f78bd37aa9933267365dbf6fdf
MD5 7434ded9ce73e67afa3439e785da47d9
BLAKE2b-256 6536a48d6df4df648d4a2c65ee8aefa29bbcb90e7e5e7a16db6c47e7a15910d2

See more details on using hashes here.

File details

Details for the file sites_faciles-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: sites_faciles-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 387.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.6 Linux/6.6.54-2-MANJARO

File hashes

Hashes for sites_faciles-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8429dfd8f67d9550e0281ad9de791fd733eebd8c40b9fcf0733cfd045237be39
MD5 a93d279559a3b9344f1bbd0653f76f46
BLAKE2b-256 b622e5979c8be993530be869b3c2aea8447f5ebd93cbeb033b9955a9d621499d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page