sites-faciles


Namesites-faciles JSON
Version 0.0.2 PyPI version JSON
download
home_pagehttps://github.com/chris2fr/sites-faciles
SummaryGestionnaire 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
upload_time2024-11-11 10:46:25
maintainerChris Mann
docs_urlNone
authorChris Mann
requires_python<4.0,>=3.11
licenseNone
keywords wagtail
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Sites-Faciles 


Sur la base de l'application gestionnaire de contenu CMS et blog sous technologie Wagtail [sites-facile de la DINUM, France](https://github.com/numerique-gouv/sites-faciles), elle-même à base de l'application de mise en page de site dynamique Django [django-dsfr](https://github.com/numerique-gouv/django-dsfr), elle même basé sur le [Design Système de l'Etat ou DSFR du gouvernement français](https://github.com/GouvernementFR/dsfr/), cette application gestionnaire de contenu dit CMS et blog [Sites-Faciles](https://github.com/chris2fr/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](https://github.com/GouvernementFR/dsfr/blob/main/doc/legal/cgu.md#2-conditions-dutilisation-des-composants-par-les-autres-utilisateurs) 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](https://github.com/chris2fr/sites-faciles) avec [django-design-system](https://github.com/chris2fr/django-design-system) [Module Python django-design-system](https://pypi.org/project/django-design-system/
) et [design-system](https://github.com/chris2fr/design-system).

```mermaid
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:

```sql
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;
```

```bash
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](https://python-poetry.org/docs/#installation)

#### 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

```sh
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 :
```sh
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](https://docs.wagtail.org/en/stable/topics/search/indexing.html))

### 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](https://doc.scalingo.com/platform/app/task-scheduling/scalingo-scheduler))

### 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
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/chris2fr/sites-faciles",
    "name": "sites-faciles",
    "maintainer": "Chris Mann",
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": "chris@mann.fr",
    "keywords": "wagtail",
    "author": "Chris Mann",
    "author_email": "chris@mann.fr",
    "download_url": "https://files.pythonhosted.org/packages/65/36/a48d6df4df648d4a2c65ee8aefa29bbcb90e7e5e7a16db6c47e7a15910d2/sites_faciles-0.0.2.tar.gz",
    "platform": null,
    "description": "# Sites-Faciles \n\n\nSur la base de l'application gestionnaire de contenu CMS et blog sous technologie Wagtail [sites-facile de la DINUM, France](https://github.com/numerique-gouv/sites-faciles), elle-m\u00eame \u00e0 base de l'application de mise en page de site dynamique Django [django-dsfr](https://github.com/numerique-gouv/django-dsfr), elle m\u00eame bas\u00e9 sur le [Design Syst\u00e8me de l'Etat ou DSFR du gouvernement fran\u00e7ais](https://github.com/GouvernementFR/dsfr/), cette application gestionnaire de contenu dit CMS et blog [Sites-Faciles](https://github.com/chris2fr/sites-faciles) propose de capitaliser sur le travail de fond pour le traitement d'information et de la communication en rendant les composants g\u00e9n\u00e9riques. \n\nLes [conditions d\u2019utilisation de DSFR pour des acteurs priv\u00e9s](https://github.com/GouvernementFR/dsfr/blob/main/doc/legal/cgu.md#2-conditions-dutilisation-des-composants-par-les-autres-utilisateurs) sont claires : \n\n> 2\u00b0 Conditions d\u2019utilisation des Composants par les Autres Utilisateurs\n> \n> Tous les Autres Utilisateurs sont autoris\u00e9s \u00e0 utiliser le code source selon les conditions de la licence MIT.\n> \n> Il est express\u00e9ment rappel\u00e9 aux Autres Utilisateurs que toute utilisation des Composants en dehors des limites vis\u00e9es aux pr\u00e9sentes ou dans le but de les d\u00e9tourner et de s\u2019approprier d\u2019une mani\u00e8re ou d\u2019une autre la Marque de l\u2019\u00c9tat est punissable de sanctions civiles et/ou p\u00e9nales.\n\nLes conditions de l'utilisation de dango-design-system and sites-faciles (content_manager) sont encore moins probl\u00e9matiques un fois que la question fondamentale du DSFR est trait\u00e9e de mani\u00e8re responsable. Le d\u00e9fi est de proposer un deal \u00e9quitable et sympa pour l'Etat. Cela serait aid\u00e9, je pense, par la contribution fondamentale de proposer des th\u00e8mes graphiques tr\u00e8s diff\u00e9rents de la charte du DSFR. Il y a encore un peu de travail \u00e0 faire dans ce sens, mais c'est bien parti.\n\nMa\u00eetriser l'ensemble de la cha\u00eene de design-system \u00e0 django-design-system \u00e0 wagtail-design-system \u00e0 sites-faciles a \u00e9t\u00e9 une joie parce-que les d\u00e9veloppements sont propres et faits de mani\u00e8re responsable.  \n\n\nVoici un autre diagramme autour de l'id\u00e9e de faire un outil publiquement utilisable [wagtail-design-system](https://github.com/chris2fr/sites-faciles) avec [django-design-system](https://github.com/chris2fr/django-design-system) [Module Python django-design-system](https://pypi.org/project/django-design-system/\n) et [design-system](https://github.com/chris2fr/design-system).\n\n```mermaid\nflowchart TD\n\nsubgraph GouvernementFR\n\tDSFR\nend\nsubgraph numerique-gouv\n\tdjango-dsfr\n\tsites-faciles\nend\nsubgraph ResDigita \n\tdesign-system\n\tdjango-design-system\n\twagtail-design-system\n\tresdigita-sites-faciles\nend\n\n\ndjango-dsfr -.-> Django \nsites-faciles-.-> Wagtail \ndjango-design-system -.-> Django\nwagtail-design-system -.-> Wagtail \nDSFR -.-> NodeJS \ndesign-system  -.-> NodeJS \n\nDSFR --> django-dsfr\ndjango-dsfr --> sites-faciles\nDSFR --> uniquement-generique{{Reprise uniquement\\ndes \u00e9l\u00e9ments\\ng\u00e9n\u00e9riques}}\nuniquement-generique --> design-system\ndesign-system --> django-design-system\n\ndjango-dsfr --> intro-submodules{{Introduction\\nde submodules\\npar desgin de site}}\nintro-submodules --> django-design-system\ndjango-design-system --> wagtail-design-system --> resdigita-sites-faciles\nsites-faciles --> wagtail-design-system\n\nDjango --> Wagtail\n```\n\nVoici des notes al\u00e9atoires:\n\n```sql\nCREATE USER sitesfaciles  with ENCRYPTED PASSWORD 'SOMEPASSWORD';\nCREATE DATABASE \"sitesfaciles\" WITH OWNER \"sitesfaciles\" ENCODING 'UTF8';\nALTER database sitesfaciles owner to sitesfaciles;\nGRANT ALL privileges ON DATABASE sitesfaciles TO sitesfaciles;\n```\n\n```bash\ngit clone git@github.com:chris2fr/sites-faciles.git\npython -m venv venv\nsource venv/bin/activate\npip install pre-commit django\ncp .env.example .env\npython -c \"from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())\"\nvi .env\npre-commit install\npre-commit run --all-files\npoetry install\npoetry run python manage.py makemigrations\nmake migrations\nmake collectstatic\npoetry run python manage.py createsuperuser\n```\n\n```\nSECRET_KEY=<VALUE>\nDEBUG=False\nHOST_PROTO=http\n# HOST_URL and ALLOWED_HOSTS: use 0.0.0.0 for Docker\nHOST_URL=0.0.0.0\nALLOWED_HOSTS=localhost, 127.0.0.1, sites-pfaciles.resdigita.com\nHOST_PORT=8890\nSITE_NAME=Sites Faciles\nMEDIA_ROOT=medias\n\n\n```\n\n## Texte reproduite de la DINUM\n\n**Cr\u00e9ez et g\u00e9rez votre site internet simplement**\n\nGestionnaire de contenu (CMS) pour cr\u00e9er un site internet dont le domaine se terminant par .gouv.fr . Pas besoin de comp\u00e9tence technique pour mettre \u00e0 jours le contenu.\n\n**Un CMS bas\u00e9 sur la solution open source Wagtail**\n\nCr\u00e9ez ou modifiez des pages, ajoutez un menu de navigation, des boutons, images, vid\u00e9os, contributeurs etc\n\n**Syst\u00e8me de Design de l'\u00c9tat**\n\nConstruisez vos pages \u00e0 l'aide de composants pr\u00eats \u00e0 l'emploi issus du Syst\u00e8me de Design de l'\u00c9tat (DSFR)\n\n**Accessible et responsive**\n\nLe contenu des pages g\u00e9n\u00e9r\u00e9es par le CMS est partiellement conforme selon la norme RGAA 4.1 et responsive\n\n## Pr\u00e9requis\n\n- Python 3.10\n- Postgreql 14.x.\n\n## Installer les pre-commit hooks\n\n```\npre-commit install\n```\n\nOn peut faire un premier test en faisant tourner :\n\n```\npre-commit run --all-files\n```\n\n## Installation\n\nLe projet peut se lancer en local ou avec Docker.\n\n### Dans tous les cas, copier les variables d\u2019environnement\n\n- Copier le fichier\n```\ncp .env.example .env\n```\n\n- G\u00e9n\u00e9rer la `SECRET_KEY`\n```\npython -c \"from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())\"\n```\n\n- Mettre les valeurs pertinentes dans le fichier `.env`\n\n### En local\n#### Installer poetry s\u2019il ne l\u2019est pas\n\nCf. la [documentation de poetry](https://python-poetry.org/docs/#installation)\n\n#### Installer le projet\n\n- La commande suivante installe les d\u00e9pendances, fait les migrations et collecte les fichiers\n```\nmake init\n```\n\n#### Cr\u00e9er un utilisateur\n\n- La commande suivante cr\u00e9e un utilisateur administrateur avec tous les droits:\n\n```\npoetry run python manage.py createsuperuser\n```\n\n#### Lancer le serveur\n\n```\nmake runserver\n```\n\n### via Docker\n#### Lancer les containers\n\n```sh\ndocker compose up\n```\n\n### Effectuer les tests\nLes tests unitaires peuvent \u00eatre lanc\u00e9s avec `make test-unit`.\n\nVous pouvez \u00e9galement g\u00e9n\u00e9rer un rapport sur la couverture de tests :\n```sh\ncoverage run manage.py test --settings sites_faciles.config.settings_test\n```\n\n## Indexation des contenus\nLes contenus des pages sont index\u00e9s pour la recherche par un script `python manage.py update_index` (cf. [documentation de Wagtail](https://docs.wagtail.org/en/stable/topics/search/indexing.html))\n\n### Scalingo\nLe script est lanc\u00e9 automatiquement apr\u00e8s les d\u00e9ploiements sur Scalingo.\n\nIl est recommand\u00e9 de proc\u00e9der \u00e0 une nouvelle indexation une fois par semaine, en renommant le fichier `cron.json.example` en `cron.json` (cf. [documentation de Scalingo](https://doc.scalingo.com/platform/app/task-scheduling/scalingo-scheduler))\n\n### Autres d\u00e9ploiements\nIl est recommand\u00e9 de faire de m\u00eame pour les d\u00e9ploiements sur d\u2019autres plateformes, en ajoutant une ligne \u00e0 la crontab de l\u2019utilisateur avec lequel tourne le site :\n\n```\n0 3 * * SUN python manage.py update_index\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Gestionnaire de contenu permettant de cr\u00e9er et g\u00e9rer un site internet bas\u00e9 sur le Syst\u00e8me de design de l'\u00c9tat, accessible et responsive",
    "version": "0.0.2",
    "project_urls": {
        "Homepage": "https://github.com/chris2fr/sites-faciles",
        "Repository": "https://github.com/chris2fr/sites-faciles/tree/sites-faciles"
    },
    "split_keywords": [
        "wagtail"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b622e5979c8be993530be869b3c2aea8447f5ebd93cbeb033b9955a9d621499d",
                "md5": "a93d279559a3b9344f1bbd0653f76f46",
                "sha256": "8429dfd8f67d9550e0281ad9de791fd733eebd8c40b9fcf0733cfd045237be39"
            },
            "downloads": -1,
            "filename": "sites_faciles-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a93d279559a3b9344f1bbd0653f76f46",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 387569,
            "upload_time": "2024-11-11T10:46:23",
            "upload_time_iso_8601": "2024-11-11T10:46:23.821283Z",
            "url": "https://files.pythonhosted.org/packages/b6/22/e5979c8be993530be869b3c2aea8447f5ebd93cbeb033b9955a9d621499d/sites_faciles-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6536a48d6df4df648d4a2c65ee8aefa29bbcb90e7e5e7a16db6c47e7a15910d2",
                "md5": "7434ded9ce73e67afa3439e785da47d9",
                "sha256": "e2c47b4e1f109b12d72950fde167e15030ef27f78bd37aa9933267365dbf6fdf"
            },
            "downloads": -1,
            "filename": "sites_faciles-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "7434ded9ce73e67afa3439e785da47d9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 376547,
            "upload_time": "2024-11-11T10:46:25",
            "upload_time_iso_8601": "2024-11-11T10:46:25.643003Z",
            "url": "https://files.pythonhosted.org/packages/65/36/a48d6df4df648d4a2c65ee8aefa29bbcb90e7e5e7a16db6c47e7a15910d2/sites_faciles-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-11 10:46:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "chris2fr",
    "github_project": "sites-faciles",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "sites-faciles"
}
        
Elapsed time: 0.35468s