From 2c293a400e09a0ebe6ed710546c6be7c0a2dc8ed Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 27 Nov 2024 15:25:29 +0100 Subject: [PATCH 01/15] =?UTF-8?q?R=C3=A9solution=20de=20deux=20bugs=20conc?= =?UTF-8?q?ernant=20les=20blogs=20(#240)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Solve two bugs on blogs * Improve feed links labels * Update pre-commit versions * Force zoneinfo to be recognized as standard library * Fix python version requirement for ruff to behave properly * Syntax issues in pyproject.toml --- .pre-commit-config.yaml | 4 +- blog/locale/fr/LC_MESSAGES/django.mo | Bin 2748 -> 3076 bytes blog/locale/fr/LC_MESSAGES/django.po | 98 ++++++----- .../0038_blogindexpage_feed_posts_limit.py | 25 +++ blog/models.py | 164 ++++++++++++++++-- blog/templates/blog/blocks/feeds.html | 27 +++ blog/templates/blog/blog_entry_page.html | 7 +- blog/templates/blog/blog_index_page.html | 12 +- blog/templates/blog/categories_list_page.html | 9 +- blog/tests.py | 4 - blog/tests/__init__.py | 0 blog/tests/test_views.py | 112 ++++++++++++ blog/urls.py | 29 ---- blog/views.py | 156 +---------------- config/urls.py | 1 - pyproject.toml | 8 +- 16 files changed, 402 insertions(+), 254 deletions(-) create mode 100644 blog/migrations/0038_blogindexpage_feed_posts_limit.py create mode 100644 blog/templates/blog/blocks/feeds.html delete mode 100644 blog/tests.py create mode 100644 blog/tests/__init__.py create mode 100644 blog/tests/test_views.py delete mode 100644 blog/urls.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a81131be..1ce3fbe6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,11 +2,11 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.9 + rev: v0.8.0 hooks: - id: ruff args: [ --fix, --exit-non-zero-on-fix ] - repo: https://github.com/psf/black - rev: 23.11.0 + rev: 24.10.0 hooks: - id: black diff --git a/blog/locale/fr/LC_MESSAGES/django.mo b/blog/locale/fr/LC_MESSAGES/django.mo index 9efe6853e52798e959b26614160a7ef099cb60c5..c7000ea4a5f2551b705b2a4bb8d681bc49298da1 100644 GIT binary patch delta 1227 zcmZY7KTK0m6vy#fpoM}~DWahKxghedDppYp4#Yt>g-~NOYP8Z{qH#71E<|1Y{@PL#J?VX)+xyz{&OPtGY@BP#ErqM@ z7$U-GVYohH4&eI=F2wUnV}kesH{$~C!6mH4a8>bsE4K2z2ep0(Yj6zL;z?YClOb=ZyVxDNw(9JPTnXmJu% z;7x4f`Nm@sV&MsH!PnS~pHT&^pmtJ2Hm%pA5=Kyk?8OZ@j4EWbw0;^J_#Ve0oW&?U z#typt1%o`__{gr-*P&Y9i`sDll`xBgm_u4-@~9oWLOu8$>i1u96E35E7of`R7)Et; z1UKS%>3a%uTDZzYt@V)CYVM=fAD{|&ib}A6JMkm(4CAK??J$J>*oi9S2=?MB)GL}p zosGNLg?Uuri?#G$iI!PV>sL^fH*nEr`P|8FZhZ|9VgdLkC`6Q0QR_bwh_rRc~V`B8+~9-n~LCx0(>$44ox~Hl%K> zhC0dq49BS)Z3(7okxpzML+3z2hYQifRXb&4riY<+cQSMk)lzfN%}m*(<0SshY%-Iz z?ghtA#9e1Hlf67YR(adkV$-RqlxtJdg?r<%*g*NeGu~p=4I7IU6LG6B`8SVu!v8ZA zjqcbzWTS(_gF}&BQSWTvL-*nI>?NyQraZG3GqYKnj;n-)N7RsV<_D^O`}&V&rp{*_ toA`F^UOeljCeqG~O~j{XtR_h%S}n}$3qI^BBxI$SS%v+d*n1oN@dy2Dnf?F( delta 904 zcmYk*zfV(97{>9p(o(!YK`PLqNQ*yGYr)$BDcV24n26xw(1n<|nBZWH3sJk&IM|q) z8wPYTnh<9a<3LrtdoI<)N^fPWC%j;^ zOZ2n!TOqRve0qWlZKlO+4DXyDnn(Xvs9L9`c}1p&RLby_n=IVH+|eXR$@9x zN(l|yU9L2pznZF`|AgZ$!Qdi2O+W7*=mSd8m8~k)OHb0(RH5a~me--67I_xrT6bgq gwUK-=l`mZP$FKN>z>lsiXWIUUf+_EP5O4pt4~J1lv;Y7A diff --git a/blog/locale/fr/LC_MESSAGES/django.po b/blog/locale/fr/LC_MESSAGES/django.po index 18255ea5..13d7b4ee 100644 --- a/blog/locale/fr/LC_MESSAGES/django.po +++ b/blog/locale/fr/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-17 12:04+0200\n" -"PO-Revision-Date: 2024-09-17 12:04+0200\n" +"POT-Creation-Date: 2024-11-27 14:45+0100\n" +"PO-Revision-Date: 2024-11-27 14:47+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -18,19 +18,19 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 3.4.2\n" -#: blog/blocks.py:9 blog/models.py:37 blog/models.py:65 +#: blog/blocks.py:9 blog/models.py:39 blog/models.py:67 msgid "Name" msgstr "Nom" -#: blog/blocks.py:10 blog/models.py:66 +#: blog/blocks.py:10 blog/models.py:68 msgid "Role" msgstr "Fonction" -#: blog/blocks.py:11 blog/models.py:54 +#: blog/blocks.py:11 blog/models.py:56 msgid "Organization" msgstr "Organisation" -#: blog/blocks.py:12 blog/models.py:68 +#: blog/blocks.py:12 blog/models.py:70 msgid "Contact info" msgstr "Informations de contact" @@ -42,120 +42,124 @@ msgstr "Texte riche" msgid "Contact card" msgstr "Carte contact" -#: blog/models.py:93 +#: blog/models.py:95 msgid "Person" msgstr "Personne" -#: blog/models.py:105 +#: blog/models.py:107 msgid "Category name" msgstr "Nom de la catégorie" -#: blog/models.py:112 +#: blog/models.py:114 msgid "Parent category" msgstr "Catégorie parente" -#: blog/models.py:119 +#: blog/models.py:121 msgid "Description" msgstr "Description" -#: blog/models.py:120 +#: blog/models.py:122 msgid "Displayed on the top of the category page" msgstr "Affiché en haut de la page de la catégorie" -#: blog/models.py:126 +#: blog/models.py:128 msgid "Text displayed at the end of every page in the category" msgstr "Texte affiché à la fin de chaque page de la catégorie" -#: blog/models.py:153 +#: blog/models.py:155 msgid "Parent category cannot be self." msgstr "La catégorie ne peut être sa propre parente." -#: blog/models.py:155 +#: blog/models.py:157 msgid "Cannot have circular Parents." msgstr "Il est impossible d’avoir des parents circulaires." -#: blog/models.py:164 blog/models.py:183 +#: blog/models.py:166 blog/models.py:185 msgid "Category" msgstr "Catégorie" -#: blog/models.py:165 blog/models.py:273 blog/models.py:390 -#: blog/templates/blog/categories_list_page.html:20 blog/views.py:117 +#: blog/models.py:167 blog/models.py:279 blog/models.py:460 blog/models.py:467 +#: blog/models.py:518 msgid "Categories" msgstr "Catégories" -#: blog/models.py:199 +#: blog/models.py:201 msgid "Posts per page" msgstr "Articles par page" -#: blog/models.py:203 blog/templates/blog/blog_index_page.html:77 +#: blog/models.py:207 +msgid "Post limit in the RSS/Atom feeds" +msgstr "Nombre d’articles dans les flux RSS/Atom" + +#: blog/models.py:211 blog/templates/blog/blog_index_page.html:85 msgid "Filter by category" msgstr "Filtrer par catégorie" -#: blog/models.py:204 blog/templates/blog/blog_index_page.html:94 +#: blog/models.py:212 blog/templates/blog/blog_index_page.html:102 msgid "Filter by tag" msgstr "Filtrer par étiquette" -#: blog/models.py:205 blog/templates/blog/blog_index_page.html:111 +#: blog/models.py:213 blog/templates/blog/blog_index_page.html:119 msgid "Filter by author" msgstr "Filtrer par auteur" -#: blog/models.py:207 blog/templates/blog/blog_index_page.html:126 +#: blog/models.py:215 blog/templates/blog/blog_index_page.html:134 msgid "Filter by source" msgstr "Filtrer par source" -#: blog/models.py:207 +#: blog/models.py:215 msgid "The source is the organization of the post author" msgstr "La source est l’organisation à laquelle appartient l’auteur de l’article" -#: blog/models.py:219 +#: blog/models.py:228 msgid "Show filters" msgstr "Afficher les filtres" -#: blog/models.py:226 +#: blog/models.py:235 msgid "Blog index" msgstr "Index de blog" -#: blog/models.py:255 blog/templates/blog/tags_list_page.html:20 -#: blog/views.py:149 +#: blog/models.py:262 blog/models.py:483 blog/models.py:497 +#: blog/templates/blog/tags_list_page.html:20 msgid "Tags" msgstr "Étiquettes" -#: blog/models.py:260 +#: blog/models.py:267 #, python-format msgid "Posts tagged with %(tag)s" msgstr "Articles avec l’étiquette %(tag)s" -#: blog/models.py:278 +#: blog/models.py:284 #, python-format msgid "Posts in category %(category)s" msgstr "Articles dans la catégorie %(category)s" -#: blog/models.py:289 blog/models.py:291 blog/models.py:302 blog/models.py:305 +#: blog/models.py:294 blog/models.py:296 blog/models.py:306 blog/models.py:309 msgid "Posts written by" msgstr "Articles écrits par" -#: blog/models.py:309 +#: blog/models.py:314 #, python-format msgid "Posts published in %(year)s" msgstr "Articles publiés en %(year)s" -#: blog/models.py:392 +#: blog/models.py:520 msgid "Post date" msgstr "Date de publication" -#: blog/models.py:394 +#: blog/models.py:522 msgid "Author entries can be created in Snippets > Persons" msgstr "Les auteurs peuvent être créés via Fragments > Personnes" -#: blog/models.py:413 +#: blog/models.py:541 msgid "Scheduled publishing" msgstr "Publication planifiée" -#: blog/models.py:421 +#: blog/models.py:549 msgid "Tags and Categories" msgstr "Étiquettes et Catégories" -#: blog/models.py:437 +#: blog/models.py:565 msgid "Blog page" msgstr "Page de blog" @@ -163,12 +167,28 @@ msgstr "Page de blog" msgid "No article found." msgstr "Aucun article trouvé." -#: blog/templates/blog/blog_entry_page.html:74 +#: blog/templates/blog/blocks/feeds.html:10 +msgid "Atom feed for the category" +msgstr "Flux Atom pour la catégorie" + +#: blog/templates/blog/blocks/feeds.html:12 +msgid "Atom feed" +msgstr "Flux Atom" + +#: blog/templates/blog/blocks/feeds.html:20 +msgid "RSS feed for the category" +msgstr "Flux RSS pour la catégorie" + +#: blog/templates/blog/blocks/feeds.html:22 +msgid "RSS feed" +msgstr "Flux RSS" + +#: blog/templates/blog/blog_entry_page.html:79 msgid "Posted by:" msgstr "Écrit par :" -#: blog/templates/blog/blog_index_page.html:72 -#: blog/templates/blog/blog_index_page.html:74 +#: blog/templates/blog/blog_index_page.html:80 +#: blog/templates/blog/blog_index_page.html:82 msgid "Filters" msgstr "Filtres" diff --git a/blog/migrations/0038_blogindexpage_feed_posts_limit.py b/blog/migrations/0038_blogindexpage_feed_posts_limit.py new file mode 100644 index 00000000..caf285e5 --- /dev/null +++ b/blog/migrations/0038_blogindexpage_feed_posts_limit.py @@ -0,0 +1,25 @@ +# Generated by Django 5.1.3 on 2024-11-27 10:47 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("blog", "0037_alter_blogentrypage_body_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="blogindexpage", + name="feed_posts_limit", + field=models.PositiveSmallIntegerField( + default=20, + validators=[ + django.core.validators.MaxValueValidator(100), + django.core.validators.MinValueValidator(1), + ], + verbose_name="Post limit in the RSS/Atom feeds", + ), + ), + ] diff --git a/blog/models.py b/blog/models.py index 96b85a2f..3cca040f 100644 --- a/blog/models.py +++ b/blog/models.py @@ -5,21 +5,23 @@ from django.db import models from django.db.models import BooleanField, Count, QuerySet from django.db.models.expressions import F +from django.http import HttpRequest, HttpResponse from django.shortcuts import get_object_or_404 from django.template.defaultfilters import slugify -from django.urls import reverse -from django.utils import timezone -from django.utils.translation import get_language, gettext_lazy as _ +from django.utils import feedgenerator, timezone +from django.utils.translation import gettext_lazy as _ from modelcluster.fields import ParentalKey, ParentalManyToManyField from modelcluster.tags import ClusterTaggableManager from rest_framework import serializers from taggit.models import TaggedItemBase +from unidecode import unidecode from wagtail.admin.panels import FieldPanel, FieldRowPanel, MultiFieldPanel, TitleFieldPanel from wagtail.admin.widgets.slug import SlugInput from wagtail.api import APIField +from wagtail.contrib.routable_page.models import RoutablePageMixin, path from wagtail.fields import RichTextField, StreamField from wagtail.models import Orderable -from wagtail.models.i18n import Locale, TranslatableMixin +from wagtail.models.i18n import TranslatableMixin from wagtail.search import index from wagtail.snippets.models import register_snippet @@ -192,13 +194,19 @@ class TagEntryPage(TaggedItemBase): content_object = ParentalKey("BlogEntryPage", related_name="entry_tags") -class BlogIndexPage(SitesFacilesBasePage): +class BlogIndexPage(RoutablePageMixin, SitesFacilesBasePage): posts_per_page = models.PositiveSmallIntegerField( default=10, validators=[MaxValueValidator(100), MinValueValidator(1)], verbose_name=_("Posts per page"), ) + feed_posts_limit = models.PositiveSmallIntegerField( + default=20, + validators=[MaxValueValidator(100), MinValueValidator(1)], + verbose_name=_("Post limit in the RSS/Atom feeds"), + ) + # Filters filter_by_category = models.BooleanField(_("Filter by category"), default=True) filter_by_tag = models.BooleanField(_("Filter by tag"), default=True) @@ -209,6 +217,7 @@ class BlogIndexPage(SitesFacilesBasePage): settings_panels = SitesFacilesBasePage.settings_panels + [ FieldPanel("posts_per_page"), + FieldPanel("feed_posts_limit"), MultiFieldPanel( [ FieldPanel("filter_by_category"), @@ -234,16 +243,14 @@ def posts(self): ) return posts - def get_context(self, request, tag=None, category=None, author=None, source=None, year=None, *args, **kwargs): + def get_context(self, request, *args, **kwargs): context = super(BlogIndexPage, self).get_context(request, *args, **kwargs) posts = self.posts - locale = Locale.objects.get(language_code=get_language()) extra_breadcrumbs = None extra_title = "" - if tag is None: - tag = request.GET.get("tag") + tag = request.GET.get("tag") if tag: tag = get_object_or_404(Tag, slug=tag) posts = posts.filter(tags=tag) @@ -251,7 +258,7 @@ def get_context(self, request, tag=None, category=None, author=None, source=None "links": [ {"url": self.get_url(), "title": self.title}, { - "url": reverse("blog:tags_list", kwargs={"blog_slug": self.slug}), + "url": f"{self.get_url()}{self.reverse_subpage('tags_list')}", "title": _("Tags"), }, ], @@ -259,17 +266,16 @@ def get_context(self, request, tag=None, category=None, author=None, source=None } extra_title = _("Posts tagged with %(tag)s") % {"tag": tag} - if category is None: - category = request.GET.get("category") + category = request.GET.get("category") if category: - category = get_object_or_404(Category, slug=category, locale=locale) + category = get_object_or_404(Category, slug=category, locale=self.locale) posts = posts.filter(blog_categories=category) extra_breadcrumbs = { "links": [ {"url": self.get_url(), "title": self.title}, { - "url": reverse("blog:categories_list", kwargs={"blog_slug": self.slug}), + "url": f"{self.get_url()}{self.reverse_subpage('categories_list')}", "title": _("Categories"), }, ], @@ -277,8 +283,7 @@ def get_context(self, request, tag=None, category=None, author=None, source=None } extra_title = _("Posts in category %(category)s") % {"category": category.name} - if source is None: - source = request.GET.get("source") + source = request.GET.get("source") if source: source = get_object_or_404(Organization, slug=source) posts = posts.filter(authors__organization=source) @@ -290,8 +295,7 @@ def get_context(self, request, tag=None, category=None, author=None, source=None } extra_title = _("Posts written by") + f" {source.name}" - if author is None: - author = request.GET.get("author") + author = request.GET.get("author") if author: author = get_object_or_404(Person, id=author) @@ -304,6 +308,7 @@ def get_context(self, request, tag=None, category=None, author=None, source=None posts = posts.filter(authors=author) extra_title = _("Posts written by") + f" {author.name}" + year = request.GET.get("year") if year: posts = posts.filter(date__year=year) extra_title = _("Posts published in %(year)s") % {"year": year} @@ -380,6 +385,129 @@ def list_tags(self, min_count: int = 1) -> list: def show_filters(self) -> bool | BooleanField: return self.filter_by_category or self.filter_by_tag or self.filter_by_author or self.filter_by_source + def feed_posts(self, feed, request): + """ + Returns the posts for a RSS or ATOM feed relative to the parameters + """ + posts = self.posts + + category = request.GET.get("category") + if category: + category = get_object_or_404(Category, slug=category, locale=self.locale) + posts = posts.filter(blog_categories=category) + + limit = int(request.GET.get("limit", self.feed_posts_limit)) + posts = posts[:limit] + + for post in posts: + feed.add_item( + post.title, + post.full_url, + pubdate=post.date, + description=post.search_description, + ) + + return feed + + @path("rss/", name="rss_feed") + def rss_view(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + """ + Return the current blog as a RSS feed + """ + + if self.seo_title: + title = self.seo_title + else: + title = self.title + + feed = feedgenerator.Rss201rev2Feed( + title=title, + link=self.full_url, + description=self.search_description, + language=self.locale.language_code, + feed_url=f"{self.full_url}{self.reverse_subpage('rss_feed')}", + ) + feed = self.feed_posts(feed, request) + + response = HttpResponse(feed.writeString("UTF-8"), content_type="application/xml") + return response + + @path("atom/", name="atom_feed") + def atom_view(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + """ + Return the current blog as an Atom feed + """ + + if self.seo_title: + title = self.seo_title + else: + title = self.title + + feed = feedgenerator.Atom1Feed( + title=title, + link=self.full_url, + description=self.search_description, + language=self.locale.language_code, + feed_url=f"{self.full_url}{self.reverse_subpage('atom_feed')}", + ) + feed = self.feed_posts(feed, request) + + response = HttpResponse(feed.writeString("UTF-8"), content_type="application/xml") + return response + + @path("categories/", name="categories_list") + def categories_list(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + extra_title = _("Categories") + categories = self.list_categories() + + extra_breadcrumbs = { + "links": [ + {"url": self.get_url(), "title": self.title}, + ], + "current": _("Categories"), + } + + return self.render( + request, + context_overrides={ + "categories": categories, + "page": self, + "extra_title": extra_title, + "extra_breadcrumbs": extra_breadcrumbs, + }, + template="blog/categories_list_page.html", + ) + + @path("tags/", name="tags_list") + def tags_list(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + extra_title = _("Tags") + tags = self.list_tags() + + tags_by_first_letter = {} + for tag in tags: + first_letter = unidecode(tag["tag_slug"][0].upper()) + if first_letter not in tags_by_first_letter: + tags_by_first_letter[first_letter] = [] + tags_by_first_letter[first_letter].append(tag) + + extra_breadcrumbs = { + "links": [ + {"url": self.get_url(), "title": self.title}, + ], + "current": _("Tags"), + } + + return self.render( + request, + context_overrides={ + "sorted_tags": tags_by_first_letter, + "page": self, + "extra_title": extra_title, + "extra_breadcrumbs": extra_breadcrumbs, + }, + template="blog/tags_list_page.html", + ) + class BlogEntryPage(SitesFacilesBasePage): tags = ClusterTaggableManager(through="TagEntryPage", blank=True) diff --git a/blog/templates/blog/blocks/feeds.html b/blog/templates/blog/blocks/feeds.html new file mode 100644 index 00000000..b3d95651 --- /dev/null +++ b/blog/templates/blog/blocks/feeds.html @@ -0,0 +1,27 @@ + +{% load wagtailroutablepage_tags i18n %} + + diff --git a/blog/templates/blog/blog_entry_page.html b/blog/templates/blog/blog_entry_page.html index 65157c5f..b8d5ea20 100644 --- a/blog/templates/blog/blog_entry_page.html +++ b/blog/templates/blog/blog_entry_page.html @@ -51,7 +51,12 @@
{% include "content_manager/blocks/breadcrumbs.html" %} -

{{ page.title }}

+ {% if not page.header_with_title %} +

+ {{ page.title }} + {% include "content_manager/blocks/page_visibility.html" %} +

+ {% endif %}

diff --git a/blog/templates/blog/blog_index_page.html b/blog/templates/blog/blog_index_page.html index ec187e8f..6170c9fe 100644 --- a/blog/templates/blog/blog_index_page.html +++ b/blog/templates/blog/blog_index_page.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load static dsfr_tags wagtailcore_tags wagtailimages_tags wagtail_dsfr_tags i18n %} +{% load static dsfr_tags wagtailcore_tags wagtailimages_tags wagtailroutablepage_tags wagtail_dsfr_tags i18n %} {% block title %} {{ page.seo_title|default:page.title }} — {{ settings.content_manager.CmsDsfrConfig.site_title }} @@ -19,6 +19,14 @@ + + {% if page.get_translations.live %} {% for translation in page.get_translations.live %} @@ -145,6 +153,7 @@

{% translate "Filter by source" %}

{% if posts.paginator.num_pages > 1 %}
{% dsfr_pagination posts %}
{% endif %} + {% include "blog/blocks/feeds.html" %} {% else %} @@ -152,6 +161,7 @@

{% translate "Filter by source" %}

{% if posts.paginator.num_pages > 1 %}
{% dsfr_pagination posts %}
{% endif %} + {% include "blog/blocks/feeds.html" %} {% endif %} {% endblock content %} diff --git a/blog/templates/blog/categories_list_page.html b/blog/templates/blog/categories_list_page.html index 9750c4e6..72729f73 100644 --- a/blog/templates/blog/categories_list_page.html +++ b/blog/templates/blog/categories_list_page.html @@ -16,8 +16,13 @@ {% include "content_manager/blocks/messages.html" %}
- {% dsfr_breadcrumb breadcrumb %} -

{% translate "Categories" %}

+ {% include "content_manager/blocks/breadcrumbs.html" %} + {% if not page.header_with_title %} +

+ {{ page.title }} + {% if extra_title %}: {{ extra_title }}{% endif %} +

+ {% endif %}
    {% for category in categories|dictsort:"cat_name" %}
  • diff --git a/blog/tests.py b/blog/tests.py deleted file mode 100644 index d2b618f3..00000000 --- a/blog/tests.py +++ /dev/null @@ -1,4 +0,0 @@ -# from django.test import TestCase - - -# Create your tests here. diff --git a/blog/tests/__init__.py b/blog/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/blog/tests/test_views.py b/blog/tests/test_views.py new file mode 100644 index 00000000..4be9d8d9 --- /dev/null +++ b/blog/tests/test_views.py @@ -0,0 +1,112 @@ +import zoneinfo +from datetime import datetime + +from django.contrib.auth.models import User +from wagtail.models import Page +from wagtail.test.utils import WagtailPageTestCase + +from blog.models import BlogEntryPage, BlogIndexPage, Person +from content_manager.models import ContentPage + + +class BlogTestCase(WagtailPageTestCase): + def setUp(self): + self.home = Page.objects.get(slug="home") + self.admin = User.objects.create_superuser("test", "test@test.test", "pass") + self.admin.save() + self.blog_index_page = self.home.add_child( + instance=BlogIndexPage( + title="Actualités", + slug="actualités", + owner=self.admin, + ) + ) + self.blog_index_page.save() + + self.paris_tz = zoneinfo.ZoneInfo("Europe/Paris") + self.blog_post = self.blog_index_page.add_child( + instance=BlogEntryPage( + title="J’accuse", + date=datetime(1898, 6, 13, 6, 0, 0, tzinfo=self.paris_tz), + owner=self.admin, + ) + ) + + self.emile = Person.objects.create(name="Émile Zola") + self.blog_post.authors.add(self.emile) + self.blog_post.save() + + def test_blog_index_page_is_renderable(self): + self.assertPageIsRenderable(self.blog_index_page) + + def test_blog_index_page_has_minimal_content(self): + response = self.client.get(self.blog_index_page.url) + self.assertEqual(response.status_code, 200) + + self.assertContains( + response, + "Actualités — Titre du site", + ) + + def test_blog_index_page_has_posts(self): + response = self.client.get(self.blog_index_page.url) + + self.assertContains( + response, + "J’accuse", + ) + self.assertContains( + response, + "Publié le lundi 13 juin 1898", + ) + + def test_blog_post_is_renderable(self): + self.assertPageIsRenderable(self.blog_post) + + def test_blog_post_has_minimal_content(self): + response = self.client.get(self.blog_post.url) + self.assertEqual(response.status_code, 200) + + self.assertContains( + response, + "J’accuse — Titre du site", + ) + + def test_blog_has_rss_feed(self): + response = self.client.get(self.blog_index_page.url + "rss/") + self.assertEqual(response.status_code, 200) + + def test_deep_blog_works(self): + new_parent = self.home.add_child( + instance=ContentPage( + title="Page intermédiaire", + owner=self.admin, + ) + ) + deep_blog_index_page = new_parent.add_child( + instance=BlogIndexPage( + title="Nouveau blog", + slug="nouveau-blog", + owner=self.admin, + ) + ) + deep_blog_index_page.save() + + new_blog_post = deep_blog_index_page.add_child( + instance=BlogEntryPage( + title="Livres d’aujourd’hui et de demain", + date=datetime(1869, 9, 7, 6, 0, 0, tzinfo=self.paris_tz), + owner=self.admin, + ) + ) + new_blog_post.authors.add(self.emile) + new_blog_post.save() + + self.assertPageIsRenderable(deep_blog_index_page) + + self.assertPageIsRenderable(new_blog_post) + + response = self.client.get(deep_blog_index_page.url + "rss/") + print(deep_blog_index_page.url + "rss/") + print(response) + self.assertEqual(response.status_code, 200) diff --git a/blog/urls.py b/blog/urls.py deleted file mode 100644 index 4d66fad7..00000000 --- a/blog/urls.py +++ /dev/null @@ -1,29 +0,0 @@ -from django.urls.conf import path - -from blog import views - -app_name = "blog" - -urlpatterns = [ - path( - "/categories//feed/", - views.LatestCategoryFeed(), - name="category_feed", - ), - path("/categories/", views.CategoriesListView.as_view(), name="categories_list"), - path("/categories//", views.category_view, name="category"), - path("/tags//", views.tag_view, name="tag"), - path("/tags/", views.TagsListView.as_view(), name="tags_list"), - path("/authors//", views.author_view, name="author"), - path("/archives//", views.year_view, name="archive_year"), - path( - "/rss/", - views.LatestEntriesFeed(), - name="latest_entries_feed", - ), - path( - "/atom/", - views.LatestEntriesFeedAtom(), - name="latest_entries_feed_atom", - ), -] diff --git a/blog/views.py b/blog/views.py index ee8845ec..60f00ef0 100644 --- a/blog/views.py +++ b/blog/views.py @@ -1,155 +1 @@ -from django.contrib.syndication.views import Feed -from django.shortcuts import get_object_or_404 -from django.utils.feedgenerator import Atom1Feed -from django.utils.translation import get_language, gettext_lazy as _ -from django.views.generic import TemplateView -from unidecode import unidecode -from wagtail.models.i18n import Locale - -from blog.models import BlogEntryPage, BlogIndexPage, Category - - -def get_localized_index(slug): - locale = Locale.objects.get(language_code=get_language()) - return get_object_or_404(BlogIndexPage, locale=locale, slug=slug) - - -def tag_view(request, blog_slug: str, tag: str): - index = get_localized_index(blog_slug) - return index.serve(request, tag=tag) - - -def category_view(request, blog_slug: str, category: str): - index = get_localized_index(blog_slug) - return index.serve(request, category=category) - - -def author_view(request, blog_slug: str, author_id: str): - index = get_localized_index(blog_slug) - return index.serve(request, author=author_id) - - -def year_view(request, blog_slug: str, year: str): - index = get_localized_index(blog_slug) - return index.serve(request, year=year) - - -class LatestEntriesFeed(Feed): - """ - If a URL ends with "rss" try to find a matching BlogIndexPage - and return its items. - """ - - def get_object(self, request, *args, **kwargs): - blog_slug = kwargs.pop("blog_slug") - return get_object_or_404(BlogIndexPage, slug=blog_slug) - - def title(self, blog): - if blog.seo_title: # pragma: no cover - return blog.seo_title - return blog.title - - def link(self, blog): - return blog.full_url - - def description(self, blog): - return blog.search_description - - def items(self, blog): - return blog.get_descendants().order_by("-first_published_at")[:10] - - def item_title(self, item): - return item.title - - def item_description(self, item): - return item.specific.body - - def item_link(self, item): - return item.full_url - - def item_pubdate(self, blog): - return blog.first_published_at - - -class LatestEntriesFeedAtom(LatestEntriesFeed): - feed_type = Atom1Feed - - -class LatestCategoryFeed(Feed): - description = "A Blog" - - def title(self, category): - return "Blog: " + category.name - - def link(self, category): - return "/blog/category/" + category.slug - - def get_object(self, request, *args, **kwargs): - category = kwargs.pop("category") - return get_object_or_404(Category, slug=category) - - def items(self, obj): - return BlogEntryPage.objects.filter(blog_categories=obj).order_by("-date")[:5] - - def item_title(self, item): - return item.title - - def item_description(self, item): - return item.body - - -class CategoriesListView(TemplateView): - template_name = "blog/categories_list_page.html" - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - categories = [] - blog_slug = kwargs.get("blog_slug") - blog_index = get_localized_index(blog_slug) - if blog_index: - categories = blog_index.list_categories() - - breadcrumb = { - "links": [ - {"url": blog_index.get_url(), "title": blog_index.title}, - ], - "current": _("Categories"), - } - - context["categories"] = categories - context["page"] = blog_index - context["breadcrumb"] = breadcrumb - return context - - -class TagsListView(TemplateView): - template_name = "blog/tags_list_page.html" - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - tags = [] - blog_slug = kwargs.get("blog_slug") - blog_index = get_localized_index(blog_slug) - if blog_index: - tags = blog_index.list_tags() - - tags_by_first_letter = {} - for tag in tags: - first_letter = unidecode(tag["tag_slug"][0].upper()) - if first_letter not in tags_by_first_letter: - tags_by_first_letter[first_letter] = [] - tags_by_first_letter[first_letter].append(tag) - - breadcrumb = { - "links": [ - {"url": blog_index.get_url(), "title": blog_index.title}, - ], - "current": _("Tags"), - } - - context["sorted_tags"] = tags_by_first_letter - context["page"] = blog_index - context["breadcrumb"] = breadcrumb - return context +# Create your views here. diff --git a/config/urls.py b/config/urls.py index af33b678..68a5e10c 100644 --- a/config/urls.py +++ b/config/urls.py @@ -14,7 +14,6 @@ ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += i18n_patterns( - path("", include("blog.urls", namespace="blog")), path("", include("content_manager.urls")), prefix_default_language=False, ) diff --git a/pyproject.toml b/pyproject.toml index 8107118e..4d624e8c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,6 @@ +[project] +requires-python = ">=3.10" + [tool.poetry] name = "content-manager" version = "1.10.2" @@ -111,8 +114,9 @@ exclude = [ line-length = 119 -lint.select = ["E", "F", "I"] -lint.ignore = ["E203", "E266"] +[tool.ruff.lint] +select = ["E", "F", "I"] +ignore = ["E203", "E266"] # E203: Whitespace before ':', used to please Black in `yield items[i : i + n]` # E266: Too many leading '#' for block comment From 070b6622df6edfe6a08b5b0b4f9f9c24856acc8f Mon Sep 17 00:00:00 2001 From: Gary van Woerkens Date: Tue, 3 Dec 2024 08:55:25 +0100 Subject: [PATCH 02/15] chore: setup CD (#241) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: setup CD (#1) * fix: ghcr * fix: cd on all branches (#2) * fix: port * formatting * chore: update docker image workflow name --------- Co-authored-by: Matéo Mévollon <38255502+matmut7@users.noreply.github.com> Co-authored-by: Matéo Mévollon --- .github/workflows/cd.yml | 31 +++++++++++++++++++++++++++++++ Dockerfile | 11 +++++++---- 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000..05c5cbd7 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,31 @@ +name: 📦 Docker Image Build & Push + +on: + push: + branches: + - "**" + +jobs: + docker: + runs-on: ubuntu-latest + name: Build and push Docker image + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Inject enhanced GitHub environment variables + uses: rlespinasse/github-slug-action@v5 + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + tags: | + ghcr.io/${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}/sites-faciles:${{ env.GITHUB_REF_SLUG }} + ${{ github.ref_name == 'main' && format('ghcr.io/{0}/sites-faciles:latest', env.GITHUB_REPOSITORY_OWNER_PART_SLUG) || '' }} + cache-from: type=registry,ref=ghcr.io/${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}/sites-faciles:${{ env.GITHUB_REF_SLUG }} + cache-to: type=inline diff --git a/Dockerfile b/Dockerfile index d36ecc35..d96a6644 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.10 -EXPOSE ${HOST_PORT} +EXPOSE ${CONTAINER_PORT} ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 @@ -13,10 +13,13 @@ ENV POETRY_HOME=/opt/poetry ENV POETRY_VENV=/opt/poetry-venv ENV POETRY_CACHE_DIR=/opt/.cache +# Needed for docker build to succeed +ENV DATABASE_URL=postgres://user:password@localhost:5432/db + # Add new user to run the whole thing as non-root. RUN set -ex \ - && addgroup app \ - && adduser --ingroup app --home ${APP_DIR} --disabled-password app; + && addgroup --gid 1000 app \ + && adduser --uid 1000 --gid 1000 --home ${APP_DIR} --disabled-password app; # Install poetry separated from system interpreter RUN python3 -m venv ${POETRY_VENV} \ @@ -40,4 +43,4 @@ USER app ENTRYPOINT ["./entrypoint.sh"] # https://stackoverflow.com/a/40454758/21676629 -CMD ["sh", "-c", "poetry run python manage.py runserver 0.0.0.0:$HOST_PORT"] +CMD ["sh", "-c", "poetry run python manage.py runserver 0.0.0.0:$CONTAINER_PORT"] From 0118b820f18461fa6dad66bad040a9f1b621cc91 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Thu, 5 Dec 2024 15:35:56 +0100 Subject: [PATCH 03/15] [Catalogue] Carte contact verticale (#242) * Setting the new block aside for now * Work on the contact card * Finish code for contact cards --- ..._body_alter_blogindexpage_body_and_more.py | 3844 +++++++++++++++++ content_manager/blocks.py | 86 + .../locale/fr/LC_MESSAGES/django.mo | Bin 22968 -> 23443 bytes .../locale/fr/LC_MESSAGES/django.po | 241 +- .../migrations/0049_alter_contentpage_body.py | 1394 ++++++ .../blocks/contact_card_vertical.html | 55 + ...trypage_body_alter_eventsindexpage_body.py | 2774 ++++++++++++ static/css/style.css | 2 +- static/css/style.sass | 11 + 9 files changed, 8302 insertions(+), 105 deletions(-) create mode 100644 blog/migrations/0039_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py create mode 100644 content_manager/migrations/0049_alter_contentpage_body.py create mode 100644 content_manager/templates/content_manager/blocks/contact_card_vertical.html create mode 100644 events/migrations/0011_alter_evententrypage_body_alter_eventsindexpage_body.py diff --git a/blog/migrations/0039_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py b/blog/migrations/0039_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py new file mode 100644 index 00000000..b0bcb20b --- /dev/null +++ b/blog/migrations/0039_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py @@ -0,0 +1,3844 @@ +# Generated by Django 5.1.3 on 2024-12-05 14:24 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("blog", "0038_blogindexpage_feed_posts_limit"), + ] + + operations = [ + migrations.AlterField( + model_name="blogentrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [[("image", 42), ("quote", 43), ("author_name", 44), ("author_title", 45), ("color", 37)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ("wagtail.blocks.StructBlock", [[("title", 50), ("content", 51)]], {"label": "Transcription"}), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 99: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 100: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 101: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 74), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 42), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="blogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [[("image", 42), ("quote", 43), ("author_name", 44), ("author_title", 45), ("color", 37)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ("wagtail.blocks.StructBlock", [[("title", 50), ("content", 51)]], {"label": "Transcription"}), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 99: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 100: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 101: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 74), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 42), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="category", + name="colophon", + field=wagtail.fields.StreamField( + [("paragraph", 0), ("imageandtext", 14), ("quote", 20), ("multicolumns", 134), ("contact_card", 138)], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 3: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 4: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 5: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 8: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 9: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 10: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7), ("icon", 8), ("size", 9)]], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 11: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 13: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 1), + ("image_side", 2), + ("image_ratio", 3), + ("text", 0), + ("link", 10), + ("link_label", 11), + ("page", 12), + ("link_url", 13), + ] + ], + {"label": "Bloc image et texte"}, + ), + 15: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 17: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 18: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 19: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.StructBlock", + [[("image", 15), ("quote", 16), ("author_name", 17), ("author_title", 18), ("color", 19)]], + {"label": "Citation"}, + ), + 21: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 22: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 27: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 28: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 30: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 31: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 26), + ("image", 1), + ("alt", 27), + ("width", 28), + ("image_ratio", 29), + ("caption", 30), + ("url", 31), + ] + ], + {"label": "Image"}, + ), + 33: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 34: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 37: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 38: ( + "wagtail.blocks.StructBlock", + [[("title", 36), ("content", 37)]], + {"label": "Transcription", "required": False}, + ), + 39: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 33), + ("caption", 30), + ("url", 34), + ("width", 28), + ("video_ratio", 35), + ("transcription", 38), + ] + ], + {"label": "Video"}, + ), + 40: ("wagtail.blocks.StructBlock", [[("title", 36), ("content", 37)]], {"label": "Transcription"}), + 41: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 44: ( + "wagtail.blocks.StreamBlock", + [[("title", 41), ("accordion", 43)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 45: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 46: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 47: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 4), + ("document", 5), + ("external_url", 6), + ("text", 7), + ("button_type", 48), + ("icon_class", 46), + ("icon_side", 49), + ] + ], + {"label": "Button", "required": False}, + ), + 51: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 45), + ("icon_class", 46), + ("text", 47), + ("button", 50), + ("color", 19), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 52: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("text", 52), ("color", 19), ("size", 53)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("image", 15), ("quote", 16), ("author_name", 17), ("author_title", 18), ("color", 19)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 56: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 57: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 58: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 59: ("wagtail.blocks.StructBlock", [[("title", 41), ("detail", 58)]], {"label": "Step"}), + 60: ("wagtail.blocks.StreamBlock", [[("step", 59)]], {"label": "Steps"}), + 61: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("total", 56), ("current", 57), ("steps", 60)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 62: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 4), + ("document", 5), + ("external_url", 6), + ("text", 7), + ("button_type", 48), + ("icon_class", 46), + ("icon_side", 49), + ] + ], + {"label": "Button"}, + ), + 64: ( + "wagtail.blocks.StreamBlock", + [[("button", 63)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 65: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 64)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 66: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 62), ("cta_buttons", 65), ("cta_label", 66), ("cta_url", 67)]], + {"label": "Text and call to action"}, + ), + 69: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7), ("icon", 8), ("size", 9)]], + {"label": "Single link"}, + ), + 70: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 71: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 72: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 73: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("title", 70), ("url", 71), ("height", 72), ("parameters", 73)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 75: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 76: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 77: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6)]], + {"label": "Link", "required": False}, + ), + 78: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 80: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 81: ( + "wagtail.blocks.StructBlock", + [[("text", 78), ("color", 79), ("hide_icon", 80)]], + {"label": "Badge"}, + ), + 82: ("wagtail.blocks.StreamBlock", [[("badge", 81)]], {}), + 83: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 84: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 85: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6)]], + {"required": False}, + ), + 86: ( + "wagtail.blocks.StructBlock", + [[("label", 41), ("is_small", 83), ("color", 84), ("icon_class", 46), ("link", 85)]], + {"label": "Tag"}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 86)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 82), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 93: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 96: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 41), + ("heading_tag", 45), + ("description", 75), + ("image", 76), + ("link", 77), + ("top_detail_badges_tags", 88), + ("detail_text", 89), + ("is_small", 90), + ("grey_background", 91), + ("no_background", 92), + ("no_border", 93), + ("shadow", 94), + ("is_horizontal", 95), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 97: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 98: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 99: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 100: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 101: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 102: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 103: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 105: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 97), + ("blog", 98), + ("entries_count", 99), + ("category_filter", 100), + ("tag_filter", 101), + ("author_filter", 102), + ("source_filter", 103), + ("show_filters", 104), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 106: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 107: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 97), + ("index_page", 106), + ("entries_count", 99), + ("category_filter", 100), + ("tag_filter", 101), + ("author_filter", 102), + ("source_filter", 103), + ("show_filters", 104), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 108: ( + "wagtail.blocks.StreamBlock", + [[("badge", 81)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 109: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 110: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 111: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 112: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 114: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 115: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7)]], + {"label": "Link"}, + ), + 116: ("wagtail.blocks.StreamBlock", [[("link", 115)]], {}), + 117: ( + "wagtail.blocks.StreamBlock", + [[("links", 116), ("buttons", 64)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card with grey background", "required": False}, + ), + 119: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 120: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 121: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 122: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 41), + ("heading_tag", 45), + ("description", 47), + ("image", 15), + ("image_ratio", 29), + ("image_badge", 108), + ("link", 77), + ("url", 109), + ("document", 110), + ("top_detail_text", 111), + ("top_detail_icon", 112), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 113), + ("bottom_detail_icon", 114), + ("call_to_action", 117), + ("grey_background", 118), + ("no_background", 119), + ("no_border", 120), + ("shadow", 121), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 123: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 124: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 125: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 126: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 127: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 128: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 129: ("wagtail.blocks.StreamBlock", [[("tag", 86)]], {"label": "Tags", "required": False}), + 130: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 124), + ("link", 77), + ("heading_tag", 26), + ("name", 125), + ("role", 126), + ("organization", 127), + ("contact_info", 128), + ("image", 15), + ("tags", 129), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 131: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 32), + ("video", 39), + ("transcription", 40), + ("accordions", 44), + ("callout", 51), + ("highlight", 54), + ("quote", 55), + ("stepper", 61), + ("text_cta", 68), + ("link", 69), + ("iframe", 74), + ("tile", 96), + ("blog_recent_entries", 105), + ("events_recent_entries", 107), + ("card", 122), + ("contact_card", 130), + ] + ], + {"label": "Column content"}, + ), + 132: ( + "wagtail.blocks.StructBlock", + [[("width", 123), ("content", 131)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 133: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 32), + ("video", 39), + ("transcription", 40), + ("accordions", 44), + ("callout", 51), + ("highlight", 54), + ("quote", 55), + ("stepper", 61), + ("text_cta", 68), + ("link", 69), + ("iframe", 74), + ("tile", 96), + ("blog_recent_entries", 105), + ("events_recent_entries", 107), + ("card", 122), + ("column", 132), + ] + ], + {"label": "Columns"}, + ), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 21), + ("bg_color_class", 22), + ("bg_color", 23), + ("title", 24), + ("heading_tag", 25), + ("columns", 133), + ] + ], + {"label": "Multi-colonnes"}, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255}), + 137: ("wagtail.blocks.CharBlock", (), {"label": "Organization", "max_length": 255}), + 138: ( + "wagtail.blocks.StructBlock", + [[("name", 135), ("role", 136), ("organization", 137), ("contact_info", 128), ("image", 1)]], + {"label": "Contact card"}, + ), + }, + help_text="Text displayed at the end of every page in the category", + ), + ), + ] diff --git a/content_manager/blocks.py b/content_manager/blocks.py index 8f5c99fe..b37a94e3 100644 --- a/content_manager/blocks.py +++ b/content_manager/blocks.py @@ -717,6 +717,91 @@ class Meta: template = "content_manager/blocks/video.html" +class VerticalContactCardStructValue(blocks.StructValue): + def display(self): + contact = self.get("contact", None) + + name = self.get("name", "") + if contact and not name: + name = contact.name + + role = self.get("role", "") + if contact and not role: + role = contact.role + + organization = self.get("organization", "") + if contact and not organization: + organization = contact.organization.name + + image = self.get("image", "") + if contact and not image: + image = contact.image + + return {"name": name, "role": role, "organization": organization, "image": image} + + def enlarge_link(self): + """ + Determine if we need (and can) enlarge the link on the card. + This requires: + - That a link is present + - That no other link is used on the card (such as a tag with a link, or a call-to-action) + """ + link = self.get("link") + tags = self.get("tags") + call_to_action = self.get("call_to_action", "") + + if not (link and link.url()): + return False + + enlarge = True + if len(call_to_action): + enlarge = False + elif len(tags): + print(tags) + print(tags.raw_data) + tags_list = tags.raw_data + for tag in tags_list: + if ( + tag["value"]["link"]["page"] is not None + or tag["value"]["link"]["document"] is not None + or tag["value"]["link"]["external_url"] != "" + ): + enlarge = False + + return enlarge + + +class VerticalContactCardBlock(blocks.StructBlock): + contact = SnippetChooserBlock( + "blog.Person", + label=_("Person"), + help_text=_("Optional, all values can be manually specified or overriden below"), + required=False, + ) + link = LinkWithoutLabelBlock( + label=_("Link"), + required=False, + ) + heading_tag = blocks.ChoiceBlock( + label=_("Heading level"), + choices=HEADING_CHOICES, + required=False, + default="h3", + help_text=_("Adapt to the page layout. Defaults to heading 3."), + ) + name = blocks.CharBlock(label=_("Name"), max_length=255, required=False) + role = blocks.CharBlock(label=_("Role"), max_length=255, required=False) + organization = blocks.CharBlock(label=_("Organization"), max_length=255, required=False) + contact_info = blocks.CharBlock(label=_("Contact info"), max_length=500, required=False) + image = ImageChooserBlock(label="Image", required=False) + tags = TagListBlock(label=_("Tags"), required=False) + + class Meta: + icon = "user" + value_class = VerticalContactCardStructValue + template = ("content_manager/blocks/contact_card_vertical.html",) + + ## Other apps-related blocks class RecentEntriesStructValue(blocks.StructValue): """ @@ -877,6 +962,7 @@ class Meta: class ColumnBlock(CommonStreamBlock): card = VerticalCardBlock(label=_("Vertical card"), group=_("DSFR components")) + contact_card = VerticalContactCardBlock(label=_("Contact card"), group=_("Extra components")) class ItemGridBlock(blocks.StructBlock): diff --git a/content_manager/locale/fr/LC_MESSAGES/django.mo b/content_manager/locale/fr/LC_MESSAGES/django.mo index 1e68d355272be7ee9555b4cde556d814ec185af9..2b741e942ca3a44d7c53738dde3850268fc59fbb 100644 GIT binary patch delta 6949 zcmY+|30Rd?9>?*6fGmOv?x1i{TmeOJ%OxqrHP^~gNAn6-MS+X=f=iQg)ly5#YSc_~ zvau|eER`&moHVy)%C(#_wOlIAEORThw7$Rl9_D%GJpTEdbMAZ3`#;P3LTxS&S@2#+ z;H&tsMTXKU#F+ZHFv^%E)MIL>*O-!e#^m5c9Elr|OH5pXG0~Wasn`S?Vqa{G#n=cJ zVkU03evfgq6B2_4OgfcVI_}27cpvt}<@g|;!))wAc2#g9#^5xpj&rdUzGT}UV>s;- zsO!&Ie?ldE3pIi825JY4sYWG?js(=ClWjX2o6_!J`$t(zQ3*eZy1@%r8CTf$YK)-0 z32WkZbm0-y_*bnFNygOX{w9%%zL15QQAgYEi}AGYM^@d8!8$k{HPDNw8NG>-_#SFy zcA!>ZKUT$0ZT}h6eJ-KK`xOKFLR_-*#U#`PX||n>8aT(cd!q&%V%r|9M%#x3}+1 zLr_~X2Q{HZsFhq{Ek~{7ZrlDGb^ZC2fRpJjbm+9+MxEXij~9hJy#RKkZ*hwha1g7sR!R_<6M$wHaMqcV1(mN*+VKsVd&XB~mM zaS?ye@0X&Ug6Y;pSW0^hW^sR$+{9VZ!Pd!GmkXAmGT(&Z_Z=}iTZvw)Yc8O?U5Ksdje`jOEC>+p(d~aL%F|smx?mpirTY1sMCJ}`DbqM zL$Ayf);9vPQ8(^{>hF(Q>QSgf3T=C;{d^W`g%+a@^&626}NGY68EZwkkS<^{+yu zZiaJVDr%sX7=zgui#e#7_D5}v50%(_)Y86!ygJN!)ObfwEBY1cP+mrj7v9oYfq2w? z8U(0lMh#J!HnSIGp>EIxHP8UtKN>sGEd!i{tPn=BuBJ zH10lRVgd6B75z5)8g+x4s3nWzBxy#CaR#O#e><3USRFsI9z)IK0&3>hQO|j3w)2?Q zL(RM;#$guL!0y2|`~NVNcsj;o8=Qt(;*EF|f57#)lMhqT*VehwVpM`FQ7g9=wfCE> zJ5gJ+A4lL(R07%U9CI;R&;LVIG|*_|Q8(kTHa?FUU=^l>kOcOkeWblH!!eO8HS@`+ z8_z_}nVFB=%e-&Bf*ol$yNlO3=2=%@KpCB;qBq)A)JjBh^#Dw?PQX0c+mL@Ixsx-4 zVOWE9Ay&ib$TpkjP+PGRHL-)JEjx-;@jKM@*E_NQ!N;Pr^M!cS;c#I+Y>XP9EAk7{ zS^aZBj4NSz;F06ljDmh*F&4(jUnLmbF zk+~R&%WZoVHlV#7mB?|_id{n`5W)ItOKPCTNkS!%j!L)<>iWK@aYqKIXa-|ZUzmn^ z3g)4{_$q3t)}jvCHrw8V8t^FUbYDab{4;81p& zn~q!9Qy1hod-*grroA1N@mbUoU$kDuWZJio2gM{Xx)Sb>T9J{cgvO&1oQ+C+iPH|4 z^|oUd>MVST+M{!ri#6_bUMxdVdpZww=$2v=d<*rxqo^64L7kzisDy8zZXD9h+0vS* zEovS#z@FHSuGT)*2T?N_g}Px0Y9>$E{#Q^>&wA^JsFnH5wvVH>@<-H+!@D~P)W-*D zx5moc-^`(+3+AIv`%2VI*V_KAs2Lna9m;R8A>KqKR-a{Rhne^^j>S~GhP*0Fy&le1 z3_^`F0(HL<3_L+)4i%C#F>Ji{av(O+1*lWL5Oqk`p_XnJhT{ROjGti`9!G7#Db&m_ z+jdkh=P66TG4!`b7rxw!=f4@159rWibsn{(l{tx8fw~xpO;M*c6LrJ!s6-~B-V=|Z z5`6)cz}waxs4YB(~^6%6d75<}%vREDQeGq{FY`mp}I z&oLI0@MTp0cI#f$(jP=^&3W5@33dGqYn=hkjoV=f{r6x3_ct4hXFF_5Bm5gwJ9GUPNutHQSCF>>Tbm)b))pg7aruP>IJZ z)WEq|6$fH0K7yJ_5h}5%sDvIzt;kaR7nUQhf8*o8uy|$zD#4HkjG2yi;RM`@W3UNt zp@3%m3>9U%0JU_hPy_G9c>Ef5-4&dKH&BPlJH%O$=TXz0T(N1}Y{nrQCbZ{6V-5Dd*EJd8N#3s^RA%Xd8qRj&hJ=_cGfUwN$9HtUsL;^VjE%(p}o9Cyh*4;@P&#}o%)9~{!Khb zcb*Z`X0f+WqwqYA}VuA?<92SDvGwJqI_;EY254(^|=JE1M@m@fM^iH{;O!O|4ZywgOW@<7OegM zk7x!8B~)tSC0s)^Q3pk5LFH%S58_?oQG)Yo!npn)IEYZu|L|O9?{6;Bu{zkzbIAu? zZG9GgWb4Q9d%|zqB8qF#J7Y>V~5~-;4t-Hh}*XBRh(_>i8kRXj)CAGjruH! zj&l5t7(kpM66iaQ2MHd1bCM__&J!w|i7Uh%H7Hk!b;Lbt*m46q5S5)9n!nlp7jT27 z5<}%hqAnLakM9vG3y9B%n?xI;qU2Edofu8DB?^f!qL>&=^dZI&uMlNK3&KUHyi6P+ zGKg62*IY~4f=Vn_lrL>175_;j5)TkdiS9)34FvZS+lYFEO1wkxXE;Bn5tWH>##c$V zPNM!pu!pTopwihk^omtkOspi%5u=D7 z(0;!Pb(K>(O0{k0+jM-PUR&zWKbd+b+a8E7*?N0?+SbKzq8G7>m_SS+-Xb~@e<3Q$ zQ&j#=%q02}cWM7mQ>iE^+;kp|TKJ>weBastM-a~vyNEPGC5os+d`0vlDoRf(k;JdW zYqm3)aqAH(S;VI){0O0AlX`6VD>k9ehcO}L2kO2NUdx?V>dJHb@=Z5yaj6;w#bdnX zB}r2%RnMJL>T|pDyhSD6Vo!0Yzx!5OdHjq}>>BNH z6}gMc=$-2Fmw56D#uRw+U0$EdJIUko736z#NuhVL8Q>f1E-rY~t#QhSG_Mg7?(zA( z#S6x^*c>+4Tj(iIN?RWto0XB-*44Ug$E@tM%+}?{+fIu}b^A&^hv+T|}RDJk5wx`-LL3w$1bd4rt2(W9JM6nmIPskf|@DHIaS z##83=yGlG|lepfsYfY)o!(?`?)@*jI<`QoiBl_~jxqV}U?Yx4Fe2?GnE%V!X`JH*4 f=`%DWa$s;`#hwKn?>igW!&{seoO1ns%VPcn651nD delta 6464 zcmYM(30##`8prVi0$vbQ5Jg11;EJIrDB^;Jlz@p^S;C0f<^ozFE{$8gW~pU5nP^rn zsbi5zZa0^5CT%7i%{?p27L1zQE4NZBo!|ey2j_e~58rdn``+`O^PKZuu*$atZ1n{= z-$n&3G?b(OW18ZSP-Es&UlOHWV-7VoCJPVaP>hN-hFeS-hT#-!i8HY|uEAD#09)WC z?1+t?gyeLRgF@ORrzW);D- zGg0?vTl=FXJQ%fr;r_N`OevKhIwoTSbZomE+t7Z+_V2KMikk3A)B}FS5DbiW+o4#S zc0-KDcuc@F)c6CfBe4GXOPS0Xpg^vo}ma4K&lXUqlVC#J1O9J=$AQ6WNW*z;RRt&f4}x z%%FY4n&EZZrP!PP3QWgyUgP*v(;~qbw$I#wn!tmo6_lVRP>L+pJcT+;OHf;|AGPAI zP?vg1$4L?TD{h`)=t)*s0HLYR5auJP^m4pH%zqc>DKwE2d_j;v;sBJjo1ix zqaIv^d3Xvn!8Deuv(gQf(SE3j4n$?ld6a=gNevIR3S7937OTMX^S=LJAE5$K~sc7b>F&HmduVD~v)7mu{HK8!nikhG@ zk%G!ZHyn%uZ2N8GoS7Y{R3Are)laDB{f-`gtf64_24nK z{~1)O7osMz!nW7i>+hp7v=8-qevNu-E+M;SqS!Z$*9EnJKImwM1ypn>hF~a;Mtxuc zk|pyhY7cjyQhE{ffCjg?_a~!PmX4ZW7HT2+7>Yx2CKlWNpHT}8NGAW<^HB1o8|$Ik zv8b7Qtv&7aA}pnUIBLS5p;qz(*1-#?ajv5l=HcWjQxT~9nxGbzg!;b8Z%6($(_%W5 zy2;3^Y-XbdtVE@3E9%hg#c-^`Fg%NT&~K=T|ACr7V0-s^IBNVD)HrQze)6GqHqr2^QlK9EO>E4{P8RsFl5m`la$7>H$Yk89Reo&<%VVgBhIP z>}D3$*ZaTHtr#C_B_Ck~9z?y@-=JQ@i>Q@*IEj%Mj(R{d+fKtM+IL`QEI_4r4t|C^ zaXl{X6jS6*}^>9m0gS}())jziUznl!+r1&WP408a<6&Wx(~b44rE!kVo&Q-)P%NS zH15YJti}O&+1k6CF^|w*h#KcAI{IK|T1sUO*2BTbc9~JAtyqj&*=l6Z%sSNTw*z(m zK@7(#)ct2sXX6^`Ox!?yKDLMZH=-9C)6VWe{*|I4IvV0wRO+8YeHAZ2J!mm1g>R$2 zfHoqpxcLO*@H+BWm}!#9dB6~cSS9r7wWzORAwGPovBjWo`hQP^QgnT+@Yd@R-sn11vP;q zsDY|bDL;X|@CveRraK2fj>kT@7ISqSwRKsyxqso5p(eNpmC@za3iQ%;)>7e(Fb7aG z4$N{V5QUmpGt`VzZ9C7li%@$$7PS=)_Qo}sisw;V*MeE=Y^9-om*k*6_ZYG;$4sW8 z!}0=Zrt?q_eigNMm8h-w(7Mlh)LLylhg!fD)B`=)ZbqA;`n#eId!BVLhUoo&)OL)+ z7;cz>TJciU1m4B_a1Sbl-rL>ltx>1CCu*g)+x~k{3n)Q-ekwM{mrxUX7rWqYoWt|Y z4Js{h&K>Tb$s15-;1p`0%cu!?$nUf0MLuFyp%+hL3ti7~4|6-zVeE~{ToDH22n@kT zF$l+@!ycH4RJ8KvQSBAj6gT1sJctR{g%g&91sIRhP$^x8%D{Tm7H&r!&fOS-fqCvk zLNS(hH0rHO$s_-IU@jf95Vcn&sMl^1YT#MO`7|$ME&Lp7<1tibsxb+#Vn=MwE5RFU z2BNOdLyc2m+nZ4f+~0@%>w%}~&;+ib+I8-9_bLvx1szZ+&bE#~e$|`V=zncdpF4s| z?f0m?KZ)9kKT-EL=?W}HJMk;(?tULL_Pyoh!1I_h-^%XcRfgL+Uh&chzq z4ELc2&sZ;^Qv4@s3mWxv?~Au)qMqXvQ5i#J1UA8=sFYnm4G`Mjok(-k15!{c%RpVv z$7CFi9q=XF{~>CeW2m!o9<`u)1KfkfL|cr#%9so?yup`Q4?%^4~xK|IGX31Dk>we??89O8&Nae zib~yn)WBy@6AQZ6y)OozpdF7oLkmzD*^IjX5JuxE)Wol&4r@5yX1Xs49lcK3RP-L_ z*b9ZIvoO}S=i=?OD=-JoU`hZdc@V3m{ZN7Xhe~3hdpHYF86AoB@p06|9qWA5gx)A5 z|Kq9n?2So(aVOFZwby-7dsm2^@j=uV)k4(Pyo1ccj3#PIm^vtL5FH6EgarFD*#*}V zDyxWm?Z3(fg6|H0nZi%Ty;)A%S`R!==qzlqed6y#7C}<{WjH^5#BO4YzlVQ-`aww{W)W2cuk+3FwXMB*vxnai)SD4M z5`QB$5-W-3L;z#!0IK}M#sBlyn{}q%h@1YPBh7YZ;^mt+81oGEPi;F9gYAUNslP-l zCseKw7yPyV|5!lv5u!1lnTqp?1nOr|<#^5Pj?kD*+*)21-JpD0bdZxvs~NWrLzRCL zKl^L$k0S8c_CfrZ7)N-Ccs>`6?TJr_!Nf?Sn5ajLBBF@z36%$kw#0vl3Zk34r|$P# z0|xtrPL*4T&xyy08AN@q)s&sK5=Y-=>Zvss@FC&_+m7J+bX#9&tz*YYr`^uq$HqKi zFCIXBoy;U&w0)6Q@eMJLXlVzjroNb{O?x$}yhi*^{F`V)zlRt|{V5`ls40u6bS9!4 zZurjjhEUI;9*HWi5KW12H7Lo%HDZk#ly8aKh!aFhq6wcX#MgNf@p~OW(rHts{ukmXL-?sHTv7fCs#&?O2h+afp#<>g65w(dg ziIc=3LM4HS4dBI$qY^`?yhk+UgU@2HI;g)YZD~#WL0cbzF|;RQSK=74jtHV}JN}DM zX+@kOqUk@3?-MFph#Sh+E-H@^iQMoOP9s$260M1SM0Y}^1yPIp^uIBB`+N8=0oGbr zV(WZ0KOS2V?Cani7wGdPmU?_;w?qY$&raU#>)mc$SVYJ6X`K^N)4QjqCwENq1!O!~ e+qdf0U4g!ty>^EAD)S2i$|L$$`>ym~9R5F(WutZg diff --git a/content_manager/locale/fr/LC_MESSAGES/django.po b/content_manager/locale/fr/LC_MESSAGES/django.po index 1cc92ae1..9cb6feb7 100644 --- a/content_manager/locale/fr/LC_MESSAGES/django.po +++ b/content_manager/locale/fr/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-24 15:55+0200\n" -"PO-Revision-Date: 2024-10-24 15:55+0200\n" +"POT-Creation-Date: 2024-12-05 15:22+0100\n" +"PO-Revision-Date: 2024-12-05 15:23+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -26,13 +26,13 @@ msgstr "Afficher le titre sur l’image d’en-tête ?" msgid "Header image" msgstr "Image d’en-tête" -#: content_manager/abstract.py:39 content_manager/blocks.py:939 -#: content_manager/blocks.py:980 content_manager/blocks.py:1013 +#: content_manager/abstract.py:39 content_manager/blocks.py:1025 +#: content_manager/blocks.py:1066 content_manager/blocks.py:1099 msgid "Background color" msgstr "Couleur de fond" -#: content_manager/abstract.py:43 content_manager/blocks.py:941 -#: content_manager/blocks.py:982 content_manager/blocks.py:1015 +#: content_manager/abstract.py:43 content_manager/blocks.py:1027 +#: content_manager/blocks.py:1068 content_manager/blocks.py:1101 msgid "Uses the French Design System colors" msgstr "Utilise les couleurs du système de design de l'État" @@ -147,7 +147,7 @@ msgstr "Libellé du lien" #: content_manager/blocks.py:107 content_manager/blocks.py:282 #: content_manager/blocks.py:390 content_manager/blocks.py:533 -#: content_manager/blocks.py:594 +#: content_manager/blocks.py:594 content_manager/blocks.py:782 msgid "Link" msgstr "Lien" @@ -214,9 +214,9 @@ msgstr "Badge" #: content_manager/blocks.py:427 content_manager/blocks.py:451 #: content_manager/blocks.py:493 content_manager/blocks.py:568 #: content_manager/blocks.py:623 content_manager/blocks.py:632 -#: content_manager/blocks.py:681 content_manager/blocks.py:795 -#: content_manager/blocks.py:825 content_manager/blocks.py:896 -#: content_manager/blocks.py:952 content_manager/models.py:393 +#: content_manager/blocks.py:681 content_manager/blocks.py:880 +#: content_manager/blocks.py:910 content_manager/blocks.py:982 +#: content_manager/blocks.py:1038 content_manager/models.py:393 msgid "Title" msgstr "Titre" @@ -239,27 +239,28 @@ msgstr "Tag" #: content_manager/blocks.py:265 content_manager/blocks.py:380 #: content_manager/blocks.py:439 content_manager/blocks.py:453 -#: content_manager/blocks.py:570 content_manager/blocks.py:797 -#: content_manager/blocks.py:827 content_manager/blocks.py:954 +#: content_manager/blocks.py:570 content_manager/blocks.py:786 +#: content_manager/blocks.py:882 content_manager/blocks.py:912 +#: content_manager/blocks.py:1040 msgid "Heading level" msgstr "Niveau de titre" #: content_manager/blocks.py:268 content_manager/blocks.py:383 #: content_manager/blocks.py:442 content_manager/blocks.py:456 -#: content_manager/blocks.py:574 +#: content_manager/blocks.py:574 content_manager/blocks.py:790 msgid "Adapt to the page layout. Defaults to heading 3." msgstr "À adapter à la structure de la page. Par défaut en-tête 3." #: content_manager/blocks.py:270 content_manager/blocks.py:386 #: content_manager/blocks.py:423 content_manager/blocks.py:460 -#: content_manager/blocks.py:474 content_manager/blocks.py:897 -#: content_manager/blocks.py:984 +#: content_manager/blocks.py:474 content_manager/blocks.py:983 +#: content_manager/blocks.py:1070 msgid "Content" msgstr "Contenu" #: content_manager/blocks.py:271 content_manager/blocks.py:388 #: content_manager/blocks.py:513 content_manager/blocks.py:576 -#: content_manager/blocks.py:602 content_manager/blocks.py:857 +#: content_manager/blocks.py:602 content_manager/blocks.py:942 msgid "Image" msgstr "Image" @@ -455,7 +456,7 @@ msgid "Image width" msgstr "Largeur de l’image" #: content_manager/blocks.py:531 content_manager/blocks.py:642 -#: content_manager/blocks.py:856 content_manager/blocks.py:1027 +#: content_manager/blocks.py:941 content_manager/blocks.py:1113 msgid "Rich text" msgstr "Texte avec mise en forme" @@ -487,8 +488,8 @@ msgstr "Largeur" msgid "Caption" msgstr "Légende" -#: content_manager/blocks.py:603 content_manager/blocks.py:863 -#: content_manager/blocks.py:1034 +#: content_manager/blocks.py:603 content_manager/blocks.py:948 +#: content_manager/blocks.py:1120 msgid "Quote" msgstr "Citation" @@ -559,169 +560,209 @@ msgstr "" msgid "Video ratio" msgstr "Ratio de la vidéo" -#: content_manager/blocks.py:713 content_manager/blocks.py:859 -#: content_manager/blocks.py:1036 +#: content_manager/blocks.py:713 content_manager/blocks.py:944 +#: content_manager/blocks.py:1122 msgid "Transcription" msgstr "Transcription" -#: content_manager/blocks.py:801 content_manager/blocks.py:831 -#: content_manager/blocks.py:958 +#: content_manager/blocks.py:777 +msgid "Person" +msgstr "Personne" + +#: content_manager/blocks.py:778 +msgid "Optional, all values can be manually specified or overriden below" +msgstr "" +"Optionnel, toutes les valeurs peuvent être spécifiées ou surchargées ci-" +"dessous" + +#: content_manager/blocks.py:792 content_manager/models.py:425 +msgid "Name" +msgstr "Nom" + +#: content_manager/blocks.py:793 +msgid "Role" +msgstr "Fonction" + +#: content_manager/blocks.py:794 +msgid "Organization" +msgstr "Organisation" + +#: content_manager/blocks.py:795 +msgid "Contact info" +msgstr "Informations de contact" + +#: content_manager/blocks.py:797 +#: content_manager/templates/content_manager/tags_list_page.html:31 +#: content_manager/views.py:46 content_manager/views.py:77 +msgid "Tags" +msgstr "Étiquettes" + +#: content_manager/blocks.py:886 content_manager/blocks.py:916 +#: content_manager/blocks.py:1044 msgid "Adapt to the page layout. Defaults to heading 2." msgstr "À adapter à la structure de la page. Par défaut en-tête 2." -#: content_manager/blocks.py:803 +#: content_manager/blocks.py:888 msgid "Blog" msgstr "Blog" -#: content_manager/blocks.py:805 content_manager/blocks.py:835 +#: content_manager/blocks.py:890 content_manager/blocks.py:920 msgid "Number of entries" msgstr "Nombre d’articles" -#: content_manager/blocks.py:807 content_manager/blocks.py:837 +#: content_manager/blocks.py:892 content_manager/blocks.py:922 #: content_manager/templates/content_manager/blocks/blog_recent_entries.html:11 #: content_manager/templates/content_manager/blocks/events_recent_entries.html:11 msgid "Filter by category" msgstr "Filtrer par catégorie" -#: content_manager/blocks.py:808 content_manager/blocks.py:838 +#: content_manager/blocks.py:893 content_manager/blocks.py:923 #: content_manager/templates/content_manager/blocks/blog_recent_entries.html:28 #: content_manager/templates/content_manager/blocks/events_recent_entries.html:28 msgid "Filter by tag" msgstr "Filtrer par étiquette" -#: content_manager/blocks.py:809 content_manager/blocks.py:839 +#: content_manager/blocks.py:894 content_manager/blocks.py:924 #: content_manager/templates/content_manager/blocks/blog_recent_entries.html:45 #: content_manager/templates/content_manager/blocks/events_recent_entries.html:45 msgid "Filter by author" msgstr "Filtrer par auteur" -#: content_manager/blocks.py:812 content_manager/blocks.py:842 +#: content_manager/blocks.py:897 content_manager/blocks.py:927 #: content_manager/templates/content_manager/blocks/blog_recent_entries.html:60 #: content_manager/templates/content_manager/blocks/events_recent_entries.html:60 msgid "Filter by source" msgstr "Filtrer par source" -#: content_manager/blocks.py:813 content_manager/blocks.py:843 +#: content_manager/blocks.py:898 content_manager/blocks.py:928 msgid "The source is the organization of the post author" msgstr "" "La source est l’organisation à laquelle appartient l’auteur de l’article" -#: content_manager/blocks.py:816 content_manager/blocks.py:846 +#: content_manager/blocks.py:901 content_manager/blocks.py:931 msgid "Show filters" msgstr "Afficher les filtres" -#: content_manager/blocks.py:833 +#: content_manager/blocks.py:918 msgid "Event calendar" msgstr "Agenda" -#: content_manager/blocks.py:858 content_manager/blocks.py:1035 +#: content_manager/blocks.py:943 content_manager/blocks.py:1121 msgid "Video" msgstr "Vidéo" -#: content_manager/blocks.py:860 content_manager/blocks.py:1031 +#: content_manager/blocks.py:945 content_manager/blocks.py:1117 msgid "Accordions" msgstr "Accordéons" -#: content_manager/blocks.py:860 content_manager/blocks.py:861 -#: content_manager/blocks.py:862 content_manager/blocks.py:863 -#: content_manager/blocks.py:864 content_manager/blocks.py:867 -#: content_manager/blocks.py:868 content_manager/blocks.py:879 -#: content_manager/blocks.py:929 content_manager/blocks.py:969 -#: content_manager/blocks.py:970 content_manager/blocks.py:1031 -#: content_manager/blocks.py:1032 content_manager/blocks.py:1033 -#: content_manager/blocks.py:1034 content_manager/blocks.py:1040 -#: content_manager/blocks.py:1041 content_manager/blocks.py:1042 -#: content_manager/blocks.py:1043 +#: content_manager/blocks.py:945 content_manager/blocks.py:946 +#: content_manager/blocks.py:947 content_manager/blocks.py:948 +#: content_manager/blocks.py:949 content_manager/blocks.py:952 +#: content_manager/blocks.py:953 content_manager/blocks.py:964 +#: content_manager/blocks.py:1015 content_manager/blocks.py:1055 +#: content_manager/blocks.py:1056 content_manager/blocks.py:1117 +#: content_manager/blocks.py:1118 content_manager/blocks.py:1119 +#: content_manager/blocks.py:1120 content_manager/blocks.py:1126 +#: content_manager/blocks.py:1127 content_manager/blocks.py:1128 +#: content_manager/blocks.py:1129 msgid "DSFR components" msgstr "Composants du DSFR" -#: content_manager/blocks.py:861 content_manager/blocks.py:1032 +#: content_manager/blocks.py:946 content_manager/blocks.py:1118 msgid "Callout" msgstr "Mise en avant" -#: content_manager/blocks.py:862 content_manager/blocks.py:1033 +#: content_manager/blocks.py:947 content_manager/blocks.py:1119 msgid "Highlight" msgstr "Mise en exergue" -#: content_manager/blocks.py:864 content_manager/blocks.py:1040 +#: content_manager/blocks.py:949 content_manager/blocks.py:1126 msgid "Stepper" msgstr "Étapier" -#: content_manager/blocks.py:865 +#: content_manager/blocks.py:950 msgid "Text and call to action" msgstr "Texte et appel à action" -#: content_manager/blocks.py:866 content_manager/blocks.py:1039 +#: content_manager/blocks.py:951 content_manager/blocks.py:1125 msgid "Single link" msgstr "Lien isolé" -#: content_manager/blocks.py:867 content_manager/blocks.py:1045 +#: content_manager/blocks.py:952 content_manager/blocks.py:1131 msgid "Iframe" msgstr "Iframe" -#: content_manager/blocks.py:868 content_manager/blocks.py:1042 +#: content_manager/blocks.py:953 content_manager/blocks.py:1128 msgid "Tile" msgstr "Tuile" -#: content_manager/blocks.py:869 content_manager/blocks.py:1067 +#: content_manager/blocks.py:954 content_manager/blocks.py:1153 msgid "Blog recent entries" msgstr "Articles récents du blog" -#: content_manager/blocks.py:869 content_manager/blocks.py:871 -#: content_manager/blocks.py:1062 content_manager/blocks.py:1067 -#: content_manager/blocks.py:1071 +#: content_manager/blocks.py:954 content_manager/blocks.py:956 +#: content_manager/blocks.py:1148 content_manager/blocks.py:1153 +#: content_manager/blocks.py:1157 msgid "Website structure" msgstr "Structure du site" -#: content_manager/blocks.py:871 content_manager/blocks.py:1071 +#: content_manager/blocks.py:956 content_manager/blocks.py:1157 msgid "Event calendar recent entries" msgstr "Articles récents de l’agenda" -#: content_manager/blocks.py:879 content_manager/blocks.py:929 +#: content_manager/blocks.py:964 content_manager/blocks.py:1015 msgid "Vertical card" msgstr "Carte verticale" -#: content_manager/blocks.py:884 content_manager/blocks.py:909 +#: content_manager/blocks.py:965 +msgid "Contact card" +msgstr "Carte contact" + +#: content_manager/blocks.py:965 +msgid "Extra components" +msgstr "Composants supplémentaires" + +#: content_manager/blocks.py:970 content_manager/blocks.py:995 msgid "Column width" msgstr "Largeur de colonne" -#: content_manager/blocks.py:888 +#: content_manager/blocks.py:974 msgid "Items" msgstr "Éléments" -#: content_manager/blocks.py:901 +#: content_manager/blocks.py:987 msgid "Tab" msgstr "Onglet" -#: content_manager/blocks.py:919 +#: content_manager/blocks.py:1005 msgid "The total width of all columns should be 12." msgstr "La largeur totale de toutes les colonnes doit être 12." -#: content_manager/blocks.py:922 +#: content_manager/blocks.py:1008 msgid "Column content" msgstr "Contenu de la colonnne" -#: content_manager/blocks.py:930 +#: content_manager/blocks.py:1016 msgid "Adjustable column" msgstr "Colonne ajustable" -#: content_manager/blocks.py:930 content_manager/blocks.py:971 -#: content_manager/blocks.py:1046 content_manager/blocks.py:1047 -#: content_manager/blocks.py:1048 content_manager/blocks.py:1049 -#: content_manager/blocks.py:1053 +#: content_manager/blocks.py:1016 content_manager/blocks.py:1057 +#: content_manager/blocks.py:1132 content_manager/blocks.py:1133 +#: content_manager/blocks.py:1134 content_manager/blocks.py:1135 +#: content_manager/blocks.py:1139 msgid "Page structure" msgstr "Structure de la page" -#: content_manager/blocks.py:937 content_manager/blocks.py:978 -#: content_manager/blocks.py:1011 +#: content_manager/blocks.py:1023 content_manager/blocks.py:1064 +#: content_manager/blocks.py:1097 msgid "Background image" msgstr "Image de fond" -#: content_manager/blocks.py:944 +#: content_manager/blocks.py:1030 msgid "Background color, hexadecimal format (obsolete)" msgstr "Couleur de fond, format hexadécimal (obsolète)" -#: content_manager/blocks.py:947 +#: content_manager/blocks.py:1033 msgid "" "This field is obsolete and will be removed in the near future. Replace it " "with the background color." @@ -729,35 +770,35 @@ msgstr "" "Ce champ est obsolète et sera prochainement supprimé. Merci de le remplacer " "avec la couleur de fond." -#: content_manager/blocks.py:949 +#: content_manager/blocks.py:1035 msgid "Incorrect color format, must be #fff or #f5f5f5" msgstr "Format de couleur incorrect, doit être #fff ou #f5f5f5" -#: content_manager/blocks.py:960 +#: content_manager/blocks.py:1046 msgid "Columns" msgstr "Colonnes" -#: content_manager/blocks.py:968 content_manager/blocks.py:1029 +#: content_manager/blocks.py:1054 content_manager/blocks.py:1115 msgid "Image and text" msgstr "Image et texte" -#: content_manager/blocks.py:969 content_manager/blocks.py:1041 +#: content_manager/blocks.py:1055 content_manager/blocks.py:1127 msgid "Horizontal card" msgstr "Carte horizontale" -#: content_manager/blocks.py:970 content_manager/blocks.py:1043 +#: content_manager/blocks.py:1056 content_manager/blocks.py:1129 msgid "Tabs" msgstr "Onglets" -#: content_manager/blocks.py:971 content_manager/blocks.py:1048 +#: content_manager/blocks.py:1057 content_manager/blocks.py:1134 msgid "Item grid" msgstr "Grille d’éléments" -#: content_manager/blocks.py:992 +#: content_manager/blocks.py:1078 msgid "Parent page" msgstr "Page parente" -#: content_manager/blocks.py:1002 content_manager/blocks.py:1084 +#: content_manager/blocks.py:1088 content_manager/blocks.py:1170 msgid "" "Warning: Use HTML block with caution. Malicious code can compromise the " "security of the site." @@ -765,64 +806,64 @@ msgstr "" "Avertissement : Utilisez le bloc HTML avec précaution. Un code malveillant " "peut compromettre la sécurité du site." -#: content_manager/blocks.py:1004 +#: content_manager/blocks.py:1090 msgid "Page tree" msgstr "Arborescence de pages" -#: content_manager/blocks.py:1017 +#: content_manager/blocks.py:1103 msgid "Main content" msgstr "Contenu principal" -#: content_manager/blocks.py:1018 +#: content_manager/blocks.py:1104 msgid "Side menu title" msgstr "Titre du menu latéral" -#: content_manager/blocks.py:1019 +#: content_manager/blocks.py:1105 msgid "Side menu content" msgstr "Contenu du menu latéral" -#: content_manager/blocks.py:1030 +#: content_manager/blocks.py:1116 msgid "Alert message" msgstr "Message d’alerte" -#: content_manager/blocks.py:1037 +#: content_manager/blocks.py:1123 msgid "Badge list" msgstr "Liste de badges" -#: content_manager/blocks.py:1038 +#: content_manager/blocks.py:1124 msgid "Tag list" msgstr "Liste de tags" -#: content_manager/blocks.py:1044 +#: content_manager/blocks.py:1130 msgid "Markdown" msgstr "Markdown" -#: content_manager/blocks.py:1044 content_manager/blocks.py:1045 -#: content_manager/blocks.py:1086 +#: content_manager/blocks.py:1130 content_manager/blocks.py:1131 +#: content_manager/blocks.py:1172 msgid "Expert syntax" msgstr "Syntaxe experte" -#: content_manager/blocks.py:1046 +#: content_manager/blocks.py:1132 msgid "Separator" msgstr "Séparateur" -#: content_manager/blocks.py:1047 +#: content_manager/blocks.py:1133 msgid "Multiple columns" msgstr "Multi-colonnes" -#: content_manager/blocks.py:1049 +#: content_manager/blocks.py:1135 msgid "Full width background" msgstr "Fond pleine largeur" -#: content_manager/blocks.py:1053 +#: content_manager/blocks.py:1139 msgid "Full width background with side menu" msgstr "Fond pleine largeur avec menu latéral" -#: content_manager/blocks.py:1059 +#: content_manager/blocks.py:1145 msgid "Subpages list" msgstr "Liste des sous-pages" -#: content_manager/blocks.py:1060 +#: content_manager/blocks.py:1146 msgid "A simple, alphabetical list of the subpages of the current page." msgstr "" "Une liste alphabétique toute simple des sous-pages de la page actuelle." @@ -1215,10 +1256,6 @@ msgstr "Catégorie de méga menu" msgid "Mega menu categories" msgstr "Catégories de méga menu" -#: content_manager/models.py:425 -msgid "Name" -msgstr "Nom" - #: content_manager/models.py:430 msgid "Main link" msgstr "Lien principal" @@ -1246,6 +1283,7 @@ msgstr "Voir tous les articles" #: content_manager/templates/content_manager/blocks/card_horizontal.html:11 #: content_manager/templates/content_manager/blocks/card_vertical.html:11 +#: content_manager/templates/content_manager/blocks/contact_card_vertical.html:14 #: content_manager/templates/content_manager/blocks/link.html:9 #: content_manager/templates/content_manager/blocks/tile.html:12 msgid "Opens a new window" @@ -1320,11 +1358,6 @@ msgstr "Afficher" msgid "Continue" msgstr "Continuer" -#: content_manager/templates/content_manager/tags_list_page.html:31 -#: content_manager/views.py:46 content_manager/views.py:77 -msgid "Tags" -msgstr "Étiquettes" - #: content_manager/templates/content_manager/widgets/dsfr-icon-picker-widget.html:9 msgid "Select icon" msgstr "Sélectionner une icône" diff --git a/content_manager/migrations/0049_alter_contentpage_body.py b/content_manager/migrations/0049_alter_contentpage_body.py new file mode 100644 index 00000000..74646843 --- /dev/null +++ b/content_manager/migrations/0049_alter_contentpage_body.py @@ -0,0 +1,1394 @@ +# Generated by Django 5.1.3 on 2024-12-05 14:24 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("content_manager", "0048_alter_contentpage_body_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="contentpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [[("image", 42), ("quote", 43), ("author_name", 44), ("author_title", 45), ("color", 37)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ("wagtail.blocks.StructBlock", [[("title", 50), ("content", 51)]], {"label": "Transcription"}), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 99: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 100: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 101: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 74), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 42), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + ] diff --git a/content_manager/templates/content_manager/blocks/contact_card_vertical.html b/content_manager/templates/content_manager/blocks/contact_card_vertical.html new file mode 100644 index 00000000..20f9510a --- /dev/null +++ b/content_manager/templates/content_manager/blocks/contact_card_vertical.html @@ -0,0 +1,55 @@ +{% load i18n wagtailcore_tags wagtailimages_tags %} +{# Uses value instead of block.value because it is also used #} +{# to display Person items #} + + diff --git a/events/migrations/0011_alter_evententrypage_body_alter_eventsindexpage_body.py b/events/migrations/0011_alter_evententrypage_body_alter_eventsindexpage_body.py new file mode 100644 index 00000000..e94eb903 --- /dev/null +++ b/events/migrations/0011_alter_evententrypage_body_alter_eventsindexpage_body.py @@ -0,0 +1,2774 @@ +# Generated by Django 5.1.3 on 2024-12-05 14:24 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("events", "0010_alter_evententrypage_body_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="evententrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [[("image", 42), ("quote", 43), ("author_name", 44), ("author_title", 45), ("color", 37)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ("wagtail.blocks.StructBlock", [[("title", 50), ("content", 51)]], {"label": "Transcription"}), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 99: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 100: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 101: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 74), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 42), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="eventsindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [[("image", 42), ("quote", 43), ("author_name", 44), ("author_title", 45), ("color", 37)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ("wagtail.blocks.StructBlock", [[("title", 50), ("content", 51)]], {"label": "Transcription"}), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 99: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 100: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 101: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 74), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 42), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + ] diff --git a/static/css/style.css b/static/css/style.css index 9c234e6d..4358e003 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -1 +1 @@ -.cmsfr-hero{background-size:cover;background-position:center;background-repeat:no-repeat}.cmsfr-hero-large{display:flex;justify-content:center;align-items:center;text-align:center}.cmsfr-background-dark h1,.cmsfr-background-dark p,.cmsfr-background-dark ul{color:white}:root[data-fr-theme=light] .cmsfr-background-dark .fr-btn--secondary{background-color:rgba(255,255,255,0.3)}.fr-header__service-title em{font-weight:lighter}.cmsfr-author_card__header{flex:0 0 6rem !important;width:6rem !important}.cmsfr-author-img{border-radius:50%;height:4.5rem !important;margin:1.5rem;width:4.5rem}.cmsfr-footer__bottom-extra{border-left:1px solid var(--border-default-grey);padding-left:1em;margin-left:1em}.cmsfr-display__inline{display:inline} +.cmsfr-hero{background-size:cover;background-position:center;background-repeat:no-repeat}.cmsfr-hero-large{display:flex;justify-content:center;align-items:center;text-align:center}.cmsfr-background-dark h1,.cmsfr-background-dark p,.cmsfr-background-dark ul{color:white}:root[data-fr-theme=light] .cmsfr-background-dark .fr-btn--secondary{background-color:rgba(255,255,255,0.3)}.fr-header__service-title em{font-weight:lighter}.cmsfr-author_card__header{flex:0 0 6rem !important;width:6rem !important}.cmsfr-author-img{border-radius:50%;height:4.5rem !important;margin:1.5rem;width:4.5rem}.cmsfr-vertical_contact_card__header{background:var(--background-default-grey)}.cmsfr-vertical_contact_card-img{border-radius:50%;height:100%;width:100%;margin:auto;max-width:50%;aspect-ratio:initial !important}.cmsfr-footer__bottom-extra{border-left:1px solid var(--border-default-grey);padding-left:1em;margin-left:1em}.cmsfr-display__inline{display:inline} diff --git a/static/css/style.sass b/static/css/style.sass index 9b937d4d..c4f7d55e 100644 --- a/static/css/style.sass +++ b/static/css/style.sass @@ -32,6 +32,17 @@ margin: 1.5rem width: 4.5rem +.cmsfr-vertical_contact_card__header + background: var(--background-default-grey) + +.cmsfr-vertical_contact_card-img + border-radius: 50% + height: 100% + width: 100% + margin: auto + max-width: 50% + aspect-ratio: initial !important + .cmsfr-footer__bottom-extra border-left: 1px solid var(--border-default-grey) padding-left: 1em From aab8db9c0043a4a71c1341254214dcdd69d803c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 12:17:52 +0100 Subject: [PATCH 04/15] Bump django from 5.1.3 to 5.1.4 (#243) Bumps [django](https://github.com/django/django) from 5.1.3 to 5.1.4. - [Commits](https://github.com/django/django/compare/5.1.3...5.1.4) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 9 +++++---- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index d679b940..df719807 100644 --- a/poetry.lock +++ b/poetry.lock @@ -406,13 +406,13 @@ static3 = "*" [[package]] name = "django" -version = "5.1.3" +version = "5.1.4" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.10" files = [ - {file = "Django-5.1.3-py3-none-any.whl", hash = "sha256:8b38a9a12da3ae00cb0ba72da985ec4b14de6345046b1e174b1fd7254398f818"}, - {file = "Django-5.1.3.tar.gz", hash = "sha256:c0fa0e619c39325a169208caef234f90baa925227032ad3f44842ba14d75234a"}, + {file = "Django-5.1.4-py3-none-any.whl", hash = "sha256:236e023f021f5ce7dee5779de7b286565fdea5f4ab86bae5338e3f7b69896cf0"}, + {file = "Django-5.1.4.tar.gz", hash = "sha256:de450c09e91879fa5a307f696e57c851955c910a438a35e6b4c895e86bedc82a"}, ] [package.dependencies] @@ -1053,6 +1053,7 @@ files = [ {file = "libsass-0.22.0-cp37-abi3-macosx_10_15_x86_64.whl", hash = "sha256:081e256ab3c5f3f09c7b8dea3bf3bf5e64a97c6995fd9eea880639b3f93a9f9a"}, {file = "libsass-0.22.0-cp37-abi3-win32.whl", hash = "sha256:89c5ce497fcf3aba1dd1b19aae93b99f68257e5f2026b731b00a872f13324c7f"}, {file = "libsass-0.22.0-cp37-abi3-win_amd64.whl", hash = "sha256:65455a2728b696b62100eb5932604aa13a29f4ac9a305d95773c14aaa7200aaf"}, + {file = "libsass-0.22.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:5fb2297a4754a6c8e25cfe5c015a3b51a2b6b9021b333f989bb8ce9d60eb5828"}, {file = "libsass-0.22.0.tar.gz", hash = "sha256:3ab5ad18e47db560f4f0c09e3d28cf3bb1a44711257488ac2adad69f4f7f8425"}, ] @@ -2280,4 +2281,4 @@ wand = ["Wand (>=0.6,<1.0)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "02778e6ad4f056ce972461741ae56570b90ec2b30d2bcae033d5dbff5db0950e" +content-hash = "293940d9b267c4050524be34551c3e6c84656fbcb3db3e5ea497ef1aa0af2394" diff --git a/pyproject.toml b/pyproject.toml index 4d624e8c..f6b816e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ readme = "README.md" [tool.poetry.dependencies] python = "^3.10" -django = "^5.0.9" +django = "^5.1.4" wagtail = "^6.1" django-dsfr = "^1.1.2" psycopg2-binary = "^2.9.9" From 44e660dbae4e494bb606c7b6364b43d240a5844e Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 11 Dec 2024 15:50:17 +0100 Subject: [PATCH 05/15] Gestion des index de catalogue (#244) * First version * Update dependencies * Finish dev of the new page type * Explicit mention of the python version because the buildpack is temporarily broken * try fix for error 500 * Fully static error 500 page * static 404 * Fix static error pages * Fix hook * Fix templates * Remove debugging changes * Moved faker to prod dependencies (used by a command) * Fix poetry.lock * Add tests --- blog/locale/fr/LC_MESSAGES/django.mo | Bin 3076 -> 3076 bytes blog/locale/fr/LC_MESSAGES/django.po | 20 +- blog/models.py | 1 + .../locale/fr/LC_MESSAGES/django.mo | Bin 23443 -> 23749 bytes .../locale/fr/LC_MESSAGES/django.po | 186 +- .../management/commands/create_demo_pages.py | 4 +- .../migrations/0050_catalogindexpage.py | 1668 +++++++++++++++++ content_manager/models.py | 124 ++ content_manager/services/accessors.py | 65 +- .../blocks/catalog_index_entries_list.html | 39 + .../content_manager/catalog_index_page.html | 161 ++ .../content_manager/tags_list_page.html | 89 +- content_manager/tests/test_views.py | 45 +- dashboard/wagtail_hooks.py | 2 +- poetry.lock | 268 +-- pyproject.toml | 4 +- 16 files changed, 2421 insertions(+), 255 deletions(-) create mode 100644 content_manager/migrations/0050_catalogindexpage.py create mode 100644 content_manager/templates/content_manager/blocks/catalog_index_entries_list.html create mode 100644 content_manager/templates/content_manager/catalog_index_page.html diff --git a/blog/locale/fr/LC_MESSAGES/django.mo b/blog/locale/fr/LC_MESSAGES/django.mo index c7000ea4a5f2551b705b2a4bb8d681bc49298da1..d2310fcd06c96c1ac654ca4b995cdc5faf8a96e7 100644 GIT binary patch delta 23 ecmZpXXpz{U%+6(`YiOWgXkuk-yjhq1Itu_q^aaEK delta 23 ecmZpXXpz{U%+6(~Yh Persons" msgstr "Les auteurs peuvent être créés via Fragments > Personnes" -#: blog/models.py:541 +#: blog/models.py:542 msgid "Scheduled publishing" msgstr "Publication planifiée" -#: blog/models.py:549 +#: blog/models.py:550 msgid "Tags and Categories" msgstr "Étiquettes et Catégories" -#: blog/models.py:565 +#: blog/models.py:566 msgid "Blog page" msgstr "Page de blog" diff --git a/blog/models.py b/blog/models.py index 3cca040f..9ce13024 100644 --- a/blog/models.py +++ b/blog/models.py @@ -382,6 +382,7 @@ def list_tags(self, min_count: int = 1) -> list: .order_by("-tag_count") ) + @property def show_filters(self) -> bool | BooleanField: return self.filter_by_category or self.filter_by_tag or self.filter_by_author or self.filter_by_source diff --git a/content_manager/locale/fr/LC_MESSAGES/django.mo b/content_manager/locale/fr/LC_MESSAGES/django.mo index 2b741e942ca3a44d7c53738dde3850268fc59fbb..9b4d133ea469ac06de37019b83dfe372db27c702 100644 GIT binary patch delta 6889 zcmYk=30xOt9>?(q6cM>WP7grA1C&EV@ksGTO{vU0P>U5%yqCl5u<`1!gEh6SOfxOZ zYwbX+TvOAiHeIt;vaGZ+Qszor^;c~Br`9@D!lt$RfFNu_HP+S>(3g5= zY>rtNkHb*?Pq#W4$@9$$3c6u4Y6P#@`hE8FW6!0yHOni(gq^EadR)&x|41*n9kq7tugC}=k>u~u52vaYvoMJ2ccmH9iUDL-n@pSJaj zRxh&AgF{h?M4}Q+z)0+ldag5)LN0}|s0`PkHrGbf6z@W1x(_vlAE92WZ>;BS`|qfP z{F$as*a9ms7dzr^)N6VMb$@g_&)eacM7LmiU^yp7Vi(+x^l5&vwrI~y)N@dok3%1v zY%RgY)Ms1EQ3>6J8qiYIOsql8#6}#?{xiF6Lre!_*uW+YHPv~jwVH@};52NC<)}?I zADiGd)cI=E`@RRYL`P8fpGNifv#onG9ZjhRV+hYT(G*g!BWeVru@R0(WjqPBW+kY% zVFA*YS&jOX)}SvQMJ?3{R08Mid9P%5%EM6!#o2l%bkspM1x?j3)b1XSdYwv<{bZJ* zI^2#L$$QujYf&9Wk-ZX6L?zG>{V*GKe}7~ZO)+X|A4ARb-W29vAE2*j(1U+R-5A!% z9eGRir`{fwXeR3XAk@_7;RAS^J^v+YCN7}%#;>UBuiCnAXE)J6)BwXeGyf{2)1V7S z;%pp?8p-<@h(}S0oI+i95jEl~7=R|#y)FWfM|A2q`>k#CckkLqu&LqSu! z1+`0eqdNQ;o8bx6gT6h*b{Ys8ER(cq54^Xf#^J7 zPpq^Jt5KV8GwQ}|s1B=a`)*VM`%t_1AnLkWTR($d6!hMHhZ^}648`jhj-g%MdJ=|F?~eRuhVi2*cCZ%Tz*n#`%l&Zm?dCqH z5S3slYUbvl)_#%H`(H^xYqJU`;(Am9`lC^Xp)yZIb(DsB|FbX>C!y}IzyvQg7v@r5 zOLqBq26g|y9`1wlkbP_N(IHv0l!DxYJ@GR3!E`EeHY$;A*c|twW}+7J@QgLP7oTJ5 z4oEwcP&e#D&s%}I{sd}o{D3id z33Y$K4enn;!!Vk97HWn@VgweUrv4t(_v67En14N}k_JuT8jQmYn1VIf0xx1q3}ia^ z+m}g3B{CE>BV({B&am|gY(@QHR3aNuGxoOi2r7}&4h5~vPpA&Bp%Mw`>t@~@bz=(Z z0ew&-8G^cgB1YkK)P0LlGxi8-vpr+$8&ES*joRb~QT;lHDQJWzQ5juFb>yGpE=4%% zTc3z*3sY=;4u?`dhC?usi?pUQFbUV765fy60|!x4e%yKrutRnmGD8-9yx+qy038%1`cpPIHOQYeLw28UWx7W{%@q98$U#C zzAwik3KgKJSE-C*0dqXuvQb^mc}gFm68%pwOH(+!jH zQ7phjJdb=!OgIayB^i$DXbkFs({KqcL?*{H$#vhJVc1sZQMTG)X2}-dLwq4Uccs8j2Re@Phkgq6ZN`%gPKV*%$&mXCTX zmLT6KQ*F;*LiOY4+~`hCH0s7w)JO-R9{d+nLZ!C87`0?8P)qR=YN~fyk7Fn5-Xq-2 zmWJwQIF7=648WIBGw$r7piS{MYK=ZYbx?<0FlMANeEiIfn1Bykw_+UiL)Z+@qd)$J zdVo)!n`js+fp(~+=!VO%FSgeEf7qV5V68_jh1X5)TE(Jg4Urp6vUMox!BcS#mSHS@ zi<-&nsD2`Eb`wiO_0tPA;DH#e_kSFP6dFn~4WIR#U}UI{PNO#0HPi@O-r~+w2h{mK z7>1)U5T~Lx*<92vpO1dH7&SAGq3&CSF+AVAN$3o-<8-XUVjO#$JK{a4L~BqpcMR2UJu0!#G46GVW0?QBG$hlY&9x5oI_^i^ z@Fl9FUr?F*k9Bu-4C=Zp)a#drnu$@iy$H1z99v(71E_Du!B~%}UTnf~%>N!5W{r3M z29%ob?$$!ol$K)%-h;~gQR`Y%La$*t?nPafHNj0}Flw#GqL!`*yW&iY!u6=7+38Rq z5zo<`-)viMK%du!L$77S(Vm;SQJG5A5RVh*i4%lIsN@@t9TWkz9bA?6Z|i93kB& zR}h`;bw?>TwdHckdx*Y-jxj_q5v}!)<)R3jN9b7O;`t|380QvKZ;Xerp6Ey1NqkG_ zc!5|=1QJJxSBc4lj)g>PPl-2(K6JDp{3!p1&J}(-Q27#nA#_Y9Zt;}dpYLrs+4?X> z5yy!C+P06aVjWRH1kvw5@m?Z>@&l-^T_}-6a5$zFh1V$UBOW6%2pvAOpTb?l--z#s zhT~0JcodfsFB6(c9bH|Fm-_&7fO@)ZyNuI_7+e3l?kcsFkyddV@h{?LRXENO$#mGo zc3RB#$hh;6`|v4VlA1MPnN?UcFMdwJl%lFFt?%*g92QdAZ{r>NA^xS~x$ZIhB2 zRLBH z-_W6+&I^m;Cl{3KX%$sIea?7?@QnSN^pFDkkaIZ~dgWP*%foSKDDaV@TdR(xMxPx2mTK$PU}zr delta 6635 zcmY+|d7RJH9>?)BX5TPlof&2`hB0G|8C%w&8QWy7R9q5;EQLsQbALmjDAh%l+;o+a zN#U1-+$c-;O4hk0WT}vpY&8_!*ZcSV%pdnWeCB!1`F(%qd(P*a?{}tlYz&&WA;|Yl ze8>VvX%^&MJ)9ru++yl6HPq|e_yp$)aRLs(b;u&HY^x6@4KewW7AxF2Q)(w3{l*0eX87tO3x@?Xpc_oX`565m4pxnulb+ucpn1QOG{6*WLjAPdQ&YlAvm15jHs z3$>sHs7x+5{isZCxAvE)>(8e7yqW$=hfeDa)agy*C~HOCP$|9_YvE|rX)i@(YK48i z8g+&~M6G-aY9iZF6W)(HbSKPn<`th+ZkiFyLNkj;%{Ud6;sVqFw_3ZGIT&^0aj1z- zL``%m*2a0L@2$e__&#caH&AED7s7IMSn8r?nv6P--r~NwimCKKFMinO;i!n^UkZ7c521d_9KZ$L0q9!ud+K=1kGf){?h&t47p`M8Jtk zN6mNw>Wn;!kvIeO{TGmIJ3q3g?rT(vV_B|l*c5erF-Bn@jK+c4Evvyn51Pf6sD>jFtuA7Dr;~dlien)LpR8#UFO{H#A@4^h! zK)D!$1sIEksFn6cZOuf~#O9(>`x^4OS>-RJ5XW z)Jz-O1^K8ObU+Q%$NGn18`|Sg1H6ek6J@Az{1}THt$&xb_hK;p$57upiP{R^Y5U+J zY64d=0{=u^7}3mY$D;PKwwa47X?Mj!ynxLyk4J{=x?%VrzJR0f8s4vdF4DNWkcIi& z=T!9D=s4;I*H9^o<0NTC4RIP~BY!)%)mR-rGY_Lyat^iftElHZxWIc%6HqJ9#W>8z z8dwx)v;TKfiKk;Uw!o>V6tBZ_{1MmSHa^V2i7mYwEksRl1uAo8sJ&lrZbNO&9vqD2 zs0kFb@+`(EJ^y!6(LlqHN8OFW+V~P`fR&gQ#3Zmg?E|fy8-z*BQY)W=y76@6oVmHk zz1&CUC2UK(@h!a0ak#l0eVWlpDte<`Mr9&`tNUP*IR=N*-i-WnDeb%!48$6=$6_@s zMYh?!h}w#6sD1#nY(kueM|V1CK>}?+fv$!;y*!*bp^9C*&8TE5^Dw3YDR0 zSPK`SGVm_y{jmvkqiv`R?nAwhzQSy*z$DD*K>q7dDeS;+J{*ji`ID%O%*F^@X6=<& zpY|5iM2?^`b_F$oaPq4yseu|N88v|%)P!50t}j82JH$stD;SCT!c^2#FbDO;*HNh| zLmjfs*4}{{upD)|&!YzZ1+}u^PTqu4P~&8ywx9s@YA-@|+xcc%Wh?fe<2rWJ1%=*T zK8FoyZ$ZuYTU3hAo0l<#_I2bzafyts3HL^2WC&_Pqfrx_iJJIgukCYdtm9MES@;^Y zM`y4YYjp8mEcc-HbPnp!Ex}BD7xlez)Cy0b&d_Dlgey=t4!YIb(we9($_nUXPpqSp z+0(oewUVKz8;(b<1tH!KE+V{0>khShTsv@7Mwt>{GzoZyL(SrB95TH zHKyXL-Ff~SQ~8(--5;g7x?1VRakpEyR9ea9@Nf%UVdZH$FALij~MX29ZOu;1 z!K0Xuk-hla0o!95K7rcWr5J@DVKn-7QHh~)5H-USs1;m6r9PxL?{kdBWPBCXzs1~% zO8s8c)||Ee3#jWW%sPF%8@Iyo^moQY?(f!7QOftA2Ko*)vm2-zMfUYp8jt$C5oTi{ zHp8*jzZ5mjdem9^95v24REB=F&tv*|ThIUlfB(0lqL~+=PIU=JVn0-72B8KXg*t3L zR0PH zhnm>qs0lrV%E%J@7y6OcznjQ`A$e{sYJx#`I9H0d;27M5BQTSkAoB=3YFkjHiaIFGiF1J(|A~cqMe{TU z3crI~D%Zsk4T&|@UsL;^W(_fm&|Y3A-XT=N`9fu>PW=-a|0Z4}9D58W#}n6YGd9`tC*FMSfJ4aa4vAWIJ#Gl_HhJL=~c(*hwg3(+EA^+Xx-H z%A)P5EMHnBo15*UKAYfm;NB#@AnFIP|0>$+{}OxDprjB_25SHRBZ`5736+|70ap>3 z>Y(T>sQg0wNqj&&L2zDO2-p7u`w=SoAD&C?{_Z>-ZwI=0F8QF7)o0*mRzHkC5RX_} zL~?B_>_7}5bXZlsC6)(jyoj(C5znB z&s2618CI`h&Zn<2q0_yU(5qafF`t*>??fI^Mg$X$=--IG2l?>~@i1|fPzm>No6IZb z&p3+Er0*e`5#JLk4Lt(yf&J8fC2m;X>p0WuNjBkVPha4VMtzn{haXQ9eTY*;B7H}2 zFTtbljuGRDvxLfr#3kaU8kEb#YNE3mRw}R!5$4^{{muGc#Sd^ zVpSFrD~L11P+}l)Khe}akD{(p+rteo#a!YzkxNVd-%hdOK_P#aFD}8lSVe7({d@RuW@~$B1`{w!~kE%JM9gzZ27m65a|bFQT$^qY^>Ysp5~x*$^F(*D|$v%eMIi k{@tx3!~JJEo~| section" msgstr "Scripts dans la section " -#: content_manager/models.py:76 +#: content_manager/models.py:201 msgid "Allows for scripts to be placed in the tag of the website pages." msgstr "" "Permet de placer des scripts à l’intérieur du tag des pages du site." -#: content_manager/models.py:82 +#: content_manager/models.py:207 msgid "Scripts in the section" msgstr "Scripts dans la section " -#: content_manager/models.py:83 +#: content_manager/models.py:208 msgid "" "Allows for scripts to be placed at the end of the tag of the website " "pages." msgstr "" "Permet de placer des scripts à l’intérieur du tag des pages du site." -#: content_manager/models.py:87 +#: content_manager/models.py:212 msgid "Use Tarteaucitron?" msgstr "Utiliser Tarteaucitron ?" -#: content_manager/models.py:91 +#: content_manager/models.py:216 msgid "" "See Documentation" @@ -995,7 +1016,7 @@ msgstr "" "Voir Documentation" -#: content_manager/models.py:106 +#: content_manager/models.py:231 msgid "" "Allows to add custom CSS and JS to the site, for example for Matomo, " "Tarteaucitron…" @@ -1003,19 +1024,19 @@ msgstr "" "Permet d’ajouter du CSS et du JS personnalisé au site, par exemple pour " "Matomo, Tarteaucitron…" -#: content_manager/models.py:114 +#: content_manager/models.py:239 msgid "Site configuration" msgstr "Configuration du site" -#: content_manager/models.py:115 +#: content_manager/models.py:240 msgid "Site configurations" msgstr "Configurations du site" -#: content_manager/models.py:118 +#: content_manager/models.py:243 msgid "Institution (header)" msgstr "Institution (en-tête)" -#: content_manager/models.py:123 +#: content_manager/models.py:248 msgid "" "Institution brand as defined on official page." @@ -1023,47 +1044,47 @@ msgstr "" "Nom de l’institution tel que défini sur la page officielle." -#: content_manager/models.py:129 +#: content_manager/models.py:254 msgid "Institution with line break (header)" msgstr "Institution avec césure (en-tête)" -#: content_manager/models.py:133 +#: content_manager/models.py:258 msgid "Institution brand with
    tags for line breaks" msgstr "Nom de l’institution avec des
    pour les retours à la ligne" -#: content_manager/models.py:136 +#: content_manager/models.py:261 msgid "Institution (footer)" msgstr "Institution (pied)" -#: content_manager/models.py:143 +#: content_manager/models.py:268 msgid "Institution with line break (footer)" msgstr "Institution avec césure (pied)" -#: content_manager/models.py:150 content_manager/models.py:152 +#: content_manager/models.py:275 content_manager/models.py:277 msgid "Site title" msgstr "Titre du site" -#: content_manager/models.py:156 content_manager/models.py:158 +#: content_manager/models.py:281 content_manager/models.py:283 msgid "Site tagline" msgstr "Sous-titre du site" -#: content_manager/models.py:163 +#: content_manager/models.py:288 msgid "Notice title" msgstr "Titre du bandeau" -#: content_manager/models.py:167 content_manager/models.py:174 +#: content_manager/models.py:292 content_manager/models.py:299 msgid "Can include HTML" msgstr "Peut inclure du HTML" -#: content_manager/models.py:171 +#: content_manager/models.py:296 msgid "Notice description" msgstr "Description du bandeau" -#: content_manager/models.py:177 +#: content_manager/models.py:302 msgid "Notice type" msgstr "Type de bandeau" -#: content_manager/models.py:184 +#: content_manager/models.py:309 msgid "" "Use is strictly regulated, see documentation." -#: content_manager/models.py:191 +#: content_manager/models.py:316 msgid "Notice link" msgstr "Lien du bandeau" -#: content_manager/models.py:194 +#: content_manager/models.py:319 msgid "Standardized consultation link at the end of the notice." msgstr "Lien de consultation standardisé à la fin du bandeau." -#: content_manager/models.py:198 +#: content_manager/models.py:323 msgid "Notice icon class" msgstr "Classe d’icône du bandeau" -#: content_manager/models.py:202 +#: content_manager/models.py:327 msgid "For weather alerts only" msgstr "Pour les bandeaux de vigilance météo uniquement" -#: content_manager/models.py:205 +#: content_manager/models.py:330 msgid "Collapsible?" msgstr "Refermable ?" -#: content_manager/models.py:207 +#: content_manager/models.py:332 msgid "Show the BETA tag next to the title" msgstr "Afficher la mention BETA à côté du titre" -#: content_manager/models.py:210 content_manager/models.py:429 +#: content_manager/models.py:335 content_manager/models.py:554 msgid "Description" msgstr "Description" -#: content_manager/models.py:223 content_manager/models.py:299 +#: content_manager/models.py:348 content_manager/models.py:424 msgid "Operator logo" msgstr "Logo opérateur" -#: content_manager/models.py:227 +#: content_manager/models.py:352 msgid "Logo alt text" msgstr "Alternative textuelle du logo" -#: content_manager/models.py:230 +#: content_manager/models.py:355 msgid "Must contain the text present in the image." msgstr "Doit impérativement contenir le texte présent dans l’image." -#: content_manager/models.py:233 +#: content_manager/models.py:358 msgid "Width (em)" msgstr "Largeur (em)" -#: content_manager/models.py:239 +#: content_manager/models.py:364 msgid "" "To be adjusted according to the width of the logo. Example for a " "vertical logo: 3.5, Example for a horizontal logo: 8." @@ -1125,64 +1146,64 @@ msgstr "" "À ajuster en fonction de la largeur du logo. Exemple pour un logo vertical: " "3.5, Exemple pour un logo horizontal: 8." -#: content_manager/models.py:244 +#: content_manager/models.py:369 msgid "Display search bar in the header" msgstr "Afficher la barre de recherche dans l’en-tête" -#: content_manager/models.py:245 +#: content_manager/models.py:370 msgid "Display theme modale button" msgstr "Afficher le bouton de choix du thème" -#: content_manager/models.py:246 +#: content_manager/models.py:371 msgid "Mourning" msgstr "Mise en berne" -#: content_manager/models.py:248 +#: content_manager/models.py:373 msgid "Newsletter description" msgstr "Description de la lettre d’information" -#: content_manager/models.py:251 +#: content_manager/models.py:376 msgid "Newsletter registration URL" msgstr "URL d‘inscription à la lettre d’information" -#: content_manager/models.py:256 +#: content_manager/models.py:381 msgid "Activate share links on content_pages" msgstr "Activer les liens de partage sur les pages de contenu" -#: content_manager/models.py:257 +#: content_manager/models.py:382 msgid "Activate share links on blog posts" msgstr "Activer les liens de partage sur les articles de blog" -#: content_manager/models.py:258 +#: content_manager/models.py:383 msgid "Activate share links on event pages" msgstr "Activer les liens de partage sur les pages d’événement" -#: content_manager/models.py:261 +#: content_manager/models.py:386 msgid "Display a Share on Facebook link at the bottom of pages" msgstr "Afficher un lien de partage sur Facebook en bas des pages" -#: content_manager/models.py:264 +#: content_manager/models.py:389 msgid "Display a Share on X (previously Twitter) link at the bottom of pages" msgstr "" "Afficher un lien de partage sur X (anciennement Twitter) en bas des pages" -#: content_manager/models.py:267 +#: content_manager/models.py:392 msgid "Display a Share on LinkedIn link at the bottom of pages" msgstr "Afficher un lien de partage sur LinkedIn en bas des pages" -#: content_manager/models.py:269 +#: content_manager/models.py:394 msgid "Display a Share via email link at the bottom of pages" msgstr "Afficher un lien de partage par courrier électronique en bas des pages" -#: content_manager/models.py:271 +#: content_manager/models.py:396 msgid "Display a Copy to clipboard link at the bottom of pages" msgstr "Afficher un lien de copie dans le presse-papiers en bas des pages" -#: content_manager/models.py:287 +#: content_manager/models.py:412 msgid "Important notice" msgstr "Bandeau d’information importante" -#: content_manager/models.py:289 +#: content_manager/models.py:414 msgid "" "The important notice banner should only be used for essential and temporary " "information. (Excessive or continuous use risks “drowning” " @@ -1192,83 +1213,83 @@ msgstr "" "information primordiale et temporaire. (Une utilisation excessive ou " "continue risque de “noyer” le message)" -#: content_manager/models.py:308 +#: content_manager/models.py:433 msgid "Advanced settings" msgstr "Paramètres avancés" -#: content_manager/models.py:318 +#: content_manager/models.py:443 msgid "Header" msgstr "En-tête" -#: content_manager/models.py:325 +#: content_manager/models.py:450 msgid "Footer" msgstr "Pied de page" -#: content_manager/models.py:335 +#: content_manager/models.py:460 msgid "Newsletter" msgstr "Lettre d’information" -#: content_manager/models.py:337 content_manager/models.py:410 +#: content_manager/models.py:462 content_manager/models.py:535 msgid "Social media items" msgstr "Liens de réseaux sociaux" -#: content_manager/models.py:344 +#: content_manager/models.py:469 msgid "Activate share links by type of page" msgstr "Activer les liens de partage par type de page" -#: content_manager/models.py:354 +#: content_manager/models.py:479 msgid "Types of share links" msgstr "Types de liens de partage" -#: content_manager/models.py:359 +#: content_manager/models.py:484 msgid "Generic" msgstr "Génériques" -#: content_manager/models.py:360 +#: content_manager/models.py:485 msgid "Brand block" msgstr "Bloc-marque" -#: content_manager/models.py:361 +#: content_manager/models.py:486 msgid "Newsletter, social media and share links" msgstr "Lettre d’information, réseaux sociaux et liens de partage" -#: content_manager/models.py:396 +#: content_manager/models.py:521 msgid "URL" msgstr "URL" -#: content_manager/models.py:400 +#: content_manager/models.py:525 msgid "Icon class" msgstr "Classe d’icône" -#: content_manager/models.py:409 +#: content_manager/models.py:534 msgid "Social media item" msgstr "Lien de réseau social" -#: content_manager/models.py:416 +#: content_manager/models.py:541 msgid "Category" msgstr "Catégorie" -#: content_manager/models.py:419 +#: content_manager/models.py:544 msgid "Mega menu category" msgstr "Catégorie de méga menu" -#: content_manager/models.py:420 +#: content_manager/models.py:545 msgid "Mega menu categories" msgstr "Catégories de méga menu" -#: content_manager/models.py:430 +#: content_manager/models.py:555 msgid "Main link" msgstr "Lien principal" -#: content_manager/models.py:440 +#: content_manager/models.py:565 msgid "Categories" msgstr "Catégories" -#: content_manager/models.py:441 +#: content_manager/models.py:566 msgid "Maximum 4 categories, each with maximum 8 links." msgstr "Maximum 4 catégories, chacune contenant maximum 8 liens." -#: content_manager/models.py:452 +#: content_manager/models.py:577 msgid "Mega menu" msgstr "Méga menu" @@ -1289,6 +1310,10 @@ msgstr "Voir tous les articles" msgid "Opens a new window" msgstr "Ouvre une nouvelle fenêtre" +#: content_manager/templates/content_manager/blocks/catalog_index_entries_list.html:37 +msgid "No page found." +msgstr "Aucune page trouvée." + #: content_manager/templates/content_manager/blocks/download_info.html:5 msgid "Unknown file format" msgstr "Format de fichier inconnu" @@ -1333,6 +1358,11 @@ msgstr "Groupe d’onglets" msgid "Watch on the site" msgstr "Voir sur le site" +#: content_manager/templates/content_manager/catalog_index_page.html:72 +#: content_manager/templates/content_manager/catalog_index_page.html:74 +msgid "Filters" +msgstr "Filtres" + #: content_manager/templates/content_manager/password_required.html:5 #: content_manager/templates/content_manager/password_required.html:15 msgid "Password required" diff --git a/content_manager/management/commands/create_demo_pages.py b/content_manager/management/commands/create_demo_pages.py index c84923bd..d8dd3e96 100644 --- a/content_manager/management/commands/create_demo_pages.py +++ b/content_manager/management/commands/create_demo_pages.py @@ -8,7 +8,7 @@ from blog.models import BlogIndexPage from content_manager.models import ContentPage, MegaMenu, MegaMenuCategory -from content_manager.services.accessors import get_or_create_content_page +from content_manager.services.accessors import get_or_create_catalog_index_page, get_or_create_content_page from forms.models import FormField, FormPage ALL_ALLOWED_SLUGS = ["blog_index", "publications", "menu_page", "form"] @@ -111,7 +111,7 @@ def create_publication_pages(self, site, main_menu): text_raw = """

    Veuillez trouver ici une liste de publications

    """ body.append(("paragraph", RichText(text_raw))) - publications_page = get_or_create_content_page(slug=slug, title=title, body=body) + publications_page = get_or_create_catalog_index_page(slug=slug, title=title, body=body) publications_menu_item, _created = MainMenuItem.objects.update_or_create( link_page=publications_page, menu=main_menu, defaults={"sort_order": 2} ) diff --git a/content_manager/migrations/0050_catalogindexpage.py b/content_manager/migrations/0050_catalogindexpage.py new file mode 100644 index 00000000..eb39bbda --- /dev/null +++ b/content_manager/migrations/0050_catalogindexpage.py @@ -0,0 +1,1668 @@ +# Generated by Django 5.1.3 on 2024-12-10 10:07 + +import django.core.validators +import django.db.models.deletion +import wagtail.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("content_manager", "0049_alter_contentpage_body"), + ("wagtailcore", "0094_alter_page_locale"), + ("wagtailimages", "0027_image_description"), + ] + + operations = [ + migrations.CreateModel( + name="CatalogIndexPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "body", + wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 42), + ("quote", 43), + ("author_name", 44), + ("author_title", 45), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ( + "wagtail.blocks.RichTextBlock", + (), + {"label": "Transcription content", "required": False}, + ), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription"}, + ), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Current step", "max_value": 8, "min_value": 1}, + ), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-card--horizontal-tier", "1/3"), + ("fr-card--horizontal-half", "50/50"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card with grey background", "required": False}, + ), + 90: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card without background", "required": False}, + ), + 91: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card without border", "required": False}, + ), + 92: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card with a shadow", "required": False}, + ), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 99: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile without background", "required": False}, + ), + 100: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile without border", "required": False}, + ), + 101: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with a shadow", "required": False}, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Name", "max_length": 255, "required": False}, + ), + 130: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Role", "max_length": 255, "required": False}, + ), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 74), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 42), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ( + "wagtailmarkdown.blocks.MarkdownBlock", + (), + {"group": "Expert syntax", "label": "Markdown"}, + ), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ( + "Primary colors", + [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")], + ), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + ("header_with_title", models.BooleanField(default=False, verbose_name="Show title in header image?")), + ( + "header_color_class", + models.CharField( + blank=True, + choices=[ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + help_text="Uses the French Design System colors", + null=True, + verbose_name="Background color", + ), + ), + ("header_large", models.BooleanField(default=False, verbose_name="Full width")), + ("header_darken", models.BooleanField(default=False, verbose_name="Darken background image")), + ( + "header_cta_text", + wagtail.fields.RichTextField(blank=True, null=True, verbose_name="Call to action text"), + ), + ( + "header_cta_buttons", + wagtail.fields.StreamField( + [("buttons", 8)], + blank=True, + block_lookup={ + 0: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 1: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 2: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 3: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 4: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 5: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 7: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 0), + ("document", 1), + ("external_url", 2), + ("text", 3), + ("button_type", 4), + ("icon_class", 5), + ("icon_side", 6), + ] + ], + {"label": "Button"}, + ), + 8: ( + "wagtail.blocks.StreamBlock", + [[("button", 7)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + }, + null=True, + ), + ), + ( + "header_cta_label", + models.CharField( + blank=True, + help_text="This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + null=True, + verbose_name="Call to action label", + ), + ), + ( + "header_cta_link", + models.URLField( + blank=True, + help_text="This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + null=True, + verbose_name="Call to action link", + ), + ), + ( + "source_url", + models.URLField( + blank=True, + help_text="For imported pages, to allow updates.", + null=True, + verbose_name="Source URL", + ), + ), + ( + "entries_per_page", + models.PositiveSmallIntegerField( + default=10, + validators=[ + django.core.validators.MaxValueValidator(100), + django.core.validators.MinValueValidator(1), + ], + verbose_name="Entries per page", + ), + ), + ("filter_by_tag", models.BooleanField(default=True, verbose_name="Filter by tag")), + ( + "header_image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Header image", + ), + ), + ], + options={ + "verbose_name": "Catalog index page", + }, + bases=("wagtailcore.page",), + ), + ] diff --git a/content_manager/models.py b/content_manager/models.py index 29ada499..d72f36cc 100644 --- a/content_manager/models.py +++ b/content_manager/models.py @@ -1,13 +1,19 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.forms.widgets import Textarea, mark_safe +from django.http import HttpRequest, HttpResponse +from django.shortcuts import get_object_or_404 from django.utils.translation import gettext_lazy as _ from dsfr.constants import NOTICE_TYPE_CHOICES from modelcluster.fields import ParentalKey from modelcluster.models import ClusterableModel from modelcluster.tags import ClusterTaggableManager from taggit.models import Tag as TaggitTag, TaggedItemBase +from unidecode import unidecode from wagtail.admin.panels import FieldPanel, InlinePanel, MultiFieldPanel, ObjectList, TabbedInterface from wagtail.api import APIField +from wagtail.contrib.routable_page.models import RoutablePageMixin, path from wagtail.contrib.settings.models import BaseSiteSetting, register_setting from wagtail.fields import RichTextField from wagtail.images import get_image_model_string @@ -39,6 +45,124 @@ class TagContentPage(TaggedItemBase): content_object = ParentalKey("ContentPage", related_name="contentpage_tags") +class CatalogIndexPage(RoutablePageMixin, SitesFacilesBasePage): + entries_per_page = models.PositiveSmallIntegerField( + default=10, + validators=[MaxValueValidator(100), MinValueValidator(1)], + verbose_name=_("Entries per page"), + ) + + # Filters + filter_by_tag = models.BooleanField(_("Filter by tag"), default=True) + + settings_panels = SitesFacilesBasePage.settings_panels + [ + FieldPanel("entries_per_page"), + MultiFieldPanel( + [ + FieldPanel("filter_by_tag"), + ], + heading=_("Show filters"), + ), + ] + + subpage_types = ["content_manager.ContentPage"] + + class Meta: + verbose_name = _("Catalog index page") + + @property + def entries(self): + # Get a list of live content pages that are children of this page + return ContentPage.objects.child_of(self).live().specific().prefetch_related("tags") + + def get_context(self, request, *args, **kwargs): + context = super(CatalogIndexPage, self).get_context(request, *args, **kwargs) + entries = self.entries + + extra_breadcrumbs = None + extra_title = "" + + tag = request.GET.get("tag") + if tag: + tag = get_object_or_404(Tag, slug=tag) + entries = entries.filter(tags=tag) + extra_breadcrumbs = { + "links": [ + {"url": self.get_url(), "title": self.title}, + { + "url": f"{self.get_url()}{self.reverse_subpage('tags_list')}", + "title": _("Tags"), + }, + ], + "current": tag, + } + extra_title = _("Pages tagged with %(tag)s") % {"tag": tag} + + # Pagination + page = request.GET.get("page") + page_size = self.entries_per_page + + paginator = Paginator(entries, page_size) # Show entries per page + try: + entries = paginator.page(page) + except PageNotAnInteger: + entries = paginator.page(1) + except EmptyPage: + entries = paginator.page(paginator.num_pages) + + context["entries"] = entries + context["current_tag"] = tag + context["paginator"] = paginator + context["extra_title"] = extra_title + + # Filters + context["tags"] = self.get_tags() + + if extra_breadcrumbs: + context["extra_breadcrumbs"] = extra_breadcrumbs + + return context + + def get_tags(self) -> models.QuerySet: + ids = self.entries.values_list("tags", flat=True) + return Tag.objects.tags_with_usecount(1).filter(id__in=ids).order_by("name") + + @property + def show_filters(self) -> bool | models.BooleanField: + return self.filter_by_tag and self.get_tags().count() > 0 + + @path("tags/", name="tags_list") + def tags_list(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + extra_title = _("Tags") + tags = self.get_tags() + + tags_by_first_letter = {} + for tag in tags: + first_letter = unidecode(tag.slug[0].upper()) + if first_letter not in tags_by_first_letter: + tags_by_first_letter[first_letter] = [] + tags_by_first_letter[first_letter].append(tag) + + extra_breadcrumbs = { + "links": [ + {"url": self.get_url(), "title": self.title}, + ], + "current": _("Tags"), + } + + return self.render( + request, + context_overrides={ + "title": _("Tags"), + "sorted_tags": tags_by_first_letter, + "page": self, + "extra_title": extra_title, + "extra_breadcrumbs": extra_breadcrumbs, + }, + template="content_manager/tags_list_page.html", + ) + + @register_snippet class Tag(TaggitTag): objects = TagManager() diff --git a/content_manager/services/accessors.py b/content_manager/services/accessors.py index 290acb21..286bec67 100644 --- a/content_manager/services/accessors.py +++ b/content_manager/services/accessors.py @@ -6,7 +6,7 @@ from wagtailmenus.models.menus import FlatMenu, MainMenu from content_manager.constants import HEADER_FIELDS -from content_manager.models import ContentPage +from content_manager.models import CatalogIndexPage, ContentPage style = color_style() @@ -26,25 +26,78 @@ def get_or_create_collection(col_name: str) -> Collection: return result -def get_or_create_content_page( +def get_or_create_catalog_index_page( slug: str, title: str, body: list, parent_page: ContentPage | None = None, restriction_type: str | None = None, page_fields: dict | None = None, +) -> CatalogIndexPage: + """ + Get a CatalogIndexPage if it exists, or creates it instead. + """ + + site = Site.objects.filter(is_default_site=True).first() + root_page = site.root_page + locale = root_page.locale + + # If parent_page is not passed as parameter, use the Home page of the default site. + if not parent_page: + parent_page = root_page + + # Don't replace or duplicate an already existing page + already_exists = CatalogIndexPage.objects.filter(slug=slug, locale=locale).first() + if already_exists: + sys.stdout.write(f"The {slug} page seem to already exist with id {already_exists.id}\n") + return already_exists + + new_page = parent_page.add_child( + instance=CatalogIndexPage( + title=title, + body=body, + slug=slug, + show_in_menus=True, + ) + ) + + allowed_page_fields = HEADER_FIELDS + ["source_url"] + if page_fields and len(page_fields): + for k, v in page_fields.items(): + if k in allowed_page_fields: + setattr(new_page, k, v) + new_page.save() + + if restriction_type: + PageViewRestriction.objects.create(page=new_page, restriction_type=restriction_type) + + sys.stdout.write(style.SUCCESS(f"Page {slug} created with id {new_page.id}")) + + return new_page + + +def get_or_create_content_page( + slug: str, + title: str, + body: list, + parent_page: ContentPage | CatalogIndexPage | None = None, + restriction_type: str | None = None, + page_fields: dict | None = None, ) -> ContentPage: """ - Get a ContentPage, or creates it if it exists. + Get a ContentPage if it exists, or creates it instead. """ + site = Site.objects.filter(is_default_site=True).first() + root_page = site.root_page + locale = root_page.locale + # If parent_page is not passed as parameter, use the Home page of the default site. if not parent_page: - site = Site.objects.filter(is_default_site=True).first() - parent_page = site.root_page + parent_page = root_page # Don't replace or duplicate an already existing page - already_exists = ContentPage.objects.filter(slug=slug).first() + already_exists = ContentPage.objects.filter(slug=slug, locale=locale).first() if already_exists: sys.stdout.write(f"The {slug} page seem to already exist with id {already_exists.id}\n") return already_exists diff --git a/content_manager/templates/content_manager/blocks/catalog_index_entries_list.html b/content_manager/templates/content_manager/blocks/catalog_index_entries_list.html new file mode 100644 index 00000000..395f5b92 --- /dev/null +++ b/content_manager/templates/content_manager/blocks/catalog_index_entries_list.html @@ -0,0 +1,39 @@ +{% load i18n %} +{% for entry in entries %} +
    + +
    +{% empty %} +
    +

    {% translate "No page found." %}

    +
    +{% endfor %} diff --git a/content_manager/templates/content_manager/catalog_index_page.html b/content_manager/templates/content_manager/catalog_index_page.html new file mode 100644 index 00000000..2cea8511 --- /dev/null +++ b/content_manager/templates/content_manager/catalog_index_page.html @@ -0,0 +1,161 @@ +{% extends "base.html" %} +{% load static dsfr_tags wagtailcore_tags wagtailimages_tags wagtail_dsfr_tags i18n %} + +{% block title %} + {{ page.seo_title|default:page.title }} — {{ settings.content_manager.CmsDsfrConfig.site_title }} +{% endblock title %} + +{% if page.search_description %} + {% block description %} + + {% endblock description %} +{% endif %} + +{% block social_media %} + + + + + + + + {% if page.get_translations.live %} + {% for translation in page.get_translations.live %} + + {% endfor %} + {% endif %} + + + + + {% if page.header_image %} + + {% image page.header_image fill-1200x627 as header_image %} + + + {% else %} + + {% endif %} +{% endblock social_media %} + +{% block content %} + {% include "content_manager/blocks/heading.html" %} + {% include "content_manager/blocks/messages.html" %} + +
    + {% include "content_manager/blocks/breadcrumbs.html" %} + {% if not page.header_with_title %} +

    + {{ page.title }} + {% if extra_title %}: {{ extra_title }}{% endif %} + {% include "content_manager/blocks/page_visibility.html" %} +

    + {% endif %} + + {% if current_category.description %} + {{ current_category.description|richtext }} + {% else %} + {{ page.body }} + {% endif %} + + {% if page.show_filters %} +
    +
    + +
    + +
    +
    + {% include "content_manager/blocks/catalog_index_entries_list.html" %} +
    + {% if entries.paginator.num_pages > 1 %} +
    {% dsfr_pagination entries %}
    + {% endif %} +
    +
    + {% else %} +
    + {% include "content_manager/blocks/catalog_index_entries_list.html" %} +
    + {% if entries.paginator.num_pages > 1 %} +
    {% dsfr_pagination entries %}
    + {% endif %} + {% endif %} +
    +{% endblock content %} diff --git a/content_manager/templates/content_manager/tags_list_page.html b/content_manager/templates/content_manager/tags_list_page.html index 68055a38..8cd8c2ce 100644 --- a/content_manager/templates/content_manager/tags_list_page.html +++ b/content_manager/templates/content_manager/tags_list_page.html @@ -3,48 +3,71 @@ {% load static dsfr_tags wagtailcore_tags wagtailimages_tags i18n %} {% block title %} + {% if page %} + {{ page.seo_title|default:page.title }} + {% if extra_title %}: {{ extra_title }}{% endif %} + — {{ settings.content_manager.CmsDsfrConfig.site_title }} + {% else %} {{ title }} — {{ settings.content_manager.CmsDsfrConfig.site_title }} + {% endif %} {% endblock title %} {% block description %} - + {% endblock description %} {% block social_media %} - - - - - - - - - + + + + + + + + + {% endblock social_media %} {% block content %} - {% include "content_manager/blocks/messages.html" %} - -
    - {% dsfr_breadcrumb breadcrumb %} -

    {% translate "Tags" %}

    - -
    - {% for first_letter in sorted_tags.keys|dictsort:0 %} - {{ first_letter }} - {% endfor %} -
    - - {% for first_letter, tags in sorted_tags.items|dictsort:0 %} -

    {{ first_letter }}

    - - {% endfor %} + {% include "content_manager/blocks/messages.html" %} + +
    + {% if page %} + {% include "content_manager/blocks/breadcrumbs.html" %} + {% else %} + {% dsfr_breadcrumb breadcrumb %} + {% endif %} + {% if page %} +

    + {{ page.title }} + {% if extra_title %}: {{ extra_title }}{% endif %} + {% include "content_manager/blocks/page_visibility.html" %} +

    + + {% else %} +

    {% translate "Tags" %}

    + {% endif %} + +
    + {% for first_letter in sorted_tags.keys|dictsort:0 %} + {{ first_letter }} + {% endfor %}
    + + {% for first_letter, tags in sorted_tags.items|dictsort:0 %} +

    {{ first_letter }}

    + + {% endfor %} +
    {% endblock content %} diff --git a/content_manager/tests/test_views.py b/content_manager/tests/test_views.py index 34f62c3c..91a53223 100644 --- a/content_manager/tests/test_views.py +++ b/content_manager/tests/test_views.py @@ -6,7 +6,7 @@ from wagtailmenus.models.menuitems import FlatMenuItem, MainMenuItem from wagtailmenus.models.menus import FlatMenu, MainMenu -from content_manager.models import CmsDsfrConfig, ContentPage, MegaMenu, MegaMenuCategory +from content_manager.models import CatalogIndexPage, CmsDsfrConfig, ContentPage, MegaMenu, MegaMenuCategory class ContentPageTestCase(WagtailPageTestCase): @@ -281,3 +281,46 @@ def test_mega_menu_is_rendered(self): """, response.content.decode(), ) + + +class CatalogIndexPageTestCase(WagtailPageTestCase): + def setUp(self): + home = Page.objects.get(slug="home") + self.admin = User.objects.create_superuser("test", "test@test.test", "pass") + self.admin.save() + self.catalog_index_page = home.add_child( + instance=CatalogIndexPage( + title="Index de catalogue", + slug="catalog-index", + owner=self.admin, + ) + ) + self.catalog_index_page.save() + + self.catalog_entry = self.catalog_index_page.add_child( + instance=ContentPage( + title="Entrée de catalogue", + slug="catalog-entry", + owner=self.admin, + ) + ) + + self.catalog_entry.save() + + def test_catalog_index_page_is_renderable(self): + self.assertPageIsRenderable(self.catalog_index_page) + + def test_catalog_index_page_has_minimal_content(self): + url = self.catalog_index_page.url + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + + self.assertInHTML( + "Index de catalogue — Titre du site", + response.content.decode(), + ) + + self.assertInHTML( + 'Entrée de catalogue', + response.content.decode(), + ) diff --git a/dashboard/wagtail_hooks.py b/dashboard/wagtail_hooks.py index 3332654c..dc726b77 100644 --- a/dashboard/wagtail_hooks.py +++ b/dashboard/wagtail_hooks.py @@ -27,7 +27,7 @@ class UserbarPageAPILinkItem: """ def render(self, request) -> str: - if hasattr(request, "_wagtail_route_for_request"): + if hasattr(request, "_wagtail_route_for_request") and hasattr(request._wagtail_route_for_request, "page"): page = request._wagtail_route_for_request.page page_url = reverse("wagtailapi:pages:detail", kwargs={"pk": page.id}) page_in_api_label = _("See page entry in API") diff --git a/poetry.lock b/poetry.lock index df719807..573648c0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -30,21 +30,18 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, + {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, + {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, ] -[package.dependencies] -six = ">=1.12.0" - [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "beautifulsoup4" @@ -131,17 +128,17 @@ webencodings = "*" [[package]] name = "boto3" -version = "1.35.65" +version = "1.35.77" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.65-py3-none-any.whl", hash = "sha256:acbca38322b66516450f959c7874826267d431becdc2b080e331e56c2ebbe507"}, - {file = "boto3-1.35.65.tar.gz", hash = "sha256:f6c266b4124b92b1603727bf1ed1917e0b74a899bd0e326f151d80c3eaed27a1"}, + {file = "boto3-1.35.77-py3-none-any.whl", hash = "sha256:a09871805f8e462349a1c33c23eb413668df0bf68424e61d53518e1a7d883b2f"}, + {file = "boto3-1.35.77.tar.gz", hash = "sha256:cc819cdbccbc2d0dc185f1dcfe74cf3809489c4cae63c2e5d6a557aa0c5ab928"}, ] [package.dependencies] -botocore = ">=1.35.65,<1.36.0" +botocore = ">=1.35.77,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -150,13 +147,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.65" +version = "1.35.77" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.65-py3-none-any.whl", hash = "sha256:8fcaa82ab2338f412e1494449c4c57f9ca785623fb0303f6be5b279c4d27522c"}, - {file = "botocore-1.35.65.tar.gz", hash = "sha256:46652f732f2b2fb395fffcc33cacb288d05ea283047c9a996fb59d6849464919"}, + {file = "botocore-1.35.77-py3-none-any.whl", hash = "sha256:3faa27d65841499762228902d7e215fa99a4c2fdc76c9113e1c3f339bdf685b8"}, + {file = "botocore-1.35.77.tar.gz", hash = "sha256:17b778016644e9342ca3ff2f430c1d1db0c6126e9b41a57cff52ac58e7a455e0"}, ] [package.dependencies] @@ -673,33 +670,33 @@ django = ">=4.2" [[package]] name = "djlint" -version = "1.36.1" +version = "1.36.3" description = "HTML Template Linter and Formatter" optional = false python-versions = ">=3.9" files = [ - {file = "djlint-1.36.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef40527fd6cd82cdd18f65a6bf5b486b767d2386f6c21f2ebd60e5d88f487fe8"}, - {file = "djlint-1.36.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4712de3dea172000a098da6a0cd709d158909b4964ba0f68bee584cef18b4878"}, - {file = "djlint-1.36.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63d01c1425170b7059d68a3b01709e1c31d2cd6520a1eb0166e6670fd250518a"}, - {file = "djlint-1.36.1-cp310-cp310-win_amd64.whl", hash = "sha256:65585a97d3a37760b4c1fbd089a3573506ad0ab2885119322a66231f911d113f"}, - {file = "djlint-1.36.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:607437a0a230462916858c269bc5dfd15ff71b27d15dfd1ad6e96b3da9cbd8f6"}, - {file = "djlint-1.36.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ddc9ae6b83b288465f6685b24797adbde79952d6e1a5276026e5ef479bac76f"}, - {file = "djlint-1.36.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:001e5124b0ebab60a2044134abd11ff11dee772e7c3caaa2c8d12eb5d3b1f1dc"}, - {file = "djlint-1.36.1-cp311-cp311-win_amd64.whl", hash = "sha256:095d62f3cabbac08683c51c1d9dacab522b54437a2a317df9e134599360f7b89"}, - {file = "djlint-1.36.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:210f319c2d22489aebc0e9c1acd5015ca3892b66fa35647344511b3c03fcbe82"}, - {file = "djlint-1.36.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7aa3db13d7702c35f4e408325061d9d4e84d006c99bb3e55fddf2b2543736923"}, - {file = "djlint-1.36.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f907e97f4d67f4423dc71671592891cfd9cd311aeef14db25633f292dbf7048"}, - {file = "djlint-1.36.1-cp312-cp312-win_amd64.whl", hash = "sha256:abadf6b61dc53d81710f230542f57f2d470b7503cd3108ad8a0113271c0514dd"}, - {file = "djlint-1.36.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7f31646435385eec1d4b03dad7bebb5e4078d9893c60d490a685535bd6303c83"}, - {file = "djlint-1.36.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4399477ac51f9c8147eedbef70aa8465eccba6759d875d1feec6782744aa168a"}, - {file = "djlint-1.36.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f08c217b17d3ae3c0e3b5fff57fb708029cceda6e232f5a54ff1b3aeb43a7540"}, - {file = "djlint-1.36.1-cp313-cp313-win_amd64.whl", hash = "sha256:1577490802ca4697af3488ed13066c9214ef0f625a96aa20d4f297e37aa19303"}, - {file = "djlint-1.36.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ae356faf8180c7629ca705b7b9d8c9269b2c53273a1887a438a21b8fa263588"}, - {file = "djlint-1.36.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2237ac5cecd2524960e1684f64ce358624b0d769b7404e5aad415750ad00edc9"}, - {file = "djlint-1.36.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02c22352a49c053ff6260428ed571afb783011d20afc98b44bbe1dd2fa2d5418"}, - {file = "djlint-1.36.1-cp39-cp39-win_amd64.whl", hash = "sha256:99a2debeea2e931b68360306fdbf13861e3d6f96037a9d882f3d4d5e44fdc319"}, - {file = "djlint-1.36.1-py3-none-any.whl", hash = "sha256:950782b396dd82b74622c09d7e4c52328e56a3b03c8ac790c319708e5caa0686"}, - {file = "djlint-1.36.1.tar.gz", hash = "sha256:f7260637ed72c270fa6dd4a87628e1a21c49b24a46df52e4e26f44d4934fb97c"}, + {file = "djlint-1.36.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ae7c620b58e16d6bf003bd7de3f71376a7a3daa79dc02e77f3726d5a75243f2"}, + {file = "djlint-1.36.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e155ce0970d4a28d0a2e9f2e106733a2ad05910eee90e056b056d48049e4a97b"}, + {file = "djlint-1.36.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e8bb0406e60cc696806aa6226df137618f3889c72f2dbdfa76c908c99151579"}, + {file = "djlint-1.36.3-cp310-cp310-win_amd64.whl", hash = "sha256:76d32faf988ad58ef2e7a11d04046fc984b98391761bf1b61f9a6044da53d414"}, + {file = "djlint-1.36.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:32f7a5834000fff22e94d1d35f95aaf2e06f2af2cae18af0ed2a4e215d60e730"}, + {file = "djlint-1.36.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3eb1b9c0be499e63e8822a051e7e55f188ff1ab8172a85d338a8ae21c872060e"}, + {file = "djlint-1.36.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c2e0dd1f26eb472b8c84eb70d6482877b6497a1fd031d7534864088f016d5ea"}, + {file = "djlint-1.36.3-cp311-cp311-win_amd64.whl", hash = "sha256:a06b531ab9d049c46ad4d2365d1857004a1a9dd0c23c8eae94aa0d233c6ec00d"}, + {file = "djlint-1.36.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e66361a865e5e5a4bbcb40f56af7f256fd02cbf9d48b763a40172749cc294084"}, + {file = "djlint-1.36.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:36e102b80d83e9ac2e6be9a9ded32fb925945f6dbc7a7156e4415de1b0aa0dba"}, + {file = "djlint-1.36.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ac4b7370d80bd82281e57a470de8923ac494ffb571b89d8787cef57c738c69a"}, + {file = "djlint-1.36.3-cp312-cp312-win_amd64.whl", hash = "sha256:107cc56bbef13d60cc0ae774a4d52881bf98e37c02412e573827a3e549217e3a"}, + {file = "djlint-1.36.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2a9f51971d6e63c41ea9b3831c928e1f21ae6fe57e87a3452cfe672d10232433"}, + {file = "djlint-1.36.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:080c98714b55d8f0fef5c42beaee8247ebb2e3d46b0936473bd6c47808bb6302"}, + {file = "djlint-1.36.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f65a80e0b5cb13d357ea51ca6570b34c2d9d18974c1e57142de760ea27d49ed0"}, + {file = "djlint-1.36.3-cp313-cp313-win_amd64.whl", hash = "sha256:95ef6b67ef7f2b90d9434bba37d572031079001dc8524add85c00ef0386bda1e"}, + {file = "djlint-1.36.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e2317a32094d525bc41cd11c8dc064bf38d1b442c99cc3f7c4a2616b5e6ce6e"}, + {file = "djlint-1.36.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e82266c28793cd15f97b93535d72bfbc77306eaaf6b210dd90910383a814ee6c"}, + {file = "djlint-1.36.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01b2101c2d1b079e8d545e6d9d03487fcca14d2371e44cbfdedee15b0bf4567c"}, + {file = "djlint-1.36.3-cp39-cp39-win_amd64.whl", hash = "sha256:15cde63ef28beb5194ff4137883025f125676ece1b574b64a3e1c6daed734639"}, + {file = "djlint-1.36.3-py3-none-any.whl", hash = "sha256:0c05cd5b76785de2c41a2420c06ffd112800bfc0f9c0f399cc7cea7c42557f4c"}, + {file = "djlint-1.36.3.tar.gz", hash = "sha256:d85735da34bc7ac93ad8ef9b4822cc2a23d5f0ce33f25438737b8dca1d404f78"}, ] [package.dependencies] @@ -873,13 +870,13 @@ pytz = "*" [[package]] name = "identify" -version = "2.6.2" +version = "2.6.3" description = "File identification library for Python" optional = false python-versions = ">=3.9" files = [ - {file = "identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3"}, - {file = "identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd"}, + {file = "identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd"}, + {file = "identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02"}, ] [package.extras] @@ -901,13 +898,13 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "ipython" -version = "8.29.0" +version = "8.30.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, - {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, + {file = "ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321"}, + {file = "ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e"}, ] [package.dependencies] @@ -917,16 +914,16 @@ exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" +prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" -stack-data = "*" +stack_data = "*" traitlets = ">=5.13.0" -typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} +typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing_extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -997,13 +994,13 @@ six = ">=1.13.0" [[package]] name = "json5" -version = "0.9.28" +version = "0.10.0" description = "A Python implementation of the JSON5 data format." optional = false python-versions = ">=3.8.0" files = [ - {file = "json5-0.9.28-py3-none-any.whl", hash = "sha256:29c56f1accdd8bc2e037321237662034a7e07921e2b7223281a5ce2c46f0c4df"}, - {file = "json5-0.9.28.tar.gz", hash = "sha256:1f82f36e615bc5b42f1bbd49dbc94b12563c56408c6ffa06414ea310890e9a6e"}, + {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, + {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, ] [package.extras] @@ -1053,7 +1050,6 @@ files = [ {file = "libsass-0.22.0-cp37-abi3-macosx_10_15_x86_64.whl", hash = "sha256:081e256ab3c5f3f09c7b8dea3bf3bf5e64a97c6995fd9eea880639b3f93a9f9a"}, {file = "libsass-0.22.0-cp37-abi3-win32.whl", hash = "sha256:89c5ce497fcf3aba1dd1b19aae93b99f68257e5f2026b731b00a872f13324c7f"}, {file = "libsass-0.22.0-cp37-abi3-win_amd64.whl", hash = "sha256:65455a2728b696b62100eb5932604aa13a29f4ac9a305d95773c14aaa7200aaf"}, - {file = "libsass-0.22.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:5fb2297a4754a6c8e25cfe5c015a3b51a2b6b9021b333f989bb8ce9d60eb5828"}, {file = "libsass-0.22.0.tar.gz", hash = "sha256:3ab5ad18e47db560f4f0c09e3d28cf3bb1a44711257488ac2adad69f4f7f8425"}, ] @@ -1278,57 +1274,57 @@ xmp = ["defusedxml"] [[package]] name = "pillow-heif" -version = "0.20.0" +version = "0.21.0" description = "Python interface for libheif library" optional = false python-versions = ">=3.9" files = [ - {file = "pillow_heif-0.20.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ef2ad418f42adc9ef5d5e709547e799fb32141543856cb14f04fa4b22f83bfd7"}, - {file = "pillow_heif-0.20.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:af229e214ec23053bea1f162972645495bfb12f2c3b5ece463bd8a01aefda17a"}, - {file = "pillow_heif-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f446a78a9d84ef75761638a7e72a477aadeffb282ac70ffe67360a98d54775b1"}, - {file = "pillow_heif-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4a77c6e78756948a2a5fc8ec7341184fca1bc7316c11f6df0cf3fe9732e1688"}, - {file = "pillow_heif-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d30d19b8ba9c384a06523c3d419c46d62c823abdb6d75581ffd5328503f6d3aa"}, - {file = "pillow_heif-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ec02ebbe88e2af0f093e80c95b716f54479a32b037da6b1c12b9f4024eab359"}, - {file = "pillow_heif-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:86a8920ea3a3b3923c827629afc850c1ee9f753b71346180c226882545028e06"}, - {file = "pillow_heif-0.20.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:8e3bc0bda64cce72e41f6c20a5cf3e24af308a09e146df78d31acb337a8ff58b"}, - {file = "pillow_heif-0.20.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a35e9e17d112573e9568d07c0e2c5cb81218a8f4c0da84a428618c7a746c4d98"}, - {file = "pillow_heif-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:618d63338afb9f49f1fb7b9a421aff6ad71ceb8092855e5988c05ab10dc21152"}, - {file = "pillow_heif-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6174d31580081d53f4eadc2428c699a5e47d111e64f136945951d12a9a277936"}, - {file = "pillow_heif-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7d106a1c87587838e9099bbfef9ddc7eef0dd3e77e9b1b8a1292a5f9dc4ad5a2"}, - {file = "pillow_heif-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ba9e11f56a5e1fd1d559a1fd60d498f343922affc0e118fb3d4e808902fee1a9"}, - {file = "pillow_heif-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:daf209dd79ad21b21f7b2bbd575f331702d2f1dd0b529c12cdbee00d62c24254"}, - {file = "pillow_heif-0.20.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:0919f7738b886ed88367b9d0247132b1cbe5d40411bac5d7536d1876980af23e"}, - {file = "pillow_heif-0.20.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:146e55436b4feafcd086bd40211d5c3159b4d488b7f4918921560c9718c62dc9"}, - {file = "pillow_heif-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70564e6e301498b484e467d96d25065c8102b8bba6227959dcff2df68d888d82"}, - {file = "pillow_heif-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d14de6325eff7840d223c27fc974af28de0bb098b7678e05efe7e5cbf345e6b"}, - {file = "pillow_heif-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ff0d429d01ac1d4b54358bc3e10ac8aea7b04913e118800641394261d4430a3"}, - {file = "pillow_heif-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ccb16e488fc700029da111547039ac21e7cab9cae47f127ad2866824569a7a4c"}, - {file = "pillow_heif-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:ce6fb39f5d62d8a72ec2718ee110c49db529d9a1171c6ef243d7d66cfa17edc2"}, - {file = "pillow_heif-0.20.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:aadf4151095753b823b2ab061a51bfd4f5e56e69d6a1e125d12083eab639fd16"}, - {file = "pillow_heif-0.20.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4f3fac5a22946ec8df9c45a9f2d50a99407d798b2e7dce24bd2ef53b039f7f02"}, - {file = "pillow_heif-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6244a4934b21978c33651a77bdf446a9e9ae2450c332426bd2901a2523737938"}, - {file = "pillow_heif-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47fbfbd5b87c3ee2e165de8f43260c5cea45bb282f291ef09ae8a21fdd284467"}, - {file = "pillow_heif-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a3e9f2a87ba24468d1717c1403ceed7b6bc6c7f82023a8b888169ae494ee33d3"}, - {file = "pillow_heif-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cc5d116713657b12becd8a2241a5c70ec28a34053fcbd58164ca08b26b23970a"}, - {file = "pillow_heif-0.20.0-cp313-cp313-win_amd64.whl", hash = "sha256:b4e9162f1265ed808af872abe894398ba2b5f2297221b03031f48870638cf491"}, - {file = "pillow_heif-0.20.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5647cda2566da6786f0c090fd61c268b6d530d3a2c88361ed630f5ed2bd52766"}, - {file = "pillow_heif-0.20.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:9ae1a75deb8ffca01ae389593af6112a721415ff8a6ccc2676bb1da71186f13b"}, - {file = "pillow_heif-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:309d37303378ceb93d8408e26b67917a2091bc1e136fe0afb7c72610954de635"}, - {file = "pillow_heif-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0ccaade96a8a7d8614374b6d5c1b259e62040e33180fadfef336089b4919ed5"}, - {file = "pillow_heif-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1dffa961f316a9cb5a495087c17e41f2fdc83a8cbdf6d845716cbf2c9eb244bf"}, - {file = "pillow_heif-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7da99aa51bc80c24bc70fffcaa8e17c4944c4d4babdca0c38c82d5a69f7b8fa2"}, - {file = "pillow_heif-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f88de96b1ade76d408b4d490cd2f0de31c4790e4cf573e90503d9715082811c"}, - {file = "pillow_heif-0.20.0-pp310-pypy310_pp73-macosx_12_0_x86_64.whl", hash = "sha256:0a1a4ecaf150b569ad7d5fdeafde713e18d70e1a0d15395cdf96069818eae913"}, - {file = "pillow_heif-0.20.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl", hash = "sha256:a8938faf7a48289601a5413078b2f21551228e1d1b203c41aaf7638ce156e073"}, - {file = "pillow_heif-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9430a33f69965d067be7e5c15dc70f1e43d5e3c8b5e9dc16c8c8d52179ce1cc"}, - {file = "pillow_heif-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da749d087ae3a7538af73d7a676cf332f81d1e6da9a6dea083aa382290d2d172"}, - {file = "pillow_heif-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:039f0c82ab3c0b364947979583d53ec9aad42d22159b9497e3c20ddde92c99bd"}, - {file = "pillow_heif-0.20.0-pp39-pypy39_pp73-macosx_12_0_x86_64.whl", hash = "sha256:9d42d164f378cf3ba1ddd00b2379360604a8461cee54eeebd67aac341f27ccac"}, - {file = "pillow_heif-0.20.0-pp39-pypy39_pp73-macosx_14_0_arm64.whl", hash = "sha256:740ef7652c7b278f24ead94e4098f0d1baf679a1e7373135e2820ce1c34a1bc5"}, - {file = "pillow_heif-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adc56caf280e39f0540d40df925cde2cd960d2ee2492f856224e2e399f4a7590"}, - {file = "pillow_heif-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:623c0b777b15773605eeed811b23658923b4e4d822172fb62d4cbe983e5a8722"}, - {file = "pillow_heif-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2f9515e21aa2f112252238175bbe3a1daad7a0c1020fc4ed52eae7805651431c"}, - {file = "pillow_heif-0.20.0.tar.gz", hash = "sha256:cac19c4434ab776f833160d61f3cbeddb347bd8ed2f82205b243eba5c572fa33"}, + {file = "pillow_heif-0.21.0-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:f54609401164b0cb58000bd2516a88516b5e3e9b2f9c52ad9500575f1851da5e"}, + {file = "pillow_heif-0.21.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d0a68246340d4fad4f10721a1a50b87a7011f1bd18d0a7b7d231e196776d0260"}, + {file = "pillow_heif-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:208b066bc7349b1ea1447199668edb6e2f74f36df54c86457ecb0131db8294df"}, + {file = "pillow_heif-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cea6f1519a9c486baf3bdf63487fa3f699402724895d64841bb4636258a87c90"}, + {file = "pillow_heif-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7f9e939cd8e343237800fe998e26558a82cb25496b74d7674f29e75dc87eb636"}, + {file = "pillow_heif-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8b30fbbb672a3413413bcfc726f9994e495c647c6b96ab9f832dccb61b67fb2f"}, + {file = "pillow_heif-0.21.0-cp310-cp310-win_amd64.whl", hash = "sha256:9807c955ea7ed2caa5d105aea7d870d8c0958079ed2aba39a6ace7ef82aad402"}, + {file = "pillow_heif-0.21.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:0c3ffa486f56f52fe790d3b1bd522d93d2f59e22ce86045641cd596adc3c5273"}, + {file = "pillow_heif-0.21.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c46be20058d72a5a158ffc65e6158279a4bcb337707a29b312c5293846bd5b8a"}, + {file = "pillow_heif-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06663c825a3d71779e51df02080467761b74d515e59fce9d780220cd75de7dd0"}, + {file = "pillow_heif-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23efab69a03a9a3a9ff07043d8c8bf0d15ffd661ecc5c7bff59b386eb25f0466"}, + {file = "pillow_heif-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e5eebb73268b806d3c801271126382da4f556b756990f87590c843c5a8ec14e2"}, + {file = "pillow_heif-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3456b4cdb4da485f27c53a91c81f0488b44dc99c0be6870f6a1dc5ac85709894"}, + {file = "pillow_heif-0.21.0-cp311-cp311-win_amd64.whl", hash = "sha256:d36441100756122b9d401502e39b60d0df9d876a929f5db858a4b7d05cc02e88"}, + {file = "pillow_heif-0.21.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0aaea6ea45257cf74e76666b80b6109f8f56217009534726fa7f6a5694ebd563"}, + {file = "pillow_heif-0.21.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f28c2c934f547823de3e204e48866c571d81ebb6b3e8646c32fe2104c570c7b2"}, + {file = "pillow_heif-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e10ab63559346fc294b9612502221ddd6bfac8cd74091ace7328fefc1163a167"}, + {file = "pillow_heif-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2a015cfe4afec75551190d93c99dda13410aec89dc468794885b90f870f657"}, + {file = "pillow_heif-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:41693f5d87ed2b5fd01df4a6215045aff14d148a750aa0708c77e71139698154"}, + {file = "pillow_heif-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8b27031c561ee3485a119c769fc2ef41d81fae1de530857beef935683e09615e"}, + {file = "pillow_heif-0.21.0-cp312-cp312-win_amd64.whl", hash = "sha256:60196c08e9c256e81054c5da468eb5a0266c931b8564c96283a43e5fd2d7ce0e"}, + {file = "pillow_heif-0.21.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:9e67aae3c22a90bc7dfd42c9f0033c53a7d358e0f0d5d29aa42f2f193162fb01"}, + {file = "pillow_heif-0.21.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ee2d68cbc0df8ba6fd9103ac6b550ebafcaa3a179416737a96becf6e5f079586"}, + {file = "pillow_heif-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e5c0df7b8c84e4a8c249ba45ceca2453f205028d8a6525612ec6dd0553d925d"}, + {file = "pillow_heif-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaedb7f16f3f18fbb315648ba576d0d7bb26b18b50c16281665123c38f73101e"}, + {file = "pillow_heif-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6724d6a2561f36b06e14e1cd396c004d32717e81528cb03565491ac8679ed760"}, + {file = "pillow_heif-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf2e2b0abad455a0896118856e82a8d5358dfe5480bedd09ddd6a04b23773899"}, + {file = "pillow_heif-0.21.0-cp313-cp313-win_amd64.whl", hash = "sha256:1b6ba6c3c4de739a1abf4f7fe0cdd04acd9e0c7fc661985b9a5288d94893a4b1"}, + {file = "pillow_heif-0.21.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:2448e180150b1ecb6576cc5030a6d14a179a7fa430b2b54d976f3beb3c5628ae"}, + {file = "pillow_heif-0.21.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:fa9a91d6e390e78fe5670ff6083f26d13c6f1cabfaf0f61d0b272f50b5651c81"}, + {file = "pillow_heif-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc919aa10fe97cb2134043d6e2d0d7fdbe17d7a2a833b202437e53be39fa7eae"}, + {file = "pillow_heif-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d2fec1715ec77c2622e1eb52a6b30b58cea437b66dc45cfd28515dcb70bcc99"}, + {file = "pillow_heif-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:55cba67787dfabb20e3fe0f54e4e768ca42c0ac5aa74c6b293b3407c7782fc87"}, + {file = "pillow_heif-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04e824c087934bfd09605a992788db3c461f045a903dbc9f14b20eba0df0c6ac"}, + {file = "pillow_heif-0.21.0-cp39-cp39-win_amd64.whl", hash = "sha256:c2d2ec026094c919ce010921586192968abe9dfd2528b38bce905c74cac9b9c6"}, + {file = "pillow_heif-0.21.0-pp310-pypy310_pp73-macosx_13_0_x86_64.whl", hash = "sha256:9305aa837ce77d98a8b5e7bc8f86eeaefb52237686d84d60de11d55bad541d7f"}, + {file = "pillow_heif-0.21.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl", hash = "sha256:fc9bfc50f55267d13b0abf63bd7d141b92a39e09812dadee1a88b5863d9b8808"}, + {file = "pillow_heif-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03273b94a7548ba615f6bfc1031137f1a025b657226de6c3f09f84945295f565"}, + {file = "pillow_heif-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6576c9c7713e33150395cdc6e9cf59efd8f42c5783cf0764092ba50a048ee2c6"}, + {file = "pillow_heif-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2813c34cdd3f07e406b6a2cb216019409eb62270e6799088ddf3d4cb08a0d503"}, + {file = "pillow_heif-0.21.0-pp39-pypy39_pp73-macosx_13_0_x86_64.whl", hash = "sha256:b06125d594ca71c9af3bf69118c661b8f82a3a7ce2d2ea5302328d91ebef36cb"}, + {file = "pillow_heif-0.21.0-pp39-pypy39_pp73-macosx_14_0_arm64.whl", hash = "sha256:22a73ed7ca5c2c8ef1b4872827dc7d8a6875938e9e791fff2db92fb4ca60f560"}, + {file = "pillow_heif-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121451d016c450bfb4d926fe08274e165553679917eb8c85d41fcadfda5f3b2e"}, + {file = "pillow_heif-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5680a00519e5f3c7c1c51dfd41e7f1c632793dfde57a9620339ba4cc70cf9196"}, + {file = "pillow_heif-0.21.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a39d1043ec74afdeef00086c8d24b3cc30095927817182ae5bc960ddb3422d9c"}, + {file = "pillow_heif-0.21.0.tar.gz", hash = "sha256:07aee1bff05e5d61feb989eaa745ae21b367011fd66ee48f7732931f8a12b49b"}, ] [package.dependencies] @@ -1901,13 +1897,13 @@ files = [ [[package]] name = "s3transfer" -version = "0.10.3" +version = "0.10.4" description = "An Amazon S3 Transfer Manager" optional = false python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, - {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, + {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, + {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, ] [package.dependencies] @@ -1918,13 +1914,13 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -1940,13 +1936,13 @@ files = [ [[package]] name = "sqlparse" -version = "0.5.2" +version = "0.5.3" description = "A non-validating SQL parser." optional = false python-versions = ">=3.8" files = [ - {file = "sqlparse-0.5.2-py3-none-any.whl", hash = "sha256:e99bc85c78160918c3e1d9230834ab8d80fc06c59d03f8db2618f65f65dda55e"}, - {file = "sqlparse-0.5.2.tar.gz", hash = "sha256:9e37b35e16d1cc652a2545f0997c1deb23ea28fa1f3eefe609eee3063c3b105f"}, + {file = "sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca"}, + {file = "sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272"}, ] [package.extras] @@ -2002,31 +1998,61 @@ docs = ["mkdocs (>=1.1,<1.2)", "mkdocs-material (>=6.2,<6.3)"] [[package]] name = "tomli" -version = "2.1.0" +version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ - {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, - {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] name = "tqdm" -version = "4.67.0" +version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.67.0-py3-none-any.whl", hash = "sha256:0cd8af9d56911acab92182e88d763100d4788bdf421d251616040cc4d44863be"}, - {file = "tqdm-4.67.0.tar.gz", hash = "sha256:fe5a6f95e6fe0b9755e9469b77b9c3cf850048224ecaa8293d7d2d31f97d869a"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] discord = ["requests"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] @@ -2099,13 +2125,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.27.1" +version = "20.28.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" files = [ - {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"}, - {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"}, + {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"}, + {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"}, ] [package.dependencies] @@ -2281,4 +2307,4 @@ wand = ["Wand (>=0.6,<1.0)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "293940d9b267c4050524be34551c3e6c84656fbcb3db3e5ea497ef1aa0af2394" +content-hash = "196516ce0410f1e765aa22ff97fbfa229eb377d0e8ff443d234fd38a01e3ac6e" diff --git a/pyproject.toml b/pyproject.toml index f6b816e0..88d8bea5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ beautifulsoup4 = "^4.12.3" django-taggit = "^5.0.1" wagtail-localize = "^1.9" icalendar = "^5.0.13" - +faker = "^24.3.0" [tool.poetry.group.dev.dependencies] black = "^24.3.0" @@ -46,9 +46,7 @@ pre-commit = "^3.5.0" djlint = "^1.34.0" django-extensions = "^3.2.3" ipython = "^8.18.1" -libsass = "^0.22.0" django-compressor = "^4.4" -faker = "^24.3.0" django-debug-toolbar = "^4.4.2" ruff = "^0.4.10" From b53ddbca5e8f0f36375148cd2ba76cb5340bffe1 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Thu, 12 Dec 2024 20:29:32 +0100 Subject: [PATCH 06/15] Ajout de blocs manquants (#245) * Add missing TextAndCTA block from the common streamfield blocks * Don't run the pending migrations check while in draft mode * Try with a separate workflow for migration checks * Add python 3.13 to tested versions * update dependencies * Update stepper * Update translations * Add imageandtext and alert to the fullwidth background field * Add content * Fix CI * Add migrations --- .github/workflows/{cd.yml => cd-docker.yml} | 0 .github/workflows/ci-check-migrations.yml | 47 + .github/workflows/{ci.yml => ci-main.yml} | 7 +- ..._body_alter_blogindexpage_body_and_more.py | 3922 ++++++++++++++++ ..._body_alter_blogindexpage_body_and_more.py | 4012 +++++++++++++++++ content_manager/blocks.py | 62 +- .../locale/fr/LC_MESSAGES/django.mo | Bin 23749 -> 23868 bytes .../locale/fr/LC_MESSAGES/django.po | 318 +- ...ogindexpage_body_alter_contentpage_body.py | 2808 ++++++++++++ ...ogindexpage_body_alter_contentpage_body.py | 2860 ++++++++++++ .../blocks/image_and_text.html | 4 +- .../blocks/image_svg_or_raster.html | 6 +- .../content_manager/blocks/stepper.html | 12 +- ...trypage_body_alter_eventsindexpage_body.py | 2808 ++++++++++++ ...trypage_body_alter_eventsindexpage_body.py | 2860 ++++++++++++ poetry.lock | 20 +- 16 files changed, 19543 insertions(+), 203 deletions(-) rename .github/workflows/{cd.yml => cd-docker.yml} (100%) create mode 100644 .github/workflows/ci-check-migrations.yml rename .github/workflows/{ci.yml => ci-main.yml} (84%) create mode 100644 blog/migrations/0040_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py create mode 100644 blog/migrations/0041_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py create mode 100644 content_manager/migrations/0051_alter_catalogindexpage_body_alter_contentpage_body.py create mode 100644 content_manager/migrations/0052_alter_catalogindexpage_body_alter_contentpage_body.py create mode 100644 events/migrations/0012_alter_evententrypage_body_alter_eventsindexpage_body.py create mode 100644 events/migrations/0013_alter_evententrypage_body_alter_eventsindexpage_body.py diff --git a/.github/workflows/cd.yml b/.github/workflows/cd-docker.yml similarity index 100% rename from .github/workflows/cd.yml rename to .github/workflows/cd-docker.yml diff --git a/.github/workflows/ci-check-migrations.yml b/.github/workflows/ci-check-migrations.yml new file mode 100644 index 00000000..f9fe9a8e --- /dev/null +++ b/.github/workflows/ci-check-migrations.yml @@ -0,0 +1,47 @@ +name: 🔮 CI - Migrations Check + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review + +jobs: + build: + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + env: + DJANGO_SETTINGS_MODULE: config.settings_test + PYTHONPATH: . + strategy: + matrix: + python-version: ["3.12"] + services: + postgres: + image: postgres:14-alpine + env: + POSTGRES_USER: dju + POSTGRES_PASSWORD: djpwd + POSTGRES_DB: djdb + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v3 + - name: 🐍 Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: 🌍 Install dependencies + run: | + python -m pip install --upgrade pip + pip install poetry + pip install ruff + poetry install --no-root + - name: 📄 Copy empty .env.test to .env + run: | + cp .env.test .env + - name: 🚧 Check pending migrations + run: | + poetry run django-admin makemigrations --check --dry-run --noinput diff --git a/.github/workflows/ci.yml b/.github/workflows/ci-main.yml similarity index 84% rename from .github/workflows/ci.yml rename to .github/workflows/ci-main.yml index 82f0a092..dd1f1261 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci-main.yml @@ -1,4 +1,4 @@ -name: 🔮 CI +name: 🔮 CI - Main checks on: [push] @@ -10,7 +10,7 @@ jobs: PYTHONPATH: . strategy: matrix: - python-version: ["3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12", "3.13"] services: postgres: image: postgres:14-alpine @@ -38,9 +38,6 @@ jobs: - name: ✨ Black & ruff run: | make quality - - name: 🚧 Check pending migrations # continue-on-error: true - run: | - poetry run django-admin makemigrations --check --dry-run --noinput - name: 🤹‍ Run the unit tests run: | make test-unit diff --git a/blog/migrations/0040_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py b/blog/migrations/0040_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py new file mode 100644 index 00000000..073d08a9 --- /dev/null +++ b/blog/migrations/0040_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py @@ -0,0 +1,3922 @@ +# Generated by Django 5.1.4 on 2024-12-12 14:05 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("blog", "0039_alter_blogentrypage_body_alter_blogindexpage_body_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="blogentrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("badges_list", 50), + ("tags_list", 56), + ("link", 57), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("stepper", 78), + ("card", 98), + ("tile", 108), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 30: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 31: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button"}, + ), + 33: ( + "wagtail.blocks.StreamBlock", + [[("button", 32)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 33)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 35: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.StructBlock", + [[("text", 28), ("cta_buttons", 34), ("cta_label", 35), ("cta_url", 36)]], + {"label": "Text and call to action"}, + ), + 38: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 39: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Transcription", "required": False}, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 38), + ("caption", 7), + ("url", 39), + ("width", 5), + ("video_ratio", 40), + ("transcription", 43), + ] + ], + {"label": "Video"}, + ), + 45: ("wagtail.blocks.StructBlock", [[("title", 41), ("content", 42)]], {"label": "Transcription"}), + 46: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 47: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 48: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 46), ("color", 47), ("hide_icon", 48)]], + {"label": "Badge"}, + ), + 50: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {"label": "Badge list"}), + 51: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 52: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("label", 51), ("is_small", 52), ("color", 53), ("icon_class", 30), ("link", 54)]], + {"label": "Tag"}, + ), + 56: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tag list"}), + 57: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 51), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 64: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 30), + ("text", 61), + ("button", 62), + ("color", 63), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 65: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 66: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("text", 65), ("color", 63), ("size", 66)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 68: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 69: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 72: ( + "wagtail.blocks.StructBlock", + [[("image", 68), ("quote", 69), ("author_name", 70), ("author_title", 71), ("color", 63)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 73: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 74: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 75: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 76: ("wagtail.blocks.StructBlock", [[("title", 51), ("detail", 75)]], {"label": "Step"}), + 77: ("wagtail.blocks.StreamBlock", [[("step", 76)]], {"label": "Steps"}), + 78: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("total", 73), ("current", 74), ("steps", 77)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 80: ( + "wagtail.blocks.StreamBlock", + [[("badge", 49)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 82: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 83: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 84: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 85: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {}), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 86), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 90: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 91: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 92: ("wagtail.blocks.StreamBlock", [[("link", 91)]], {}), + 93: ( + "wagtail.blocks.StreamBlock", + [[("links", 92), ("buttons", 33)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 98: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 79), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 89), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 99: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 100: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 101: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 104: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 108: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 99), + ("image", 100), + ("link", 81), + ("top_detail_badges_tags", 88), + ("detail_text", 101), + ("is_small", 102), + ("grey_background", 103), + ("no_background", 104), + ("no_border", 105), + ("shadow", 106), + ("is_horizontal", 107), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 6), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 81), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 68), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="blogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("badges_list", 50), + ("tags_list", 56), + ("link", 57), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("stepper", 78), + ("card", 98), + ("tile", 108), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 30: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 31: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button"}, + ), + 33: ( + "wagtail.blocks.StreamBlock", + [[("button", 32)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 33)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 35: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.StructBlock", + [[("text", 28), ("cta_buttons", 34), ("cta_label", 35), ("cta_url", 36)]], + {"label": "Text and call to action"}, + ), + 38: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 39: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Transcription", "required": False}, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 38), + ("caption", 7), + ("url", 39), + ("width", 5), + ("video_ratio", 40), + ("transcription", 43), + ] + ], + {"label": "Video"}, + ), + 45: ("wagtail.blocks.StructBlock", [[("title", 41), ("content", 42)]], {"label": "Transcription"}), + 46: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 47: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 48: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 46), ("color", 47), ("hide_icon", 48)]], + {"label": "Badge"}, + ), + 50: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {"label": "Badge list"}), + 51: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 52: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("label", 51), ("is_small", 52), ("color", 53), ("icon_class", 30), ("link", 54)]], + {"label": "Tag"}, + ), + 56: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tag list"}), + 57: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 51), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 64: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 30), + ("text", 61), + ("button", 62), + ("color", 63), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 65: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 66: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("text", 65), ("color", 63), ("size", 66)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 68: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 69: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 72: ( + "wagtail.blocks.StructBlock", + [[("image", 68), ("quote", 69), ("author_name", 70), ("author_title", 71), ("color", 63)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 73: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 74: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 75: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 76: ("wagtail.blocks.StructBlock", [[("title", 51), ("detail", 75)]], {"label": "Step"}), + 77: ("wagtail.blocks.StreamBlock", [[("step", 76)]], {"label": "Steps"}), + 78: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("total", 73), ("current", 74), ("steps", 77)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 80: ( + "wagtail.blocks.StreamBlock", + [[("badge", 49)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 82: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 83: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 84: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 85: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {}), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 86), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 90: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 91: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 92: ("wagtail.blocks.StreamBlock", [[("link", 91)]], {}), + 93: ( + "wagtail.blocks.StreamBlock", + [[("links", 92), ("buttons", 33)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 98: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 79), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 89), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 99: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 100: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 101: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 104: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 108: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 99), + ("image", 100), + ("link", 81), + ("top_detail_badges_tags", 88), + ("detail_text", 101), + ("is_small", 102), + ("grey_background", 103), + ("no_background", 104), + ("no_border", 105), + ("shadow", 106), + ("is_horizontal", 107), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 6), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 81), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 68), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="category", + name="colophon", + field=wagtail.fields.StreamField( + [("paragraph", 0), ("imageandtext", 14), ("quote", 20), ("multicolumns", 139), ("contact_card", 143)], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 3: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 4: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 5: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 8: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 9: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 10: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7), ("icon", 8), ("size", 9)]], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 11: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 13: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 1), + ("image_side", 2), + ("image_ratio", 3), + ("text", 0), + ("link", 10), + ("link_label", 11), + ("page", 12), + ("link_url", 13), + ] + ], + {"label": "Bloc image et texte"}, + ), + 15: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 17: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 18: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 19: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.StructBlock", + [[("image", 15), ("quote", 16), ("author_name", 17), ("author_title", 18), ("color", 19)]], + {"label": "Citation"}, + ), + 21: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 22: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 27: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 28: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 30: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 31: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 26), + ("image", 1), + ("alt", 27), + ("width", 28), + ("image_ratio", 29), + ("caption", 30), + ("url", 31), + ] + ], + {"label": "Image"}, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 1), + ("image_side", 2), + ("image_ratio", 3), + ("text", 0), + ("link", 10), + ("link_label", 11), + ("page", 12), + ("link_url", 13), + ] + ], + {"label": "Image and text"}, + ), + 34: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 35: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 36: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("title", 34), ("description", 35), ("level", 36), ("heading_tag", 37)]], + {"label": "Alert message"}, + ), + 39: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 41: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 42: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 43: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 4), + ("document", 5), + ("external_url", 6), + ("text", 7), + ("button_type", 40), + ("icon_class", 41), + ("icon_side", 42), + ] + ], + {"label": "Button"}, + ), + 44: ( + "wagtail.blocks.StreamBlock", + [[("button", 43)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 45: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 44)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 46: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 47: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 48: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("cta_buttons", 45), ("cta_label", 46), ("cta_url", 47)]], + {"label": "Text and call to action"}, + ), + 49: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 50: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 51: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 52: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 53: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 54: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 53)]], + {"label": "Transcription", "required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 49), + ("caption", 30), + ("url", 50), + ("width", 28), + ("video_ratio", 51), + ("transcription", 54), + ] + ], + {"label": "Video"}, + ), + 56: ("wagtail.blocks.StructBlock", [[("title", 52), ("content", 53)]], {"label": "Transcription"}), + 57: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 57), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 57), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 4), + ("document", 5), + ("external_url", 6), + ("text", 7), + ("button_type", 40), + ("icon_class", 41), + ("icon_side", 42), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 37), + ("icon_class", 41), + ("text", 61), + ("button", 62), + ("color", 19), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 64: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 65: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 66: ( + "wagtail.blocks.StructBlock", + [[("text", 64), ("color", 19), ("size", 65)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("image", 15), ("quote", 16), ("author_name", 17), ("author_title", 18), ("color", 19)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7), ("icon", 8), ("size", 9)]], + {"label": "Single link"}, + ), + 69: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 70: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 71: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 72: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StructBlock", + [[("title", 69), ("url", 70), ("height", 71), ("parameters", 72)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 74: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 75: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 76: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6)]], + {"label": "Link", "required": False}, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 78: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 79: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 80: ( + "wagtail.blocks.StructBlock", + [[("text", 77), ("color", 78), ("hide_icon", 79)]], + {"label": "Badge"}, + ), + 81: ("wagtail.blocks.StreamBlock", [[("badge", 80)]], {}), + 82: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 83: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6)]], + {"required": False}, + ), + 85: ( + "wagtail.blocks.StructBlock", + [[("label", 57), ("is_small", 82), ("color", 83), ("icon_class", 41), ("link", 84)]], + {"label": "Tag"}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("tag", 85)]], {}), + 87: ( + "wagtail.blocks.StreamBlock", + [[("badges", 81), ("tags", 86)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 88: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 93: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 95: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 57), + ("heading_tag", 37), + ("description", 74), + ("image", 75), + ("link", 76), + ("top_detail_badges_tags", 87), + ("detail_text", 88), + ("is_small", 89), + ("grey_background", 90), + ("no_background", 91), + ("no_border", 92), + ("shadow", 93), + ("is_horizontal", 94), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 96: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 97: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 98: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 99: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 100: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 101: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 102: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 96), + ("blog", 97), + ("entries_count", 98), + ("category_filter", 99), + ("tag_filter", 100), + ("author_filter", 101), + ("source_filter", 102), + ("show_filters", 103), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 105: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 106: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 96), + ("index_page", 105), + ("entries_count", 98), + ("category_filter", 99), + ("tag_filter", 100), + ("author_filter", 101), + ("source_filter", 102), + ("show_filters", 103), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 107: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 108: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Current step", "max_value": 8, "min_value": 1}, + ), + 109: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 110: ("wagtail.blocks.StructBlock", [[("title", 57), ("detail", 109)]], {"label": "Step"}), + 111: ("wagtail.blocks.StreamBlock", [[("step", 110)]], {"label": "Steps"}), + 112: ( + "wagtail.blocks.StructBlock", + [[("title", 57), ("total", 107), ("current", 108), ("steps", 111)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 113: ( + "wagtail.blocks.StreamBlock", + [[("badge", 80)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 114: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 115: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 116: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 117: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 118: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 119: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 120: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7)]], + {"label": "Link"}, + ), + 121: ("wagtail.blocks.StreamBlock", [[("link", 120)]], {}), + 122: ( + "wagtail.blocks.StreamBlock", + [[("links", 121), ("buttons", 44)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 123: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card with grey background", "required": False}, + ), + 124: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 125: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 126: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 57), + ("heading_tag", 37), + ("description", 61), + ("image", 15), + ("image_ratio", 29), + ("image_badge", 113), + ("link", 76), + ("url", 114), + ("document", 115), + ("top_detail_text", 116), + ("top_detail_icon", 117), + ("top_detail_badges_tags", 87), + ("bottom_detail_text", 118), + ("bottom_detail_icon", 119), + ("call_to_action", 122), + ("grey_background", 123), + ("no_background", 124), + ("no_border", 125), + ("shadow", 126), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 129: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 131: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 133: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 134: ("wagtail.blocks.StreamBlock", [[("tag", 85)]], {"label": "Tags", "required": False}), + 135: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 129), + ("link", 76), + ("heading_tag", 26), + ("name", 130), + ("role", 131), + ("organization", 132), + ("contact_info", 133), + ("image", 15), + ("tags", 134), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 136: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 32), + ("imageandtext", 33), + ("alert", 38), + ("text_cta", 48), + ("video", 55), + ("transcription", 56), + ("accordions", 60), + ("callout", 63), + ("highlight", 66), + ("quote", 67), + ("link", 68), + ("iframe", 73), + ("tile", 95), + ("blog_recent_entries", 104), + ("events_recent_entries", 106), + ("stepper", 112), + ("card", 127), + ("contact_card", 135), + ] + ], + {"label": "Column content"}, + ), + 137: ( + "wagtail.blocks.StructBlock", + [[("width", 128), ("content", 136)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 138: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 32), + ("imageandtext", 33), + ("alert", 38), + ("text_cta", 48), + ("video", 55), + ("transcription", 56), + ("accordions", 60), + ("callout", 63), + ("highlight", 66), + ("quote", 67), + ("link", 68), + ("iframe", 73), + ("tile", 95), + ("blog_recent_entries", 104), + ("events_recent_entries", 106), + ("stepper", 112), + ("card", 127), + ("column", 137), + ] + ], + {"label": "Columns"}, + ), + 139: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 21), + ("bg_color_class", 22), + ("bg_color", 23), + ("title", 24), + ("heading_tag", 25), + ("columns", 138), + ] + ], + {"label": "Multi-colonnes"}, + ), + 140: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255}), + 141: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255}), + 142: ("wagtail.blocks.CharBlock", (), {"label": "Organization", "max_length": 255}), + 143: ( + "wagtail.blocks.StructBlock", + [[("name", 140), ("role", 141), ("organization", 142), ("contact_info", 133), ("image", 1)]], + {"label": "Contact card"}, + ), + }, + help_text="Text displayed at the end of every page in the category", + ), + ), + ] diff --git a/blog/migrations/0041_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py b/blog/migrations/0041_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py new file mode 100644 index 00000000..97f31287 --- /dev/null +++ b/blog/migrations/0041_alter_blogentrypage_body_alter_blogindexpage_body_and_more.py @@ -0,0 +1,4012 @@ +# Generated by Django 5.1.4 on 2024-12-12 17:08 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("blog", "0040_alter_blogentrypage_body_alter_blogindexpage_body_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="blogentrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 152), + ("item_grid", 155), + ("fullwidthbackground", 157), + ("fullwidthbackgroundwithsidemenu", 164), + ("subpageslist", 165), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Column content"}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("width", 148), ("content", 149)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 151: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("column", 150), + ] + ], + {"label": "Columns"}, + ), + 152: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 151), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 153: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("column_width", 153), ("items", 154)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 156: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Content"}, + ), + 157: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 156)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Main content"}, + ), + 159: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 160: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 161: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 162: ("wagtail.blocks.StructBlock", [[("page", 161)]], {"label": "Page tree"}), + 163: ( + "wagtail.blocks.StreamBlock", + [[("html", 160), ("pagetree", 162)]], + {"label": "Side menu content"}, + ), + 164: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 158), + ("sidemenu_title", 159), + ("sidemenu_content", 163), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 165: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="blogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 152), + ("item_grid", 155), + ("fullwidthbackground", 157), + ("fullwidthbackgroundwithsidemenu", 164), + ("subpageslist", 165), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Column content"}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("width", 148), ("content", 149)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 151: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("column", 150), + ] + ], + {"label": "Columns"}, + ), + 152: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 151), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 153: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("column_width", 153), ("items", 154)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 156: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Content"}, + ), + 157: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 156)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Main content"}, + ), + 159: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 160: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 161: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 162: ("wagtail.blocks.StructBlock", [[("page", 161)]], {"label": "Page tree"}), + 163: ( + "wagtail.blocks.StreamBlock", + [[("html", 160), ("pagetree", 162)]], + {"label": "Side menu content"}, + ), + 164: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 158), + ("sidemenu_title", 159), + ("sidemenu_content", 163), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 165: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="category", + name="colophon", + field=wagtail.fields.StreamField( + [("paragraph", 0), ("imageandtext", 14), ("quote", 20), ("multicolumns", 147), ("contact_card", 151)], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 3: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 4: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 5: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 8: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 9: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 10: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7), ("icon", 8), ("size", 9)]], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 11: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 13: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 1), + ("image_side", 2), + ("image_ratio", 3), + ("text", 0), + ("link", 10), + ("link_label", 11), + ("page", 12), + ("link_url", 13), + ] + ], + {"label": "Bloc image et texte"}, + ), + 15: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 17: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 18: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 19: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.StructBlock", + [[("image", 15), ("quote", 16), ("author_name", 17), ("author_title", 18), ("color", 19)]], + {"label": "Citation"}, + ), + 21: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 22: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 27: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 28: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 31: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 32: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 26), + ("image", 27), + ("alt", 28), + ("width", 29), + ("image_ratio", 30), + ("caption", 31), + ("url", 32), + ] + ], + {"label": "Image"}, + ), + 34: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 1), + ("image_side", 2), + ("image_ratio", 3), + ("text", 0), + ("link", 10), + ("link_label", 11), + ("page", 12), + ("link_url", 13), + ] + ], + {"label": "Image and text"}, + ), + 35: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 36: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 38: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 39: ( + "wagtail.blocks.StructBlock", + [[("title", 35), ("description", 36), ("level", 37), ("heading_tag", 38)]], + {"label": "Alert message"}, + ), + 40: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 42: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 43: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 4), + ("document", 5), + ("external_url", 6), + ("text", 7), + ("button_type", 41), + ("icon_class", 42), + ("icon_side", 43), + ] + ], + {"label": "Button"}, + ), + 45: ( + "wagtail.blocks.StreamBlock", + [[("button", 44)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 46: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 45)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 47: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 48: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 40), ("cta_buttons", 46), ("cta_label", 47), ("cta_url", 48)]], + {"label": "Text and call to action"}, + ), + 50: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 51: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 52: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 53: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 54: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 55: ( + "wagtail.blocks.StructBlock", + [[("title", 53), ("content", 54)]], + {"label": "Transcription", "required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 50), + ("caption", 31), + ("url", 51), + ("width", 29), + ("video_ratio", 52), + ("transcription", 55), + ] + ], + {"label": "Video"}, + ), + 57: ("wagtail.blocks.StructBlock", [[("title", 53), ("content", 54)]], {"label": "Transcription"}), + 58: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 59: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 61: ( + "wagtail.blocks.StructBlock", + [[("text", 58), ("color", 59), ("hide_icon", 60)]], + {"label": "Badge"}, + ), + 62: ("wagtail.blocks.StreamBlock", [[("badge", 61)]], {"label": "Badge list"}), + 63: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 64: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 65: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 66: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6)]], + {"required": False}, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("label", 63), ("is_small", 64), ("color", 65), ("icon_class", 42), ("link", 66)]], + {"label": "Tag"}, + ), + 68: ("wagtail.blocks.StreamBlock", [[("tag", 67)]], {"label": "Tag list"}), + 69: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 70: ( + "wagtail.blocks.StructBlock", + [[("title", 63), ("content", 69)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 71: ( + "wagtail.blocks.StreamBlock", + [[("title", 63), ("accordion", 70)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 72: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 4), + ("document", 5), + ("external_url", 6), + ("text", 7), + ("button_type", 41), + ("icon_class", 42), + ("icon_side", 43), + ] + ], + {"label": "Button", "required": False}, + ), + 74: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 38), + ("icon_class", 42), + ("text", 72), + ("button", 73), + ("color", 19), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 75: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 76: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 77: ( + "wagtail.blocks.StructBlock", + [[("text", 75), ("color", 19), ("size", 76)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 78: ( + "wagtail.blocks.StructBlock", + [[("image", 15), ("quote", 16), ("author_name", 17), ("author_title", 18), ("color", 19)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 79: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7), ("icon", 8), ("size", 9)]], + {"label": "Single link"}, + ), + 80: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 81: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6)]], + {"label": "Link", "required": False}, + ), + 83: ("wagtail.blocks.StreamBlock", [[("badge", 61)]], {}), + 84: ("wagtail.blocks.StreamBlock", [[("tag", 67)]], {}), + 85: ( + "wagtail.blocks.StreamBlock", + [[("badges", 83), ("tags", 84)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 86: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 87: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 88: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 63), + ("heading_tag", 38), + ("description", 80), + ("image", 81), + ("link", 82), + ("top_detail_badges_tags", 85), + ("detail_text", 86), + ("is_small", 87), + ("grey_background", 88), + ("no_background", 89), + ("no_border", 90), + ("shadow", 91), + ("is_horizontal", 92), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 94: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 95: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 96: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 97: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 98: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 99: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 100: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 101: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 102: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 94), + ("blog", 95), + ("entries_count", 96), + ("category_filter", 97), + ("tag_filter", 98), + ("author_filter", 99), + ("source_filter", 100), + ("show_filters", 101), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 103: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 24), + ("heading_tag", 94), + ("index_page", 103), + ("entries_count", 96), + ("category_filter", 97), + ("tag_filter", 98), + ("author_filter", 99), + ("source_filter", 100), + ("show_filters", 101), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 105: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 106: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Current step", "max_value": 8, "min_value": 1}, + ), + 107: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 108: ("wagtail.blocks.StructBlock", [[("title", 63), ("detail", 107)]], {"label": "Step"}), + 109: ("wagtail.blocks.StreamBlock", [[("step", 108)]], {"label": "Steps"}), + 110: ( + "wagtail.blocks.StructBlock", + [[("title", 63), ("total", 105), ("current", 106), ("steps", 109)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 111: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 112: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 113: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 114: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 115: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.StructBlock", + [[("title", 112), ("url", 113), ("height", 114), ("parameters", 115)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 117: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 118: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 119: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 120: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 118), ("bottom_margin", 119)]], + {"group": "Page structure", "label": "Separator"}, + ), + 121: ( + "wagtail.blocks.StreamBlock", + [[("badge", 61)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 122: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 123: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 124: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 125: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 128: ( + "wagtail.blocks.StructBlock", + [[("page", 4), ("document", 5), ("external_url", 6), ("text", 7)]], + {"label": "Link"}, + ), + 129: ("wagtail.blocks.StreamBlock", [[("link", 128)]], {}), + 130: ( + "wagtail.blocks.StreamBlock", + [[("links", 129), ("buttons", 45)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 131: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Card with grey background", "required": False}, + ), + 132: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 133: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 134: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 135: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 63), + ("heading_tag", 38), + ("description", 72), + ("image", 15), + ("image_ratio", 30), + ("image_badge", 121), + ("link", 82), + ("url", 122), + ("document", 123), + ("top_detail_text", 124), + ("top_detail_icon", 125), + ("top_detail_badges_tags", 85), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 127), + ("call_to_action", 130), + ("grey_background", 131), + ("no_background", 132), + ("no_border", 133), + ("shadow", 134), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 136: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 137: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 138: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 139: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 140: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 141: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 142: ("wagtail.blocks.StreamBlock", [[("tag", 67)]], {"label": "Tags", "required": False}), + 143: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 137), + ("link", 82), + ("heading_tag", 26), + ("name", 138), + ("role", 139), + ("organization", 140), + ("contact_info", 141), + ("image", 15), + ("tags", 142), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 144: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 33), + ("imageandtext", 34), + ("alert", 39), + ("text_cta", 49), + ("video", 56), + ("transcription", 57), + ("badges_list", 62), + ("tags_list", 68), + ("accordions", 71), + ("callout", 74), + ("highlight", 77), + ("quote", 78), + ("link", 79), + ("tile", 93), + ("blog_recent_entries", 102), + ("events_recent_entries", 104), + ("stepper", 110), + ("markdown", 111), + ("iframe", 116), + ("html", 117), + ("separator", 120), + ("card", 135), + ("contact_card", 143), + ] + ], + {"label": "Column content"}, + ), + 145: ( + "wagtail.blocks.StructBlock", + [[("width", 136), ("content", 144)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 146: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 33), + ("imageandtext", 34), + ("alert", 39), + ("text_cta", 49), + ("video", 56), + ("transcription", 57), + ("badges_list", 62), + ("tags_list", 68), + ("accordions", 71), + ("callout", 74), + ("highlight", 77), + ("quote", 78), + ("link", 79), + ("tile", 93), + ("blog_recent_entries", 102), + ("events_recent_entries", 104), + ("stepper", 110), + ("markdown", 111), + ("iframe", 116), + ("html", 117), + ("separator", 120), + ("card", 135), + ("column", 145), + ] + ], + {"label": "Columns"}, + ), + 147: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 21), + ("bg_color_class", 22), + ("bg_color", 23), + ("title", 24), + ("heading_tag", 25), + ("columns", 146), + ] + ], + {"label": "Multi-colonnes"}, + ), + 148: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255}), + 149: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255}), + 150: ("wagtail.blocks.CharBlock", (), {"label": "Organization", "max_length": 255}), + 151: ( + "wagtail.blocks.StructBlock", + [[("name", 148), ("role", 149), ("organization", 150), ("contact_info", 141), ("image", 27)]], + {"label": "Contact card"}, + ), + }, + help_text="Text displayed at the end of every page in the category", + ), + ), + ] diff --git a/content_manager/blocks.py b/content_manager/blocks.py index b37a94e3..9c5f7159 100644 --- a/content_manager/blocks.py +++ b/content_manager/blocks.py @@ -5,7 +5,7 @@ from wagtail import blocks from wagtail.blocks import BooleanBlock, StructValue from wagtail.documents.blocks import DocumentChooserBlock -from wagtail.images.blocks import ImageChooserBlock +from wagtail.images.blocks import ImageBlock, ImageChooserBlock from wagtail.snippets.blocks import SnippetChooserBlock from wagtailmarkdown.blocks import MarkdownBlock @@ -510,7 +510,7 @@ class Meta: class ImageAndTextBlock(blocks.StructBlock): - image = ImageChooserBlock(label=_("Image")) + image = ImageBlock(label=_("Image")) image_side = blocks.ChoiceBlock( label=_("Side where the image is displayed"), choices=[ @@ -564,7 +564,7 @@ class Meta: template = "content_manager/blocks/image_and_text.html" -class ImageBlock(blocks.StructBlock): +class CenteredImageBlock(blocks.StructBlock): title = blocks.CharBlock(label=_("Title"), required=False) heading_tag = blocks.ChoiceBlock( label=_("Heading level"), @@ -621,7 +621,7 @@ class SeparatorBlock(blocks.StructBlock): class StepBlock(blocks.StructBlock): title = blocks.CharBlock(label=_("Title")) - detail = blocks.TextBlock(label=_("Detail")) + detail = blocks.TextBlock(label=_("Detail"), required=False) class StepsListBlock(blocks.StreamBlock): @@ -939,15 +939,19 @@ class Meta: ## Page structure blocks class CommonStreamBlock(blocks.StreamBlock): text = blocks.RichTextBlock(label=_("Rich text")) - image = ImageBlock(label=_("Image")) + image = CenteredImageBlock(label=_("Image")) + imageandtext = ImageAndTextBlock(label=_("Image and text")) + alert = AlertBlock(label=_("Alert message")) + text_cta = TextAndCTA(label=_("Text and call to action")) video = VideoBlock(label=_("Video")) transcription = TranscriptionBlock(label=_("Transcription")) + badges_list = BadgesListBlock(label=_("Badge list")) + tags_list = TagListBlock(label=_("Tag list")) accordions = AccordionsBlock(label=_("Accordions"), group=_("DSFR components")) callout = CalloutBlock(label=_("Callout"), group=_("DSFR components")) highlight = HighlightBlock(label=_("Highlight"), group=_("DSFR components")) quote = QuoteBlock(label=_("Quote"), group=_("DSFR components")) stepper = StepperBlock(label=_("Stepper"), group=_("DSFR components")) - text_cta = TextAndCTA(label=_("Text and call to action")) link = SingleLinkBlock(label=_("Single link")) iframe = IframeBlock(label=_("Iframe"), group=_("DSFR components")) tile = TileBlock(label=_("Tile"), group=_("DSFR components")) @@ -955,6 +959,15 @@ class CommonStreamBlock(blocks.StreamBlock): events_recent_entries = EventsRecentEntriesBlock( label=_("Event calendar recent entries"), group=_("Website structure") ) + stepper = StepperBlock(label=_("Stepper"), group=_("DSFR components")) + markdown = MarkdownBlock(label=_("Markdown"), group=_("Expert syntax")) + iframe = IframeBlock(label=_("Iframe"), group=_("Expert syntax")) + html = blocks.RawHTMLBlock( + readonly=True, + help_text=_("Warning: Use HTML block with caution. Malicious code can compromise the security of the site."), + group=_("Expert syntax"), + ) + separator = SeparatorBlock(label=_("Separator"), group=_("Page structure")) class Meta: icon = "dots-horizontal" @@ -1111,24 +1124,35 @@ class Meta: STREAMFIELD_COMMON_BLOCKS = [ ("paragraph", blocks.RichTextBlock(label=_("Rich text"))), - ("image", ImageBlock()), + ("image", CenteredImageBlock()), ("imageandtext", ImageAndTextBlock(label=_("Image and text"))), ("alert", AlertBlock(label=_("Alert message"))), - ("accordions", AccordionsBlock(label=_("Accordions"), group=_("DSFR components"))), - ("callout", CalloutBlock(label=_("Callout"), group=_("DSFR components"))), - ("highlight", HighlightBlock(label=_("Highlight"), group=_("DSFR components"))), - ("quote", QuoteBlock(label=_("Quote"), group=_("DSFR components"))), + ("text_cta", TextAndCTA(label=_("Text and call to action"))), ("video", VideoBlock(label=_("Video"))), ("transcription", TranscriptionBlock(label=_("Transcription"))), ("badges_list", BadgesListBlock(label=_("Badge list"))), ("tags_list", TagListBlock(label=_("Tag list"))), ("link", SingleLinkBlock(label=_("Single link"))), + ("accordions", AccordionsBlock(label=_("Accordions"), group=_("DSFR components"))), + ("callout", CalloutBlock(label=_("Callout"), group=_("DSFR components"))), + ("highlight", HighlightBlock(label=_("Highlight"), group=_("DSFR components"))), + ("quote", QuoteBlock(label=_("Quote"), group=_("DSFR components"))), ("stepper", StepperBlock(label=_("Stepper"), group=_("DSFR components"))), ("card", HorizontalCardBlock(label=_("Horizontal card"), group=_("DSFR components"))), ("tile", TileBlock(label=_("Tile"), group=_("DSFR components"))), ("tabs", TabsBlock(label=_("Tabs"), group=_("DSFR components"))), ("markdown", MarkdownBlock(label=_("Markdown"), group=_("Expert syntax"))), ("iframe", IframeBlock(label=_("Iframe"), group=_("Expert syntax"))), + ( + "html", + blocks.RawHTMLBlock( + readonly=True, + help_text=_( + "Warning: Use HTML block with caution. Malicious code can compromise the security of the site." + ), + group=_("Expert syntax"), + ), + ), ("separator", SeparatorBlock(label=_("Separator"), group=_("Page structure"))), ("multicolumns", MultiColumnsWithTitleBlock(label=_("Multiple columns"), group=_("Page structure"))), ("item_grid", ItemGridBlock(label=_("Item grid"), group=_("Page structure"))), @@ -1157,19 +1181,3 @@ class Meta: EventsRecentEntriesBlock(label=_("Event calendar recent entries"), group=_("Website structure")), ), ] - -# See warning on https://docs.wagtail.org/en/latest/reference/streamfield/blocks.html#wagtail.blocks.RawHTMLBlock -# There is currently no way to restrict a type of block depending on user permissions, -# pending issue https://github.com/wagtail/wagtail/issues/6323 -STREAMFIELD_COMMON_BLOCKS += [ - ( - "html", - blocks.RawHTMLBlock( - readonly=True, - help_text=_( - "Warning: Use HTML block with caution. Malicious code can compromise the security of the site." - ), - group=_("Expert syntax"), - ), - ) -] diff --git a/content_manager/locale/fr/LC_MESSAGES/django.mo b/content_manager/locale/fr/LC_MESSAGES/django.mo index 9b4d133ea469ac06de37019b83dfe372db27c702..2ec859b669b02e9d776be78e78ef260a79ae0f51 100644 GIT binary patch delta 5667 zcmZYCd32Q38OQNEl8}wbo=idr83G}J3B-Yfu*xPRtdXrs*vbiDKqNrI);10Wq}T&3 zrUf30GG+_ynMvw3=5D$%eefPm#O}?F;S#eRqj3wi!JU|m zb(n*xiN{1N zz}7Y%h2g|gP}k3}&POG@1T}$Gjd94BH)w>>u^Bb#-`n^A<`REs`@gb2L?s;G(tSWn zY)ahT#zBlA?uE%X0R32w8vn=EUt%iHH(O}vhW)4+ePrW0OeAhVs&B5N4vuuAY>UlrMkOp33PwcSnvlpDO@fp;>4K}`l8t{gVHN7}u zFDk)IROyRQmFbI$OR*S7TUYu`sIlW19RoP=5R0&1E4O3|k?mmCqZ0TNszQfRGdqh) zq#juna|N~8o?<6zi8`Yy(HC{!aO)&g$}#2s02@-GCzkZ z`89j~j*UHJq5cHagIl2zX^ToUh^bhDdTwYUjZzwws0??bcIjSJiBF+2{S;NgOQ^NH zX?<+_qbZLboPqfmz%=e2EoJ3^+=ZJ0q=!-I;fU3k^ENB0jGq$5$o-u4_(;HRlNvO4Y8TG&) zVI(d?ZL(F^6c3}$A4k3KXHiRZ1$F-&)OcZ(L2)8RViv~pe3M5bfZb3tn2Jqs1}fuO zs5M)JdK*?FW11bPuhM#qz-y?b`WBVIV|zZKy<76us00dZ+!I3@pp=G6RgT)-Gf=P7 z5@cVQ-=PLPhMLKF?2A`X1Ll&w5-&t0&<&%o6m|bdWHrrv)Y5K5Rr+rM>aQ=L@95Bj zqx0PxvoV@DA7ii>m1uu^ehjMglW;jsv**7-RpJS1Z$xx($Md3MA1cvI)C99TP=7W0 z*b66O6>%kMCKu3)*HDSvLe0$6(H$rTn-RyOuFFKtIDlHJGF0L(p(#!1^;1u<Iw-)C@mG?U}2n2RuPl&ez$UQ2>8R97O&GF?%o` z&shI~n#gzP)%*W|hQ1J@3f=cN3pMjXOu(*~goAB75tYbnw3sdn8)crfL zmB*O(v6T1%*^R?i-Q4?YQO{d}AvUyGOM_(1N7lR8owy_aJcHA%+fWHz!(_aNszhuL zb~?7Q&cO=eBgiEtr>A@04^fqzi*dNTC-r9^nAhphCOnCnSv_ja8ZZ{WM&0lL^>)Pc za<5NA?TxmWjsevD1CU>6GX(XUF$-0ppP`oeO;iQm>qY(bMe-pXdeBK!2|vRuyodpO zj2YOTa*J7?pIsPV3&HhCz#k2`P_YKARPrRjk`zGjkmsNoolVNu0T!5LGAu6s0sa9{XE~)(NJl= zwBAB($_Ua{e=KTk{ivCDMI}&%V{i)U`u+C&5ez53fSTz=+y4z}0$~H)`+XS7rX!z* zGAqL_Sb;0?H`oSqSy;YH%uv*lEJF>n8kNu%T!#CRBAVW%?vgIW);f>c{U=eI_6t#A>U!1!5dHsZMX43)RLV-EyWk8Qh#st4Re20 zd!RO3C2E{yI11NdGYox2LnXh3+En*ZiNp=2kKn zV~9JU9`Fn*(IFUzlTb@hg{yhKSxBQL9Z}D@C-SU8)KYXut<@;oUyi!I!ny>bi8tYF z+=0z8bA)|cP~()L601ZdP=m>O|7-09YcRlx?O1^4ZGXf_cOXA%a}}co8iT6TWP5%A zCKCSwy|@XL_%75Ye;=dpAgVGau<`%@>u6~6{R=gdFcwI!TO4YD5>!INQG4SR)FxYp zTC$Bceisvn_oMDRW&7(ek+=ah{&kGSdl*utk)z!irJ^#-Mm;DWRl5Fo7{}u?m@&rv zy)Q>4`VKC}%lHyj{J?!Z&!T4D<#{*Jo~R0rK#g1VJoQ&*E9lUL8*n~uLT$3N7u?Ep zN8Kw zua>)i5p5mk?%D=aN&k)UcoUU)lku*psD#>K4Hl!W+kr~t5NgfOqL%J+EW|4bG<-DD zC%9`9oZyrvb@Ajmze*|#PbQ;C=W0@MilG(3;pbAV%s)8_oM3WB)ID1IuY9@NSq6w!eY4J_*hz$w}TO^!}R2hndceP}1 zXbs`eCztDK81U_I-TF z(ax#&_3%7$64Ekq;^;p>-%mI?(O!-oOyp?Gp-)R^M4Hdj)R~^v+w+w3c3N3@fHR$) zM`^xHKdnPt(~)C4N06A`n8r`O6HL$Y#5yC=eJT2Ldl9{QO;c&F!9u4tJ2l&lR0Wz)PDd)K!$z* delta 5552 zcmXxm4|GoV9mnzCBO;OHiTr!=yT>oKMi*0(q2SG21V)oaZ4fH6bx22RJEj>d3_S%*>RU?#qa zUGXGl;aAuVV^WPNzyj+Gj3?gc8ZvLu@X~PzpTZAu6#B_#0zQj{SclPg17q+m#$lVz z#so1D6%WU7d>VEA6zgnM!qun=tZ0ox#=K0UEgc(Clm5Al_hB~iySD!?)@D?~ri=T4 zSZqhw(Z(4VL7az4ScK_Vff|3lHH67L-#9dM!(P-3-na2dOdvjmRNpkAAMc?Cic53P zXQF1-A0u%XszPH>m6(LFINkOyKt1ny3~At1_QW>pJNAM@Hf}%-e9Fe>Py=4J@xQPG z@k3OC-gLJzS*XhNwsA4`CoZ$Tm~KL?9S7+c!HH%p!af;p$>t#2!K_0iup3pO1E`rD zMJ3XRtcp2@1$YOwMBUhtszh(peS@u)sLFn?YsfvZhz{Mb234AksLZ#bcJWTk!ba2# zzebfjjFUc$MZE=?sQX8w&W}Uwtt!-bGf)Z5K_$KjxRu9?e!SSd>l2M6fU^4bcJvTI#Mmdd1s0??aHrF0hiR)3BoF6P8o?1LwfG0nHu)NF1d z9)ikzGKS+1taGs~@j~ljR6@&96IzF=#CB9A_TUuupJ}iifgZ-NflUxq>PpmFO+!6! z9!BC~)FxYj?eGBVd>!h2KZ;tSbEx~Tp~m~SjoVO;Na79{$Ma1Jja=-Bn!yAN!zrkY zr=!+vF6wP~2^q_5Lw!mcF#<23mg*8Jft&WcC&w*$A}XOY8~4JH1}LVXQdOXK_Y~CY zRE_K>vjH{WLDWqCfJ5;-YCu2PEAdQJ0zI)k7NhPThODBQjau6Es7fEprT+Q={f!Pi z_&(~!gkJ8P1a3A&>g2 zQ9y?-9E%Ha5^5$NqZcor61j@H?lx-14=@HzzI&Y)HRDv&Qk9|-pNgvR0_59dR-ne) z5u%~e?nCX;2GoFm#wfgmdeA>mGrEOJ;I2L2f_gwy&>g1}>b@Wr<3QB?i%^wWh8pK3 z^kQhOJ+aAlY(s6ny{H=xpa!h9{SBxDPM~)2Y1DP+ZF~{6lvk_|a1U`Jugnmv$KLo5 zS(T6p63wNf3g_TQI1_{H6b-xyRiR&?_R4A%AxTwO=Lm{@2jZ+HA#XxC@nl{%Mp6sLV4_0|imL?v4#ZC&%WtL)qW)To8agzyZ5W5UFcxc3H=MxMw*qzjCDh*d zCkF5i>i(F=+&@ASFon1XRiUxy!&#`(zkvFFy!;sT*Mn;4PzkqV8t%qiY{XQ&jh)a- zIr!_#;jQTno|A+I)i=@DVDJm{K?MB-D+$ zs0R#2&14kn`f2FL`KbF=qbl|qYO}pzifMZPn`!W-nV4a2=0i}4 zJc&xI3YFYt)s>rL2Q@Bbbey75n_ z&G%Pq-CU>{+(9Mq0JYY!W$u!7v*ud|Sj()HsHK>Kdf+_NgnnZCw_-fcH+$82BM95H*2QsQa6+D}I9^WtKeBn0}ap zuj35N#GA;s#3Zu7T9PrSfhM9JI1kt0N~AcZUAg=ARA4uqNA3O^)TVtKwb?(waQwKO z`nRKThK{y)9<>A)Q8WMA#$oIc)K3Oh=#|{C!kH)iz#@S~3T<6mO$SeZ<;?y@=a9;cm7d zYMe1R9;adq{svX?P(2N8isPs?`V2KdGxov2SY!D3na42$U$ySXG~zQDg*P!8ze7DB zywXiH0hK^^)Kc`r4Oog@^!}f<~C!v;Z7WTyj=*L~Cr8(lMa^@xW z^JF_a6Dz|LNh!j)o7msi!nt-t>6pxMgCpM=nv|;LYW-z8vyw&?1-Rz_zizgDhK}PL zw>fwROfTF2Ic@#ooXbgx-Zu1ZAxg$hj>nhgeMGdGBag%H&tYR^MwTyn0rr+vaTu8VTkC6{z%o(axvIC7vY5>(BP)+5QXk zM><3O-Lg8;<0D$eq2DT(*1sPUIJcU(t+UQQJdkSd)jwVBX@7?gIC?l&{Ux6NIvFXc zS+Vs0p1v13dedHu2ID!hIP~l6%t-Nj!ky(Qr5=xSIHfW?hckT~Z@}LX+*b4WxOz&WwQHmrnn3`t-f<(cXxK&iX*^fUZP(7h+Ib?pcm5v@1}5oNGI0 wbL{2_mS=F_h#_wtWKQy#uivR!s diff --git a/content_manager/locale/fr/LC_MESSAGES/django.po b/content_manager/locale/fr/LC_MESSAGES/django.po index 35d6ed8d..109a2a12 100644 --- a/content_manager/locale/fr/LC_MESSAGES/django.po +++ b/content_manager/locale/fr/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-10 14:35+0100\n" -"PO-Revision-Date: 2024-12-10 14:35+0100\n" +"POT-Creation-Date: 2024-12-12 12:25+0100\n" +"PO-Revision-Date: 2024-12-12 17:54+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -26,13 +26,13 @@ msgstr "Afficher le titre sur l’image d’en-tête ?" msgid "Header image" msgstr "Image d’en-tête" -#: content_manager/abstract.py:39 content_manager/blocks.py:1025 -#: content_manager/blocks.py:1066 content_manager/blocks.py:1099 +#: content_manager/abstract.py:39 content_manager/blocks.py:1026 +#: content_manager/blocks.py:1067 content_manager/blocks.py:1100 msgid "Background color" msgstr "Couleur de fond" -#: content_manager/abstract.py:43 content_manager/blocks.py:1027 -#: content_manager/blocks.py:1068 content_manager/blocks.py:1101 +#: content_manager/abstract.py:43 content_manager/blocks.py:1028 +#: content_manager/blocks.py:1069 content_manager/blocks.py:1102 msgid "Uses the French Design System colors" msgstr "Utilise les couleurs du système de design de l'État" @@ -215,8 +215,8 @@ msgstr "Badge" #: content_manager/blocks.py:493 content_manager/blocks.py:568 #: content_manager/blocks.py:623 content_manager/blocks.py:632 #: content_manager/blocks.py:681 content_manager/blocks.py:880 -#: content_manager/blocks.py:910 content_manager/blocks.py:982 -#: content_manager/blocks.py:1038 content_manager/models.py:518 +#: content_manager/blocks.py:910 content_manager/blocks.py:983 +#: content_manager/blocks.py:1039 content_manager/models.py:517 msgid "Title" msgstr "Titre" @@ -241,7 +241,7 @@ msgstr "Tag" #: content_manager/blocks.py:439 content_manager/blocks.py:453 #: content_manager/blocks.py:570 content_manager/blocks.py:786 #: content_manager/blocks.py:882 content_manager/blocks.py:912 -#: content_manager/blocks.py:1040 +#: content_manager/blocks.py:1041 msgid "Heading level" msgstr "Niveau de titre" @@ -253,8 +253,8 @@ msgstr "À adapter à la structure de la page. Par défaut en-tête 3." #: content_manager/blocks.py:270 content_manager/blocks.py:386 #: content_manager/blocks.py:423 content_manager/blocks.py:460 -#: content_manager/blocks.py:474 content_manager/blocks.py:983 -#: content_manager/blocks.py:1070 +#: content_manager/blocks.py:474 content_manager/blocks.py:984 +#: content_manager/blocks.py:1071 msgid "Content" msgstr "Contenu" @@ -456,7 +456,7 @@ msgid "Image width" msgstr "Largeur de l’image" #: content_manager/blocks.py:531 content_manager/blocks.py:642 -#: content_manager/blocks.py:941 content_manager/blocks.py:1113 +#: content_manager/blocks.py:941 content_manager/blocks.py:1114 msgid "Rich text" msgstr "Texte avec mise en forme" @@ -489,7 +489,7 @@ msgid "Caption" msgstr "Légende" #: content_manager/blocks.py:603 content_manager/blocks.py:948 -#: content_manager/blocks.py:1120 +#: content_manager/blocks.py:1122 msgid "Quote" msgstr "Citation" @@ -561,7 +561,7 @@ msgid "Video ratio" msgstr "Ratio de la vidéo" #: content_manager/blocks.py:713 content_manager/blocks.py:944 -#: content_manager/blocks.py:1122 +#: content_manager/blocks.py:1124 msgid "Transcription" msgstr "Transcription" @@ -575,7 +575,7 @@ msgstr "" "Optionnel, toutes les valeurs peuvent être spécifiées ou surchargées ci-" "dessous" -#: content_manager/blocks.py:792 content_manager/models.py:550 +#: content_manager/blocks.py:792 content_manager/models.py:549 msgid "Name" msgstr "Nom" @@ -591,16 +591,16 @@ msgstr "Organisation" msgid "Contact info" msgstr "Informations de contact" -#: content_manager/blocks.py:797 content_manager/models.py:95 -#: content_manager/models.py:137 content_manager/models.py:151 -#: content_manager/models.py:157 +#: content_manager/blocks.py:797 content_manager/models.py:94 +#: content_manager/models.py:136 content_manager/models.py:150 +#: content_manager/models.py:156 #: content_manager/templates/content_manager/tags_list_page.html:49 #: content_manager/views.py:46 content_manager/views.py:77 msgid "Tags" msgstr "Étiquettes" #: content_manager/blocks.py:886 content_manager/blocks.py:916 -#: content_manager/blocks.py:1044 +#: content_manager/blocks.py:1045 msgid "Adapt to the page layout. Defaults to heading 2." msgstr "À adapter à la structure de la page. Par défaut en-tête 2." @@ -620,7 +620,7 @@ msgid "Filter by category" msgstr "Filtrer par catégorie" #: content_manager/blocks.py:893 content_manager/blocks.py:923 -#: content_manager/models.py:57 +#: content_manager/models.py:56 #: content_manager/templates/content_manager/blocks/blog_recent_entries.html:28 #: content_manager/templates/content_manager/blocks/events_recent_entries.html:28 #: content_manager/templates/content_manager/catalog_index_page.html:94 @@ -647,7 +647,7 @@ msgstr "" "La source est l’organisation à laquelle appartient l’auteur de l’article" #: content_manager/blocks.py:901 content_manager/blocks.py:931 -#: content_manager/models.py:65 +#: content_manager/models.py:64 msgid "Show filters" msgstr "Afficher les filtres" @@ -655,122 +655,123 @@ msgstr "Afficher les filtres" msgid "Event calendar" msgstr "Agenda" -#: content_manager/blocks.py:943 content_manager/blocks.py:1121 +#: content_manager/blocks.py:943 content_manager/blocks.py:1123 msgid "Video" msgstr "Vidéo" -#: content_manager/blocks.py:945 content_manager/blocks.py:1117 +#: content_manager/blocks.py:945 content_manager/blocks.py:1118 msgid "Accordions" msgstr "Accordéons" #: content_manager/blocks.py:945 content_manager/blocks.py:946 #: content_manager/blocks.py:947 content_manager/blocks.py:948 #: content_manager/blocks.py:949 content_manager/blocks.py:952 -#: content_manager/blocks.py:953 content_manager/blocks.py:964 -#: content_manager/blocks.py:1015 content_manager/blocks.py:1055 -#: content_manager/blocks.py:1056 content_manager/blocks.py:1117 +#: content_manager/blocks.py:953 content_manager/blocks.py:958 +#: content_manager/blocks.py:965 content_manager/blocks.py:1016 +#: content_manager/blocks.py:1056 content_manager/blocks.py:1057 #: content_manager/blocks.py:1118 content_manager/blocks.py:1119 -#: content_manager/blocks.py:1120 content_manager/blocks.py:1126 -#: content_manager/blocks.py:1127 content_manager/blocks.py:1128 -#: content_manager/blocks.py:1129 +#: content_manager/blocks.py:1121 content_manager/blocks.py:1122 +#: content_manager/blocks.py:1128 content_manager/blocks.py:1129 +#: content_manager/blocks.py:1130 content_manager/blocks.py:1131 msgid "DSFR components" msgstr "Composants du DSFR" -#: content_manager/blocks.py:946 content_manager/blocks.py:1118 +#: content_manager/blocks.py:946 content_manager/blocks.py:1119 msgid "Callout" msgstr "Mise en avant" -#: content_manager/blocks.py:947 content_manager/blocks.py:1119 +#: content_manager/blocks.py:947 content_manager/blocks.py:1121 msgid "Highlight" msgstr "Mise en exergue" -#: content_manager/blocks.py:949 content_manager/blocks.py:1126 +#: content_manager/blocks.py:949 content_manager/blocks.py:958 +#: content_manager/blocks.py:1128 msgid "Stepper" -msgstr "Étapier" +msgstr "Indicateur d’étapes" -#: content_manager/blocks.py:950 +#: content_manager/blocks.py:950 content_manager/blocks.py:1120 msgid "Text and call to action" msgstr "Texte et appel à action" -#: content_manager/blocks.py:951 content_manager/blocks.py:1125 +#: content_manager/blocks.py:951 content_manager/blocks.py:1127 msgid "Single link" msgstr "Lien isolé" -#: content_manager/blocks.py:952 content_manager/blocks.py:1131 +#: content_manager/blocks.py:952 content_manager/blocks.py:1133 msgid "Iframe" msgstr "Iframe" -#: content_manager/blocks.py:953 content_manager/blocks.py:1128 +#: content_manager/blocks.py:953 content_manager/blocks.py:1130 msgid "Tile" msgstr "Tuile" -#: content_manager/blocks.py:954 content_manager/blocks.py:1153 +#: content_manager/blocks.py:954 content_manager/blocks.py:1155 msgid "Blog recent entries" msgstr "Articles récents du blog" #: content_manager/blocks.py:954 content_manager/blocks.py:956 -#: content_manager/blocks.py:1148 content_manager/blocks.py:1153 -#: content_manager/blocks.py:1157 +#: content_manager/blocks.py:1150 content_manager/blocks.py:1155 +#: content_manager/blocks.py:1159 msgid "Website structure" msgstr "Structure du site" -#: content_manager/blocks.py:956 content_manager/blocks.py:1157 +#: content_manager/blocks.py:956 content_manager/blocks.py:1159 msgid "Event calendar recent entries" msgstr "Articles récents de l’agenda" -#: content_manager/blocks.py:964 content_manager/blocks.py:1015 +#: content_manager/blocks.py:965 content_manager/blocks.py:1016 msgid "Vertical card" msgstr "Carte verticale" -#: content_manager/blocks.py:965 +#: content_manager/blocks.py:966 msgid "Contact card" msgstr "Carte contact" -#: content_manager/blocks.py:965 +#: content_manager/blocks.py:966 msgid "Extra components" msgstr "Composants supplémentaires" -#: content_manager/blocks.py:970 content_manager/blocks.py:995 +#: content_manager/blocks.py:971 content_manager/blocks.py:996 msgid "Column width" msgstr "Largeur de colonne" -#: content_manager/blocks.py:974 +#: content_manager/blocks.py:975 msgid "Items" msgstr "Éléments" -#: content_manager/blocks.py:987 +#: content_manager/blocks.py:988 msgid "Tab" msgstr "Onglet" -#: content_manager/blocks.py:1005 +#: content_manager/blocks.py:1006 msgid "The total width of all columns should be 12." msgstr "La largeur totale de toutes les colonnes doit être 12." -#: content_manager/blocks.py:1008 +#: content_manager/blocks.py:1009 msgid "Column content" msgstr "Contenu de la colonnne" -#: content_manager/blocks.py:1016 +#: content_manager/blocks.py:1017 msgid "Adjustable column" msgstr "Colonne ajustable" -#: content_manager/blocks.py:1016 content_manager/blocks.py:1057 -#: content_manager/blocks.py:1132 content_manager/blocks.py:1133 +#: content_manager/blocks.py:1017 content_manager/blocks.py:1058 #: content_manager/blocks.py:1134 content_manager/blocks.py:1135 -#: content_manager/blocks.py:1139 +#: content_manager/blocks.py:1136 content_manager/blocks.py:1137 +#: content_manager/blocks.py:1141 msgid "Page structure" msgstr "Structure de la page" -#: content_manager/blocks.py:1023 content_manager/blocks.py:1064 -#: content_manager/blocks.py:1097 +#: content_manager/blocks.py:1024 content_manager/blocks.py:1065 +#: content_manager/blocks.py:1098 msgid "Background image" msgstr "Image de fond" -#: content_manager/blocks.py:1030 +#: content_manager/blocks.py:1031 msgid "Background color, hexadecimal format (obsolete)" msgstr "Couleur de fond, format hexadécimal (obsolète)" -#: content_manager/blocks.py:1033 +#: content_manager/blocks.py:1034 msgid "" "This field is obsolete and will be removed in the near future. Replace it " "with the background color." @@ -778,35 +779,35 @@ msgstr "" "Ce champ est obsolète et sera prochainement supprimé. Merci de le remplacer " "avec la couleur de fond." -#: content_manager/blocks.py:1035 +#: content_manager/blocks.py:1036 msgid "Incorrect color format, must be #fff or #f5f5f5" msgstr "Format de couleur incorrect, doit être #fff ou #f5f5f5" -#: content_manager/blocks.py:1046 +#: content_manager/blocks.py:1047 msgid "Columns" msgstr "Colonnes" -#: content_manager/blocks.py:1054 content_manager/blocks.py:1115 +#: content_manager/blocks.py:1055 content_manager/blocks.py:1116 msgid "Image and text" msgstr "Image et texte" -#: content_manager/blocks.py:1055 content_manager/blocks.py:1127 +#: content_manager/blocks.py:1056 content_manager/blocks.py:1129 msgid "Horizontal card" msgstr "Carte horizontale" -#: content_manager/blocks.py:1056 content_manager/blocks.py:1129 +#: content_manager/blocks.py:1057 content_manager/blocks.py:1131 msgid "Tabs" msgstr "Onglets" -#: content_manager/blocks.py:1057 content_manager/blocks.py:1134 +#: content_manager/blocks.py:1058 content_manager/blocks.py:1136 msgid "Item grid" msgstr "Grille d’éléments" -#: content_manager/blocks.py:1078 +#: content_manager/blocks.py:1079 msgid "Parent page" msgstr "Page parente" -#: content_manager/blocks.py:1088 content_manager/blocks.py:1170 +#: content_manager/blocks.py:1089 content_manager/blocks.py:1172 msgid "" "Warning: Use HTML block with caution. Malicious code can compromise the " "security of the site." @@ -814,64 +815,64 @@ msgstr "" "Avertissement : Utilisez le bloc HTML avec précaution. Un code malveillant " "peut compromettre la sécurité du site." -#: content_manager/blocks.py:1090 +#: content_manager/blocks.py:1091 msgid "Page tree" msgstr "Arborescence de pages" -#: content_manager/blocks.py:1103 +#: content_manager/blocks.py:1104 msgid "Main content" msgstr "Contenu principal" -#: content_manager/blocks.py:1104 +#: content_manager/blocks.py:1105 msgid "Side menu title" msgstr "Titre du menu latéral" -#: content_manager/blocks.py:1105 +#: content_manager/blocks.py:1106 msgid "Side menu content" msgstr "Contenu du menu latéral" -#: content_manager/blocks.py:1116 +#: content_manager/blocks.py:1117 msgid "Alert message" msgstr "Message d’alerte" -#: content_manager/blocks.py:1123 +#: content_manager/blocks.py:1125 msgid "Badge list" msgstr "Liste de badges" -#: content_manager/blocks.py:1124 +#: content_manager/blocks.py:1126 msgid "Tag list" msgstr "Liste de tags" -#: content_manager/blocks.py:1130 +#: content_manager/blocks.py:1132 msgid "Markdown" msgstr "Markdown" -#: content_manager/blocks.py:1130 content_manager/blocks.py:1131 -#: content_manager/blocks.py:1172 +#: content_manager/blocks.py:1132 content_manager/blocks.py:1133 +#: content_manager/blocks.py:1174 msgid "Expert syntax" msgstr "Syntaxe experte" -#: content_manager/blocks.py:1132 +#: content_manager/blocks.py:1134 msgid "Separator" msgstr "Séparateur" -#: content_manager/blocks.py:1133 +#: content_manager/blocks.py:1135 msgid "Multiple columns" msgstr "Multi-colonnes" -#: content_manager/blocks.py:1135 +#: content_manager/blocks.py:1137 msgid "Full width background" msgstr "Fond pleine largeur" -#: content_manager/blocks.py:1139 +#: content_manager/blocks.py:1141 msgid "Full width background with side menu" msgstr "Fond pleine largeur avec menu latéral" -#: content_manager/blocks.py:1145 +#: content_manager/blocks.py:1147 msgid "Subpages list" msgstr "Liste des sous-pages" -#: content_manager/blocks.py:1146 +#: content_manager/blocks.py:1148 msgid "A simple, alphabetical list of the subpages of the current page." msgstr "" "Une liste alphabétique toute simple des sous-pages de la page actuelle." @@ -959,56 +960,56 @@ msgstr "Icône du côté droit" msgid "Icon on the left side" msgstr "Icône du côté gauche" -#: content_manager/models.py:34 +#: content_manager/models.py:33 msgid "Content page" msgstr "Page de contenu" -#: content_manager/models.py:53 +#: content_manager/models.py:52 msgid "Entries per page" msgstr "Entrées par page" -#: content_manager/models.py:72 +#: content_manager/models.py:71 msgid "Catalog index page" msgstr "Index de catalogue" -#: content_manager/models.py:100 +#: content_manager/models.py:99 #, python-format msgid "Pages tagged with %(tag)s" msgstr "Pages avec l’étiquette %(tag)s" -#: content_manager/models.py:173 +#: content_manager/models.py:172 msgid "Tag" msgstr "Étiquette" -#: content_manager/models.py:195 content_manager/models.py:230 +#: content_manager/models.py:194 content_manager/models.py:229 msgid "Custom scripts" msgstr "Scripts personnalisés" -#: content_manager/models.py:200 +#: content_manager/models.py:199 msgid "Scripts in the section" msgstr "Scripts dans la section " -#: content_manager/models.py:201 +#: content_manager/models.py:200 msgid "Allows for scripts to be placed in the tag of the website pages." msgstr "" "Permet de placer des scripts à l’intérieur du tag des pages du site." -#: content_manager/models.py:207 +#: content_manager/models.py:206 msgid "Scripts in the section" msgstr "Scripts dans la section " -#: content_manager/models.py:208 +#: content_manager/models.py:207 msgid "" "Allows for scripts to be placed at the end of the tag of the website " "pages." msgstr "" "Permet de placer des scripts à l’intérieur du tag des pages du site." -#: content_manager/models.py:212 +#: content_manager/models.py:211 msgid "Use Tarteaucitron?" msgstr "Utiliser Tarteaucitron ?" -#: content_manager/models.py:216 +#: content_manager/models.py:215 msgid "" "See Documentation" @@ -1016,7 +1017,7 @@ msgstr "" "Voir Documentation" -#: content_manager/models.py:231 +#: content_manager/models.py:230 msgid "" "Allows to add custom CSS and JS to the site, for example for Matomo, " "Tarteaucitron…" @@ -1024,19 +1025,19 @@ msgstr "" "Permet d’ajouter du CSS et du JS personnalisé au site, par exemple pour " "Matomo, Tarteaucitron…" -#: content_manager/models.py:239 +#: content_manager/models.py:238 msgid "Site configuration" msgstr "Configuration du site" -#: content_manager/models.py:240 +#: content_manager/models.py:239 msgid "Site configurations" msgstr "Configurations du site" -#: content_manager/models.py:243 +#: content_manager/models.py:242 msgid "Institution (header)" msgstr "Institution (en-tête)" -#: content_manager/models.py:248 +#: content_manager/models.py:247 msgid "" "Institution brand as defined on official page." @@ -1044,47 +1045,47 @@ msgstr "" "Nom de l’institution tel que défini sur la page officielle." -#: content_manager/models.py:254 +#: content_manager/models.py:253 msgid "Institution with line break (header)" msgstr "Institution avec césure (en-tête)" -#: content_manager/models.py:258 +#: content_manager/models.py:257 msgid "Institution brand with
    tags for line breaks" msgstr "Nom de l’institution avec des
    pour les retours à la ligne" -#: content_manager/models.py:261 +#: content_manager/models.py:260 msgid "Institution (footer)" msgstr "Institution (pied)" -#: content_manager/models.py:268 +#: content_manager/models.py:267 msgid "Institution with line break (footer)" msgstr "Institution avec césure (pied)" -#: content_manager/models.py:275 content_manager/models.py:277 +#: content_manager/models.py:274 content_manager/models.py:276 msgid "Site title" msgstr "Titre du site" -#: content_manager/models.py:281 content_manager/models.py:283 +#: content_manager/models.py:280 content_manager/models.py:282 msgid "Site tagline" msgstr "Sous-titre du site" -#: content_manager/models.py:288 +#: content_manager/models.py:287 msgid "Notice title" msgstr "Titre du bandeau" -#: content_manager/models.py:292 content_manager/models.py:299 +#: content_manager/models.py:291 content_manager/models.py:298 msgid "Can include HTML" msgstr "Peut inclure du HTML" -#: content_manager/models.py:296 +#: content_manager/models.py:295 msgid "Notice description" msgstr "Description du bandeau" -#: content_manager/models.py:302 +#: content_manager/models.py:301 msgid "Notice type" msgstr "Type de bandeau" -#: content_manager/models.py:309 +#: content_manager/models.py:308 msgid "" "Use is strictly regulated, see documentation." -#: content_manager/models.py:316 +#: content_manager/models.py:315 msgid "Notice link" msgstr "Lien du bandeau" -#: content_manager/models.py:319 +#: content_manager/models.py:318 msgid "Standardized consultation link at the end of the notice." msgstr "Lien de consultation standardisé à la fin du bandeau." -#: content_manager/models.py:323 +#: content_manager/models.py:322 msgid "Notice icon class" msgstr "Classe d’icône du bandeau" -#: content_manager/models.py:327 +#: content_manager/models.py:326 msgid "For weather alerts only" msgstr "Pour les bandeaux de vigilance météo uniquement" -#: content_manager/models.py:330 +#: content_manager/models.py:329 msgid "Collapsible?" msgstr "Refermable ?" -#: content_manager/models.py:332 +#: content_manager/models.py:331 msgid "Show the BETA tag next to the title" msgstr "Afficher la mention BETA à côté du titre" -#: content_manager/models.py:335 content_manager/models.py:554 +#: content_manager/models.py:334 content_manager/models.py:553 msgid "Description" msgstr "Description" -#: content_manager/models.py:348 content_manager/models.py:424 +#: content_manager/models.py:347 content_manager/models.py:423 msgid "Operator logo" msgstr "Logo opérateur" -#: content_manager/models.py:352 +#: content_manager/models.py:351 msgid "Logo alt text" msgstr "Alternative textuelle du logo" -#: content_manager/models.py:355 +#: content_manager/models.py:354 msgid "Must contain the text present in the image." msgstr "Doit impérativement contenir le texte présent dans l’image." -#: content_manager/models.py:358 +#: content_manager/models.py:357 msgid "Width (em)" msgstr "Largeur (em)" -#: content_manager/models.py:364 +#: content_manager/models.py:363 msgid "" "To be adjusted according to the width of the logo. Example for a " "vertical logo: 3.5, Example for a horizontal logo: 8." @@ -1146,64 +1147,64 @@ msgstr "" "À ajuster en fonction de la largeur du logo. Exemple pour un logo vertical: " "3.5, Exemple pour un logo horizontal: 8." -#: content_manager/models.py:369 +#: content_manager/models.py:368 msgid "Display search bar in the header" msgstr "Afficher la barre de recherche dans l’en-tête" -#: content_manager/models.py:370 +#: content_manager/models.py:369 msgid "Display theme modale button" msgstr "Afficher le bouton de choix du thème" -#: content_manager/models.py:371 +#: content_manager/models.py:370 msgid "Mourning" msgstr "Mise en berne" -#: content_manager/models.py:373 +#: content_manager/models.py:372 msgid "Newsletter description" msgstr "Description de la lettre d’information" -#: content_manager/models.py:376 +#: content_manager/models.py:375 msgid "Newsletter registration URL" msgstr "URL d‘inscription à la lettre d’information" -#: content_manager/models.py:381 +#: content_manager/models.py:380 msgid "Activate share links on content_pages" msgstr "Activer les liens de partage sur les pages de contenu" -#: content_manager/models.py:382 +#: content_manager/models.py:381 msgid "Activate share links on blog posts" msgstr "Activer les liens de partage sur les articles de blog" -#: content_manager/models.py:383 +#: content_manager/models.py:382 msgid "Activate share links on event pages" msgstr "Activer les liens de partage sur les pages d’événement" -#: content_manager/models.py:386 +#: content_manager/models.py:385 msgid "Display a Share on Facebook link at the bottom of pages" msgstr "Afficher un lien de partage sur Facebook en bas des pages" -#: content_manager/models.py:389 +#: content_manager/models.py:388 msgid "Display a Share on X (previously Twitter) link at the bottom of pages" msgstr "" "Afficher un lien de partage sur X (anciennement Twitter) en bas des pages" -#: content_manager/models.py:392 +#: content_manager/models.py:391 msgid "Display a Share on LinkedIn link at the bottom of pages" msgstr "Afficher un lien de partage sur LinkedIn en bas des pages" -#: content_manager/models.py:394 +#: content_manager/models.py:393 msgid "Display a Share via email link at the bottom of pages" msgstr "Afficher un lien de partage par courrier électronique en bas des pages" -#: content_manager/models.py:396 +#: content_manager/models.py:395 msgid "Display a Copy to clipboard link at the bottom of pages" msgstr "Afficher un lien de copie dans le presse-papiers en bas des pages" -#: content_manager/models.py:412 +#: content_manager/models.py:411 msgid "Important notice" msgstr "Bandeau d’information importante" -#: content_manager/models.py:414 +#: content_manager/models.py:413 msgid "" "The important notice banner should only be used for essential and temporary " "information. (Excessive or continuous use risks “drowning” " @@ -1213,83 +1214,83 @@ msgstr "" "information primordiale et temporaire. (Une utilisation excessive ou " "continue risque de “noyer” le message)" -#: content_manager/models.py:433 +#: content_manager/models.py:432 msgid "Advanced settings" msgstr "Paramètres avancés" -#: content_manager/models.py:443 +#: content_manager/models.py:442 msgid "Header" msgstr "En-tête" -#: content_manager/models.py:450 +#: content_manager/models.py:449 msgid "Footer" msgstr "Pied de page" -#: content_manager/models.py:460 +#: content_manager/models.py:459 msgid "Newsletter" msgstr "Lettre d’information" -#: content_manager/models.py:462 content_manager/models.py:535 +#: content_manager/models.py:461 content_manager/models.py:534 msgid "Social media items" msgstr "Liens de réseaux sociaux" -#: content_manager/models.py:469 +#: content_manager/models.py:468 msgid "Activate share links by type of page" msgstr "Activer les liens de partage par type de page" -#: content_manager/models.py:479 +#: content_manager/models.py:478 msgid "Types of share links" msgstr "Types de liens de partage" -#: content_manager/models.py:484 +#: content_manager/models.py:483 msgid "Generic" msgstr "Génériques" -#: content_manager/models.py:485 +#: content_manager/models.py:484 msgid "Brand block" msgstr "Bloc-marque" -#: content_manager/models.py:486 +#: content_manager/models.py:485 msgid "Newsletter, social media and share links" msgstr "Lettre d’information, réseaux sociaux et liens de partage" -#: content_manager/models.py:521 +#: content_manager/models.py:520 msgid "URL" msgstr "URL" -#: content_manager/models.py:525 +#: content_manager/models.py:524 msgid "Icon class" msgstr "Classe d’icône" -#: content_manager/models.py:534 +#: content_manager/models.py:533 msgid "Social media item" msgstr "Lien de réseau social" -#: content_manager/models.py:541 +#: content_manager/models.py:540 msgid "Category" msgstr "Catégorie" -#: content_manager/models.py:544 +#: content_manager/models.py:543 msgid "Mega menu category" msgstr "Catégorie de méga menu" -#: content_manager/models.py:545 +#: content_manager/models.py:544 msgid "Mega menu categories" msgstr "Catégories de méga menu" -#: content_manager/models.py:555 +#: content_manager/models.py:554 msgid "Main link" msgstr "Lien principal" -#: content_manager/models.py:565 +#: content_manager/models.py:564 msgid "Categories" msgstr "Catégories" -#: content_manager/models.py:566 +#: content_manager/models.py:565 msgid "Maximum 4 categories, each with maximum 8 links." msgstr "Maximum 4 catégories, chacune contenant maximum 8 liens." -#: content_manager/models.py:577 +#: content_manager/models.py:576 msgid "Mega menu" msgstr "Méga menu" @@ -1350,6 +1351,11 @@ msgstr "Visibilité de la page restreinte par mot de passe" msgid "Page with restricted visibility" msgstr "Visibilité de la page restreinte" +#: content_manager/templates/content_manager/blocks/stepper.html:8 +#, python-format +msgid "Step %(current_step)s of %(total_steps)s" +msgstr "Étape %(current_step)s suréta %(total_steps)s" + #: content_manager/templates/content_manager/blocks/tabs.html:3 msgid "Tabs group" msgstr "Groupe d’onglets" diff --git a/content_manager/migrations/0051_alter_catalogindexpage_body_alter_contentpage_body.py b/content_manager/migrations/0051_alter_catalogindexpage_body_alter_contentpage_body.py new file mode 100644 index 00000000..97ecafd3 --- /dev/null +++ b/content_manager/migrations/0051_alter_catalogindexpage_body_alter_contentpage_body.py @@ -0,0 +1,2808 @@ +# Generated by Django 5.1.4 on 2024-12-12 14:05 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("content_manager", "0050_catalogindexpage"), + ] + + operations = [ + migrations.AlterField( + model_name="catalogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("badges_list", 50), + ("tags_list", 56), + ("link", 57), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("stepper", 78), + ("card", 98), + ("tile", 108), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 30: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 31: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button"}, + ), + 33: ( + "wagtail.blocks.StreamBlock", + [[("button", 32)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 33)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 35: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.StructBlock", + [[("text", 28), ("cta_buttons", 34), ("cta_label", 35), ("cta_url", 36)]], + {"label": "Text and call to action"}, + ), + 38: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 39: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Transcription", "required": False}, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 38), + ("caption", 7), + ("url", 39), + ("width", 5), + ("video_ratio", 40), + ("transcription", 43), + ] + ], + {"label": "Video"}, + ), + 45: ("wagtail.blocks.StructBlock", [[("title", 41), ("content", 42)]], {"label": "Transcription"}), + 46: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 47: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 48: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 46), ("color", 47), ("hide_icon", 48)]], + {"label": "Badge"}, + ), + 50: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {"label": "Badge list"}), + 51: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 52: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("label", 51), ("is_small", 52), ("color", 53), ("icon_class", 30), ("link", 54)]], + {"label": "Tag"}, + ), + 56: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tag list"}), + 57: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 51), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 64: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 30), + ("text", 61), + ("button", 62), + ("color", 63), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 65: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 66: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("text", 65), ("color", 63), ("size", 66)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 68: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 69: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 72: ( + "wagtail.blocks.StructBlock", + [[("image", 68), ("quote", 69), ("author_name", 70), ("author_title", 71), ("color", 63)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 73: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 74: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 75: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 76: ("wagtail.blocks.StructBlock", [[("title", 51), ("detail", 75)]], {"label": "Step"}), + 77: ("wagtail.blocks.StreamBlock", [[("step", 76)]], {"label": "Steps"}), + 78: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("total", 73), ("current", 74), ("steps", 77)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 80: ( + "wagtail.blocks.StreamBlock", + [[("badge", 49)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 82: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 83: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 84: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 85: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {}), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 86), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 90: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 91: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 92: ("wagtail.blocks.StreamBlock", [[("link", 91)]], {}), + 93: ( + "wagtail.blocks.StreamBlock", + [[("links", 92), ("buttons", 33)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 98: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 79), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 89), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 99: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 100: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 101: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 104: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 108: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 99), + ("image", 100), + ("link", 81), + ("top_detail_badges_tags", 88), + ("detail_text", 101), + ("is_small", 102), + ("grey_background", 103), + ("no_background", 104), + ("no_border", 105), + ("shadow", 106), + ("is_horizontal", 107), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 6), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 81), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 68), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="contentpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("badges_list", 50), + ("tags_list", 56), + ("link", 57), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("stepper", 78), + ("card", 98), + ("tile", 108), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 30: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 31: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button"}, + ), + 33: ( + "wagtail.blocks.StreamBlock", + [[("button", 32)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 33)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 35: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.StructBlock", + [[("text", 28), ("cta_buttons", 34), ("cta_label", 35), ("cta_url", 36)]], + {"label": "Text and call to action"}, + ), + 38: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 39: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Transcription", "required": False}, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 38), + ("caption", 7), + ("url", 39), + ("width", 5), + ("video_ratio", 40), + ("transcription", 43), + ] + ], + {"label": "Video"}, + ), + 45: ("wagtail.blocks.StructBlock", [[("title", 41), ("content", 42)]], {"label": "Transcription"}), + 46: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 47: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 48: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 46), ("color", 47), ("hide_icon", 48)]], + {"label": "Badge"}, + ), + 50: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {"label": "Badge list"}), + 51: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 52: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("label", 51), ("is_small", 52), ("color", 53), ("icon_class", 30), ("link", 54)]], + {"label": "Tag"}, + ), + 56: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tag list"}), + 57: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 51), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 64: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 30), + ("text", 61), + ("button", 62), + ("color", 63), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 65: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 66: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("text", 65), ("color", 63), ("size", 66)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 68: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 69: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 72: ( + "wagtail.blocks.StructBlock", + [[("image", 68), ("quote", 69), ("author_name", 70), ("author_title", 71), ("color", 63)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 73: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 74: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 75: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 76: ("wagtail.blocks.StructBlock", [[("title", 51), ("detail", 75)]], {"label": "Step"}), + 77: ("wagtail.blocks.StreamBlock", [[("step", 76)]], {"label": "Steps"}), + 78: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("total", 73), ("current", 74), ("steps", 77)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 80: ( + "wagtail.blocks.StreamBlock", + [[("badge", 49)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 82: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 83: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 84: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 85: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {}), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 86), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 90: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 91: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 92: ("wagtail.blocks.StreamBlock", [[("link", 91)]], {}), + 93: ( + "wagtail.blocks.StreamBlock", + [[("links", 92), ("buttons", 33)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 98: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 79), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 89), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 99: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 100: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 101: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 104: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 108: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 99), + ("image", 100), + ("link", 81), + ("top_detail_badges_tags", 88), + ("detail_text", 101), + ("is_small", 102), + ("grey_background", 103), + ("no_background", 104), + ("no_border", 105), + ("shadow", 106), + ("is_horizontal", 107), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 6), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 81), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 68), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + ] diff --git a/content_manager/migrations/0052_alter_catalogindexpage_body_alter_contentpage_body.py b/content_manager/migrations/0052_alter_catalogindexpage_body_alter_contentpage_body.py new file mode 100644 index 00000000..d54f59e8 --- /dev/null +++ b/content_manager/migrations/0052_alter_catalogindexpage_body_alter_contentpage_body.py @@ -0,0 +1,2860 @@ +# Generated by Django 5.1.4 on 2024-12-12 17:08 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("content_manager", "0051_alter_catalogindexpage_body_alter_contentpage_body"), + ] + + operations = [ + migrations.AlterField( + model_name="catalogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 152), + ("item_grid", 155), + ("fullwidthbackground", 157), + ("fullwidthbackgroundwithsidemenu", 164), + ("subpageslist", 165), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Column content"}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("width", 148), ("content", 149)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 151: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("column", 150), + ] + ], + {"label": "Columns"}, + ), + 152: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 151), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 153: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("column_width", 153), ("items", 154)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 156: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Content"}, + ), + 157: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 156)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Main content"}, + ), + 159: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 160: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 161: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 162: ("wagtail.blocks.StructBlock", [[("page", 161)]], {"label": "Page tree"}), + 163: ( + "wagtail.blocks.StreamBlock", + [[("html", 160), ("pagetree", 162)]], + {"label": "Side menu content"}, + ), + 164: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 158), + ("sidemenu_title", 159), + ("sidemenu_content", 163), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 165: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="contentpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 152), + ("item_grid", 155), + ("fullwidthbackground", 157), + ("fullwidthbackgroundwithsidemenu", 164), + ("subpageslist", 165), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Column content"}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("width", 148), ("content", 149)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 151: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("column", 150), + ] + ], + {"label": "Columns"}, + ), + 152: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 151), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 153: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("column_width", 153), ("items", 154)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 156: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Content"}, + ), + 157: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 156)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Main content"}, + ), + 159: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 160: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 161: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 162: ("wagtail.blocks.StructBlock", [[("page", 161)]], {"label": "Page tree"}), + 163: ( + "wagtail.blocks.StreamBlock", + [[("html", 160), ("pagetree", 162)]], + {"label": "Side menu content"}, + ), + 164: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 158), + ("sidemenu_title", 159), + ("sidemenu_content", 163), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 165: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + }, + ), + ), + ] diff --git a/content_manager/templates/content_manager/blocks/image_and_text.html b/content_manager/templates/content_manager/blocks/image_and_text.html index 3f30d065..859f5ae4 100644 --- a/content_manager/templates/content_manager/blocks/image_and_text.html +++ b/content_manager/templates/content_manager/blocks/image_and_text.html @@ -4,7 +4,7 @@ {% if value.image_side == "left" %}
    - {% include "content_manager/blocks/image_svg_or_raster.html" with extra_classes="fr-responsive-img" alt="" %} + {% include "content_manager/blocks/image_svg_or_raster.html" with extra_classes="fr-responsive-img" %}
    @@ -36,7 +36,7 @@
    - {% include "content_manager/blocks/image_svg_or_raster.html" with extra_classes="fr-responsive-img" alt="" %} + {% include "content_manager/blocks/image_svg_or_raster.html" with extra_classes="fr-responsive-img" %}
    {% endif %} diff --git a/content_manager/templates/content_manager/blocks/image_svg_or_raster.html b/content_manager/templates/content_manager/blocks/image_svg_or_raster.html index e5aef75f..a8d54d70 100644 --- a/content_manager/templates/content_manager/blocks/image_svg_or_raster.html +++ b/content_manager/templates/content_manager/blocks/image_svg_or_raster.html @@ -12,5 +12,9 @@
    {% else %} - {% image value.image original class=extra_classes alt=alt %} + {% if alt %} + {% image value.image original class=extra_classes alt=alt %} + {% else %} + {% image value.image original class=extra_classes %} + {% endif %} {% endif %} diff --git a/content_manager/templates/content_manager/blocks/stepper.html b/content_manager/templates/content_manager/blocks/stepper.html index 421c2d52..17400883 100644 --- a/content_manager/templates/content_manager/blocks/stepper.html +++ b/content_manager/templates/content_manager/blocks/stepper.html @@ -1,6 +1,14 @@ +{% load i18n %}
    -

    {{ value.title }}

    +

    + {{ value.title }} + + {% with current_step=value.current total_steps=value.total %} + {% blocktranslate %}Step {{ current_step }} of {{ total_steps }}{% endblocktranslate %} + {% endwith %} + +

    @@ -8,7 +16,7 @@

    {{ value.title }}

    {% for step in value.steps %}

    - {{ step.value.title }} + {{ step.value.title }}

    {{ step.value.detail|linebreaksbr }}

    diff --git a/events/migrations/0012_alter_evententrypage_body_alter_eventsindexpage_body.py b/events/migrations/0012_alter_evententrypage_body_alter_eventsindexpage_body.py new file mode 100644 index 00000000..c9571fa6 --- /dev/null +++ b/events/migrations/0012_alter_evententrypage_body_alter_eventsindexpage_body.py @@ -0,0 +1,2808 @@ +# Generated by Django 5.1.4 on 2024-12-12 14:05 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("events", "0011_alter_evententrypage_body_alter_eventsindexpage_body"), + ] + + operations = [ + migrations.AlterField( + model_name="evententrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("badges_list", 50), + ("tags_list", 56), + ("link", 57), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("stepper", 78), + ("card", 98), + ("tile", 108), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 30: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 31: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button"}, + ), + 33: ( + "wagtail.blocks.StreamBlock", + [[("button", 32)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 33)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 35: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.StructBlock", + [[("text", 28), ("cta_buttons", 34), ("cta_label", 35), ("cta_url", 36)]], + {"label": "Text and call to action"}, + ), + 38: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 39: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Transcription", "required": False}, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 38), + ("caption", 7), + ("url", 39), + ("width", 5), + ("video_ratio", 40), + ("transcription", 43), + ] + ], + {"label": "Video"}, + ), + 45: ("wagtail.blocks.StructBlock", [[("title", 41), ("content", 42)]], {"label": "Transcription"}), + 46: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 47: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 48: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 46), ("color", 47), ("hide_icon", 48)]], + {"label": "Badge"}, + ), + 50: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {"label": "Badge list"}), + 51: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 52: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("label", 51), ("is_small", 52), ("color", 53), ("icon_class", 30), ("link", 54)]], + {"label": "Tag"}, + ), + 56: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tag list"}), + 57: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 51), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 64: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 30), + ("text", 61), + ("button", 62), + ("color", 63), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 65: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 66: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("text", 65), ("color", 63), ("size", 66)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 68: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 69: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 72: ( + "wagtail.blocks.StructBlock", + [[("image", 68), ("quote", 69), ("author_name", 70), ("author_title", 71), ("color", 63)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 73: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 74: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 75: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 76: ("wagtail.blocks.StructBlock", [[("title", 51), ("detail", 75)]], {"label": "Step"}), + 77: ("wagtail.blocks.StreamBlock", [[("step", 76)]], {"label": "Steps"}), + 78: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("total", 73), ("current", 74), ("steps", 77)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 80: ( + "wagtail.blocks.StreamBlock", + [[("badge", 49)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 82: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 83: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 84: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 85: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {}), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 86), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 90: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 91: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 92: ("wagtail.blocks.StreamBlock", [[("link", 91)]], {}), + 93: ( + "wagtail.blocks.StreamBlock", + [[("links", 92), ("buttons", 33)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 98: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 79), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 89), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 99: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 100: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 101: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 104: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 108: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 99), + ("image", 100), + ("link", 81), + ("top_detail_badges_tags", 88), + ("detail_text", 101), + ("is_small", 102), + ("grey_background", 103), + ("no_background", 104), + ("no_border", 105), + ("shadow", 106), + ("is_horizontal", 107), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 6), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 81), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 68), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="eventsindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("badges_list", 50), + ("tags_list", 56), + ("link", 57), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("stepper", 78), + ("card", 98), + ("tile", 108), + ("tabs", 137), + ("markdown", 138), + ("iframe", 139), + ("separator", 142), + ("multicolumns", 151), + ("item_grid", 154), + ("fullwidthbackground", 156), + ("fullwidthbackgroundwithsidemenu", 163), + ("subpageslist", 164), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("html", 165), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 29: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 30: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 31: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 32: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button"}, + ), + 33: ( + "wagtail.blocks.StreamBlock", + [[("button", 32)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 33)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 35: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.StructBlock", + [[("text", 28), ("cta_buttons", 34), ("cta_label", 35), ("cta_url", 36)]], + {"label": "Text and call to action"}, + ), + 38: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 39: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 42: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 43: ( + "wagtail.blocks.StructBlock", + [[("title", 41), ("content", 42)]], + {"label": "Transcription", "required": False}, + ), + 44: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 38), + ("caption", 7), + ("url", 39), + ("width", 5), + ("video_ratio", 40), + ("transcription", 43), + ] + ], + {"label": "Video"}, + ), + 45: ("wagtail.blocks.StructBlock", [[("title", 41), ("content", 42)]], {"label": "Transcription"}), + 46: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 47: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 48: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 49: ( + "wagtail.blocks.StructBlock", + [[("text", 46), ("color", 47), ("hide_icon", 48)]], + {"label": "Badge"}, + ), + 50: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {"label": "Badge list"}), + 51: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 52: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 53: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 54: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("label", 51), ("is_small", 52), ("color", 53), ("icon_class", 30), ("link", 54)]], + {"label": "Tag"}, + ), + 56: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tag list"}), + 57: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 58: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 59: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 58)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 60: ( + "wagtail.blocks.StreamBlock", + [[("title", 51), ("accordion", 59)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 61: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 29), + ("icon_class", 30), + ("icon_side", 31), + ] + ], + {"label": "Button", "required": False}, + ), + 63: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 64: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 30), + ("text", 61), + ("button", 62), + ("color", 63), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 65: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 66: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 67: ( + "wagtail.blocks.StructBlock", + [[("text", 65), ("color", 63), ("size", 66)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 68: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 69: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 72: ( + "wagtail.blocks.StructBlock", + [[("image", 68), ("quote", 69), ("author_name", 70), ("author_title", 71), ("color", 63)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 73: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 74: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 75: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 76: ("wagtail.blocks.StructBlock", [[("title", 51), ("detail", 75)]], {"label": "Step"}), + 77: ("wagtail.blocks.StreamBlock", [[("step", 76)]], {"label": "Steps"}), + 78: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("total", 73), ("current", 74), ("steps", 77)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 79: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 80: ( + "wagtail.blocks.StreamBlock", + [[("badge", 49)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 82: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 83: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 84: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 85: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 86: ("wagtail.blocks.StreamBlock", [[("badge", 49)]], {}), + 87: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {}), + 88: ( + "wagtail.blocks.StreamBlock", + [[("badges", 86), ("tags", 87)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 89: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 90: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 91: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 92: ("wagtail.blocks.StreamBlock", [[("link", 91)]], {}), + 93: ( + "wagtail.blocks.StreamBlock", + [[("links", 92), ("buttons", 33)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 94: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 98: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 79), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 89), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 99: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 100: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 101: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 103: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 104: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 108: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 99), + ("image", 100), + ("link", 81), + ("top_detail_badges_tags", 88), + ("detail_text", 101), + ("is_small", 102), + ("grey_background", 103), + ("no_background", 104), + ("no_border", 105), + ("shadow", 106), + ("is_horizontal", 107), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 51), + ("heading_tag", 26), + ("description", 61), + ("image", 68), + ("image_ratio", 6), + ("image_badge", 80), + ("link", 81), + ("url", 82), + ("document", 83), + ("top_detail_text", 84), + ("top_detail_icon", 85), + ("top_detail_badges_tags", 88), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 90), + ("call_to_action", 93), + ("grey_background", 94), + ("no_background", 95), + ("no_border", 96), + ("shadow", 97), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 129: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 130: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 131: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 133: ("wagtail.blocks.StreamBlock", [[("tag", 55)]], {"label": "Tags", "required": False}), + 134: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 128), + ("link", 81), + ("heading_tag", 2), + ("name", 129), + ("role", 130), + ("organization", 131), + ("contact_info", 132), + ("image", 68), + ("tags", 133), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 135: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Content"}, + ), + 136: ( + "wagtail.blocks.StructBlock", + [[("title", 51), ("content", 135)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 137: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 136)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 138: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 139: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 140: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 141: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 140), ("bottom_margin", 141)]], + {"group": "Page structure", "label": "Separator"}, + ), + 143: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 144: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 145: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Column content"}, + ), + 149: ( + "wagtail.blocks.StructBlock", + [[("width", 147), ("content", 148)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 150: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("column", 149), + ] + ], + {"label": "Columns"}, + ), + 151: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("bg_color", 145), + ("title", 1), + ("heading_tag", 146), + ("columns", 150), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 152: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 153: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("card", 127), + ("contact_card", 134), + ] + ], + {"label": "Items"}, + ), + 154: ( + "wagtail.blocks.StructBlock", + [[("column_width", 152), ("items", 153)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 155: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Content"}, + ), + 156: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 143), ("bg_color_class", 144), ("content", 155)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 157: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 109), + ("imageandtext", 22), + ("alert", 27), + ("text_cta", 37), + ("video", 44), + ("transcription", 45), + ("accordions", 60), + ("callout", 64), + ("highlight", 67), + ("quote", 72), + ("link", 57), + ("iframe", 114), + ("tile", 108), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("stepper", 78), + ("image_and_text", 22), + ("card", 98), + ("tabs", 137), + ("item_grid", 154), + ] + ], + {"label": "Main content"}, + ), + 158: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 159: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 160: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 161: ("wagtail.blocks.StructBlock", [[("page", 160)]], {"label": "Page tree"}), + 162: ( + "wagtail.blocks.StreamBlock", + [[("html", 159), ("pagetree", 161)]], + {"label": "Side menu content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 143), + ("bg_color_class", 144), + ("main_content", 157), + ("sidemenu_title", 158), + ("sidemenu_content", 162), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 164: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 165: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + }, + ), + ), + ] diff --git a/events/migrations/0013_alter_evententrypage_body_alter_eventsindexpage_body.py b/events/migrations/0013_alter_evententrypage_body_alter_eventsindexpage_body.py new file mode 100644 index 00000000..433f7267 --- /dev/null +++ b/events/migrations/0013_alter_evententrypage_body_alter_eventsindexpage_body.py @@ -0,0 +1,2860 @@ +# Generated by Django 5.1.4 on 2024-12-12 17:08 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("events", "0012_alter_evententrypage_body_alter_eventsindexpage_body"), + ] + + operations = [ + migrations.AlterField( + model_name="evententrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 152), + ("item_grid", 155), + ("fullwidthbackground", 157), + ("fullwidthbackgroundwithsidemenu", 164), + ("subpageslist", 165), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Column content"}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("width", 148), ("content", 149)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 151: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("column", 150), + ] + ], + {"label": "Columns"}, + ), + 152: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 151), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 153: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("column_width", 153), ("items", 154)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 156: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Content"}, + ), + 157: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 156)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Main content"}, + ), + 159: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 160: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 161: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 162: ("wagtail.blocks.StructBlock", [[("page", 161)]], {"label": "Page tree"}), + 163: ( + "wagtail.blocks.StreamBlock", + [[("html", 160), ("pagetree", 162)]], + {"label": "Side menu content"}, + ), + 164: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 158), + ("sidemenu_title", 159), + ("sidemenu_content", 163), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 165: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + }, + ), + ), + migrations.AlterField( + model_name="eventsindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 152), + ("item_grid", 155), + ("fullwidthbackground", 157), + ("fullwidthbackgroundwithsidemenu", 164), + ("subpageslist", 165), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Column content"}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("width", 148), ("content", 149)]], + {"group": "Page structure", "label": "Adjustable column"}, + ), + 151: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("column", 150), + ] + ], + {"label": "Columns"}, + ), + 152: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 151), + ] + ], + {"group": "Page structure", "label": "Multiple columns"}, + ), + 153: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("column_width", 153), ("items", 154)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 156: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Content"}, + ), + 157: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 156)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 155), + ] + ], + {"label": "Main content"}, + ), + 159: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 160: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 161: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 162: ("wagtail.blocks.StructBlock", [[("page", 161)]], {"label": "Page tree"}), + 163: ( + "wagtail.blocks.StreamBlock", + [[("html", 160), ("pagetree", 162)]], + {"label": "Side menu content"}, + ), + 164: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 158), + ("sidemenu_title", 159), + ("sidemenu_content", 163), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 165: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + }, + ), + ), + ] diff --git a/poetry.lock b/poetry.lock index 573648c0..3b180e8d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -128,17 +128,17 @@ webencodings = "*" [[package]] name = "boto3" -version = "1.35.77" +version = "1.35.79" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.77-py3-none-any.whl", hash = "sha256:a09871805f8e462349a1c33c23eb413668df0bf68424e61d53518e1a7d883b2f"}, - {file = "boto3-1.35.77.tar.gz", hash = "sha256:cc819cdbccbc2d0dc185f1dcfe74cf3809489c4cae63c2e5d6a557aa0c5ab928"}, + {file = "boto3-1.35.79-py3-none-any.whl", hash = "sha256:a673b0b6378c9ccbf045a31a43195b175e12aa5c37fb7635fcbfc8f48fb857b3"}, + {file = "boto3-1.35.79.tar.gz", hash = "sha256:1fa26217cd33ded82e55aed4460cd55f7223fa647916aa0d3c5d6828e6ec7135"}, ] [package.dependencies] -botocore = ">=1.35.77,<1.36.0" +botocore = ">=1.35.79,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -147,13 +147,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.77" +version = "1.35.79" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.77-py3-none-any.whl", hash = "sha256:3faa27d65841499762228902d7e215fa99a4c2fdc76c9113e1c3f339bdf685b8"}, - {file = "botocore-1.35.77.tar.gz", hash = "sha256:17b778016644e9342ca3ff2f430c1d1db0c6126e9b41a57cff52ac58e7a455e0"}, + {file = "botocore-1.35.79-py3-none-any.whl", hash = "sha256:e6b10bb9a357e3f5ca2e60f6dd15a85d311b9a476eb21b3c0c2a3b364a2897c8"}, + {file = "botocore-1.35.79.tar.gz", hash = "sha256:245bfdda1b1508539ddd1819c67a8a2cc81780adf0715d3de418d64c4247f346"}, ] [package.dependencies] @@ -499,13 +499,13 @@ sqlparse = ">=0.2" [[package]] name = "django-dsfr" -version = "1.4.3" +version = "1.4.4" description = "Integrate the French government Design System into a Django app" optional = false python-versions = "<4.0,>=3.8" files = [ - {file = "django_dsfr-1.4.3-py3-none-any.whl", hash = "sha256:7f30dc601137dd70ad0ba07b1c1d04009ba71976f82db26a3f1b64ce22c02fdf"}, - {file = "django_dsfr-1.4.3.tar.gz", hash = "sha256:f104b5554e35ab635e921587f854288a5a5382a66f37112bac6a6beeb415a728"}, + {file = "django_dsfr-1.4.4-py3-none-any.whl", hash = "sha256:b8ba3fd4b72c1a3ac52c82835035f8fbe6f83fd40f17aa2f73bdcee8805f7e3b"}, + {file = "django_dsfr-1.4.4.tar.gz", hash = "sha256:1b52811c1d71f813afdc36fdf45ed298cadb684d8fcc330ce2343328dfd46317"}, ] [package.dependencies] From 7b7698c0c26cf414a6d84c63110fb8604fe74f8e Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Tue, 17 Dec 2024 10:22:07 +0100 Subject: [PATCH 07/15] Update dependencies (#248) --- poetry.lock | 25 +++++++++++++------------ pyproject.toml | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3b180e8d..8f013396 100644 --- a/poetry.lock +++ b/poetry.lock @@ -128,17 +128,17 @@ webencodings = "*" [[package]] name = "boto3" -version = "1.35.79" +version = "1.35.82" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.79-py3-none-any.whl", hash = "sha256:a673b0b6378c9ccbf045a31a43195b175e12aa5c37fb7635fcbfc8f48fb857b3"}, - {file = "boto3-1.35.79.tar.gz", hash = "sha256:1fa26217cd33ded82e55aed4460cd55f7223fa647916aa0d3c5d6828e6ec7135"}, + {file = "boto3-1.35.82-py3-none-any.whl", hash = "sha256:c422b68ae76959b9e23b77eb79e41c3483332f7e1de918d2b083c456d8cf234c"}, + {file = "boto3-1.35.82.tar.gz", hash = "sha256:2bbaf1551b1ed55770cb437d7040f1abe6742601103695057b30ce6328eef286"}, ] [package.dependencies] -botocore = ">=1.35.79,<1.36.0" +botocore = ">=1.35.82,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -147,13 +147,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.79" +version = "1.35.82" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.79-py3-none-any.whl", hash = "sha256:e6b10bb9a357e3f5ca2e60f6dd15a85d311b9a476eb21b3c0c2a3b364a2897c8"}, - {file = "botocore-1.35.79.tar.gz", hash = "sha256:245bfdda1b1508539ddd1819c67a8a2cc81780adf0715d3de418d64c4247f346"}, + {file = "botocore-1.35.82-py3-none-any.whl", hash = "sha256:e43b97d8cbf19d35ce3a177f144bd97cc370f0a67d0984c7d7cf105ac198748f"}, + {file = "botocore-1.35.82.tar.gz", hash = "sha256:78dd7bf8f49616d00073698d7bbaf5a115208fe730b7b7afae4456adddb3552e"}, ] [package.dependencies] @@ -166,13 +166,13 @@ crt = ["awscrt (==0.22.0)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] @@ -728,12 +728,13 @@ lxml = ["lxml (>=4.2.0,<5)"] [[package]] name = "editorconfig" -version = "0.12.4" +version = "0.17.0" description = "EditorConfig File Locator and Interpreter for Python" optional = false python-versions = "*" files = [ - {file = "EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80"}, + {file = "EditorConfig-0.17.0-py3-none-any.whl", hash = "sha256:fe491719c5f65959ec00b167d07740e7ffec9a3f362038c72b289330b9991dfc"}, + {file = "editorconfig-0.17.0.tar.gz", hash = "sha256:8739052279699840065d3a9f5c125d7d5a98daeefe53b0e5274261d77cb49aa2"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 88d8bea5..331a6299 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires-python = ">=3.10" [tool.poetry] name = "content-manager" -version = "1.10.2" +version = "1.11.0" description = "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" authors = [ "Sébastien Reuiller ", From d0bab5904ff061452401107c07aa4de4e9af781a Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Thu, 19 Dec 2024 11:48:34 +0100 Subject: [PATCH 08/15] =?UTF-8?q?[i18n]=20Corrige=20une=20faute=20d?= =?UTF-8?q?=E2=80=99orthographe=20dans=20le=20gestionnaire=20d=E2=80=99?= =?UTF-8?q?=C3=A9tape=20en=20fran=C3=A7ais=20(#251)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix typo in stepper * Update version number --- .../locale/fr/LC_MESSAGES/django.mo | Bin 23868 -> 23864 bytes .../locale/fr/LC_MESSAGES/django.po | 4 ++-- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content_manager/locale/fr/LC_MESSAGES/django.mo b/content_manager/locale/fr/LC_MESSAGES/django.mo index 2ec859b669b02e9d776be78e78ef260a79ae0f51..2e23c5e65f6dd26b71501b71b2caa0b6baaefddb 100644 GIT binary patch delta 544 zcmXZZKP&@b9LDkAMQMtnbrcODAtXXlEiD6s#O6=Zs`?ibiCk=AkZ>J3T1;XvSfrDP zON2&93?k{!v7LlTVlYU|d|&t8aG&@2<-NNn@7))S+k$bG3)q7qGM5x-#eMYRF`9U) z^CbqzH&}x&dS1dHxs0{=i4FLJe)Ob7>M)2t>_YXO0c^vml-TmXBEw)3LyIEwn8r9> zU>0A|!i}`Z78bD@N0!{83G5`#qI$7~s#p%yz7yQTGweY#Bhrpz8QXnefq}_j8&&f| z4C9gBn8zye6RMMV*7FK>kiT{IFN;i*`*8*>95zI*@sa$#A~K5St0Ik9wppkn{lF&t zLe>0N8(eb>_2Dk_D5`yVR7LKv9*d}cT?J$Kh9PWOcYnmkBZ1lQbfmH^y3i* z@x;wnsFBN9k1uZj6+6gPY{V~Y#b0c}21}#~bqruXs_zVA2&XKu<(?u#V-k&dky%Wm zi5FPFH{8VRg2*~nunxx;ok1tChdhVs#W_@i9iUowjN5pMeHcoKgfWq_od+x$K^j}A zCf`E?58Z`D^pc-Y?ZmU&uVFX&$IaRje?=a`Y0Tk>N8}nG$RBBu7@jSQv|-hzP+R(m z?f8vqa&N{_M>WtO=Fvp8u83-oJ8Z@Zs-vr66yLE6!z<3wM36cDFOz%RtxJW@odN$? XZ^TT*q9tE^&G0>*=T}P`$x7f4c&beH diff --git a/content_manager/locale/fr/LC_MESSAGES/django.po b/content_manager/locale/fr/LC_MESSAGES/django.po index 109a2a12..14f0dd0e 100644 --- a/content_manager/locale/fr/LC_MESSAGES/django.po +++ b/content_manager/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-12-12 12:25+0100\n" -"PO-Revision-Date: 2024-12-12 17:54+0100\n" +"PO-Revision-Date: 2024-12-19 11:43+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -1354,7 +1354,7 @@ msgstr "Visibilité de la page restreinte" #: content_manager/templates/content_manager/blocks/stepper.html:8 #, python-format msgid "Step %(current_step)s of %(total_steps)s" -msgstr "Étape %(current_step)s suréta %(total_steps)s" +msgstr "Étape %(current_step)s sur %(total_steps)s" #: content_manager/templates/content_manager/blocks/tabs.html:3 msgid "Tabs group" diff --git a/pyproject.toml b/pyproject.toml index 331a6299..c734281e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires-python = ">=3.10" [tool.poetry] name = "content-manager" -version = "1.11.0" +version = "1.11.1" description = "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" authors = [ "Sébastien Reuiller ", From 56f0247e569911f1ee4341fa6196527183265914 Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 11:34:43 +0100 Subject: [PATCH 09/15] add missing paginator --- numerique_gouv/models.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/numerique_gouv/models.py b/numerique_gouv/models.py index 9293d401..5540c21a 100644 --- a/numerique_gouv/models.py +++ b/numerique_gouv/models.py @@ -1,3 +1,4 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from django.db import models from django.db.models import Case, IntegerField, QuerySet, Value, When from django.shortcuts import get_object_or_404, redirect @@ -497,7 +498,21 @@ def get_context(self, request, page_tag=None, major_area=None, organization=None if year: posts = posts.filter(date__year=year) - context["posts"] = posts.order_by("-date") + posts = posts.order_by("-date") + + # Pagination + page = request.GET.get("page") + page_size = self.posts_per_page + + paginator = Paginator(posts, page_size) # Show posts per page + try: + posts = paginator.page(page) + except PageNotAnInteger: + posts = paginator.page(1) + except EmptyPage: + posts = paginator.page(paginator.num_pages) + + context["posts"] = posts context["current_page_tag"] = page_tag context["current_major_area"] = major_area context["current_organization"] = organization From e86a4873888fadd0826090ac5f9cc6a3422289df Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 14:26:59 +0100 Subject: [PATCH 10/15] adds body to blog index page --- blog/models.py | 6 ++++++ .../templates/numerique_gouv/blog_index_page.html | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/blog/models.py b/blog/models.py index d7a60a2a..a1373eca 100644 --- a/blog/models.py +++ b/blog/models.py @@ -224,6 +224,12 @@ class BlogIndexPage(SitesFacilesBasePage): subpage_types = ["blog.BlogEntryPage"] + body = StreamField( + STREAMFIELD_COMMON_BLOCKS + STREAMFIELD_NUMERIQUE_BLOCKS, + blank=True, + use_json_field=True, + ) + class Meta: verbose_name = _("Blog index") diff --git a/numerique_gouv/templates/numerique_gouv/blog_index_page.html b/numerique_gouv/templates/numerique_gouv/blog_index_page.html index 7ec851e3..34bca96e 100644 --- a/numerique_gouv/templates/numerique_gouv/blog_index_page.html +++ b/numerique_gouv/templates/numerique_gouv/blog_index_page.html @@ -18,10 +18,9 @@

    {% if current_category.description %} {{ current_category.description|richtext }} - {% else %} - {{ page.body }} {% endif %} + {% if page.show_filters %}
    @@ -112,5 +111,7 @@

    {% translate "Filter organization" %}

    {% endif %} {% endif %}
    + + {{ page.body }} {% endblock content %} From a345b1c89e65008f5faac3738b5807151047a3e5 Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 11:34:43 +0100 Subject: [PATCH 11/15] add missing paginator --- numerique_gouv/models.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/numerique_gouv/models.py b/numerique_gouv/models.py index 9293d401..5540c21a 100644 --- a/numerique_gouv/models.py +++ b/numerique_gouv/models.py @@ -1,3 +1,4 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from django.db import models from django.db.models import Case, IntegerField, QuerySet, Value, When from django.shortcuts import get_object_or_404, redirect @@ -497,7 +498,21 @@ def get_context(self, request, page_tag=None, major_area=None, organization=None if year: posts = posts.filter(date__year=year) - context["posts"] = posts.order_by("-date") + posts = posts.order_by("-date") + + # Pagination + page = request.GET.get("page") + page_size = self.posts_per_page + + paginator = Paginator(posts, page_size) # Show posts per page + try: + posts = paginator.page(page) + except PageNotAnInteger: + posts = paginator.page(1) + except EmptyPage: + posts = paginator.page(paginator.num_pages) + + context["posts"] = posts context["current_page_tag"] = page_tag context["current_major_area"] = major_area context["current_organization"] = organization From 41dd3164e150e75d1ecae1196ce4fadb128e3476 Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 14:26:59 +0100 Subject: [PATCH 12/15] adds body to blog index page --- blog/models.py | 6 ++++++ .../templates/numerique_gouv/blog_index_page.html | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/blog/models.py b/blog/models.py index d7a60a2a..a1373eca 100644 --- a/blog/models.py +++ b/blog/models.py @@ -224,6 +224,12 @@ class BlogIndexPage(SitesFacilesBasePage): subpage_types = ["blog.BlogEntryPage"] + body = StreamField( + STREAMFIELD_COMMON_BLOCKS + STREAMFIELD_NUMERIQUE_BLOCKS, + blank=True, + use_json_field=True, + ) + class Meta: verbose_name = _("Blog index") diff --git a/numerique_gouv/templates/numerique_gouv/blog_index_page.html b/numerique_gouv/templates/numerique_gouv/blog_index_page.html index 7ec851e3..34bca96e 100644 --- a/numerique_gouv/templates/numerique_gouv/blog_index_page.html +++ b/numerique_gouv/templates/numerique_gouv/blog_index_page.html @@ -18,10 +18,9 @@

    {% if current_category.description %} {{ current_category.description|richtext }} - {% else %} - {{ page.body }} {% endif %} + {% if page.show_filters %}
    @@ -112,5 +111,7 @@

    {% translate "Filter organization" %}

    {% endif %} {% endif %}
    + + {{ page.body }} {% endblock content %} From 6ce57e34e10e9ad323c89791d1af74ae095338d2 Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 15:24:24 +0100 Subject: [PATCH 13/15] adds migration --- .../0055_alter_blogindexpage_body.py | 1892 +++++++++++++++++ 1 file changed, 1892 insertions(+) create mode 100644 blog/migrations/0055_alter_blogindexpage_body.py diff --git a/blog/migrations/0055_alter_blogindexpage_body.py b/blog/migrations/0055_alter_blogindexpage_body.py new file mode 100644 index 00000000..cc2c71eb --- /dev/null +++ b/blog/migrations/0055_alter_blogindexpage_body.py @@ -0,0 +1,1892 @@ +# Generated by Django 5.0.9 on 2024-12-20 13:56 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("blog", "0054_alter_blogentrypage_body"), + ] + + operations = [ + migrations.AlterField( + model_name="blogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 22), + ("alert", 27), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("video", 53), + ("transcription", 54), + ("badges_list", 59), + ("tags_list", 64), + ("link", 65), + ("stepper", 71), + ("card", 93), + ("tile", 103), + ("tabs", 130), + ("markdown", 131), + ("iframe", 132), + ("separator", 135), + ("multicolumns", 161), + ("item_grid", 163), + ("fullwidthbackground", 176), + ("fullwidthbackgroundwithsidemenu", 183), + ("subpageslist", 184), + ("blog_recent_entries", 167), + ("events_recent_entries", 186), + ("html", 187), + ("three_cards", 205), + ("numeric_direction_card", 206), + ("spacer", 170), + ("stylized_column", 159), + ("highlight_cards", 210), + ("vertical_highlight_cards", 212), + ("slider", 174), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 12: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 13: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 14: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 15: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 16: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 3), + ("image_side", 10), + ("image_ratio", 11), + ("text", 0), + ("link", 18), + ("link_label", 19), + ("page", 20), + ("link_url", 21), + ] + ], + {"label": "Image and text"}, + ), + 23: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 24: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 25: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 27: ( + "wagtail.blocks.StructBlock", + [[("title", 23), ("description", 24), ("level", 25), ("heading_tag", 26)]], + {"label": "Alert message"}, + ), + 28: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 30: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 29)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 31: ( + "wagtail.blocks.StreamBlock", + [[("title", 28), ("accordion", 30)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 32: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 33: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 34: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 35: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 36: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button", "required": False}, + ), + 37: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 26), + ("icon_class", 32), + ("text", 33), + ("button", 36), + ("color", 37), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 39: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 40: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 41: ( + "wagtail.blocks.StructBlock", + [[("text", 39), ("color", 37), ("size", 40)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 42: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 43: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 44: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 45: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 46: ( + "wagtail.blocks.StructBlock", + [[("image", 42), ("quote", 43), ("author_name", 44), ("author_title", 45), ("color", 37)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 48: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 49: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 50: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 51: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 52: ( + "wagtail.blocks.StructBlock", + [[("title", 50), ("content", 51)]], + {"label": "Transcription", "required": False}, + ), + 53: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 47), + ("caption", 7), + ("url", 48), + ("width", 5), + ("video_ratio", 49), + ("transcription", 52), + ] + ], + {"label": "Video"}, + ), + 54: ("wagtail.blocks.StructBlock", [[("title", 50), ("content", 51)]], {"label": "Transcription"}), + 55: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 56: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 57: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 58: ( + "wagtail.blocks.StructBlock", + [[("text", 55), ("color", 56), ("hide_icon", 57)]], + {"label": "Badge"}, + ), + 59: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {"label": "Badge list"}), + 60: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 61: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 62: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"required": False}, + ), + 63: ( + "wagtail.blocks.StructBlock", + [[("label", 28), ("is_small", 60), ("color", 61), ("icon_class", 32), ("link", 62)]], + {"label": "Tag"}, + ), + 64: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {"label": "Tag list"}), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("icon", 16), + ("size", 17), + ] + ], + {"label": "Single link"}, + ), + 66: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 67: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 68: ("wagtail.blocks.TextBlock", (), {"label": "Detail"}), + 69: ("wagtail.blocks.StructBlock", [[("title", 28), ("detail", 68)]], {"label": "Step"}), + 70: ("wagtail.blocks.StreamBlock", [[("step", 69)]], {"label": "Steps"}), + 71: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("total", 66), ("current", 67), ("steps", 70)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 72: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 73: ( + "wagtail.blocks.StreamBlock", + [[("badge", 58)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 74: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14)]], + {"label": "Link", "required": False}, + ), + 75: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 76: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 77: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 78: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 79: ("wagtail.blocks.StreamBlock", [[("badge", 58)]], {}), + 80: ("wagtail.blocks.StreamBlock", [[("tag", 63)]], {}), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badges", 79), ("tags", 80)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 82: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 83: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 84: ( + "wagtail.blocks.StructBlock", + [[("page", 12), ("document", 13), ("external_url", 14), ("text", 15)]], + {"label": "Link"}, + ), + 85: ("wagtail.blocks.StreamBlock", [[("link", 84)]], {}), + 86: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 12), + ("document", 13), + ("external_url", 14), + ("text", 15), + ("button_type", 34), + ("icon_class", 32), + ("icon_side", 35), + ] + ], + {"label": "Button"}, + ), + 87: ( + "wagtail.blocks.StreamBlock", + [[("button", 86)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 88: ( + "wagtail.blocks.StreamBlock", + [[("links", 85), ("buttons", 87)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 89: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 90: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 91: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 92: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 93: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 94: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 95: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 96: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with grey background", "required": False}), + 99: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 100: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 101: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 102: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 103: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 94), + ("image", 95), + ("link", 74), + ("top_detail_badges_tags", 81), + ("detail_text", 96), + ("is_small", 97), + ("grey_background", 98), + ("no_background", 99), + ("no_border", 100), + ("shadow", 101), + ("is_horizontal", 102), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 104: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 105: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 106: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 87)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 107: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 108: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 109: ( + "wagtail.blocks.StructBlock", + [[("text", 105), ("cta_buttons", 106), ("cta_label", 107), ("cta_url", 108)]], + {"label": "Text and call to action"}, + ), + 110: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 111: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 112: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 113: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 114: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "DSFR components", "label": "Iframe"}, + ), + 115: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 116: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 117: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 118: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 119: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 120: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 121: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 122: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 123: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 116), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 124: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 125: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 124), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 128: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ] + ], + {"label": "Content"}, + ), + 129: ( + "wagtail.blocks.StructBlock", + [[("title", 28), ("content", 128)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 130: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 129)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 131: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 132: ( + "wagtail.blocks.StructBlock", + [[("title", 110), ("url", 111), ("height", 112), ("parameters", 113)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 133: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 134: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 135: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 133), ("bottom_margin", 134)]], + {"group": "Page structure", "label": "Separator"}, + ), + 136: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 137: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 138: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 139: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 140: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 141: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 3.", + "label": "Heading size level", + "required": False, + }, + ), + 142: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Title color", + "required": False, + }, + ), + 143: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("heading_tag", 2), ("heading_size", 141), ("title_color_class", 142)]], + {"group": "Numerique components", "label": "Title"}, + ), + 144: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "required": False, + }, + ), + 145: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": True}), + 146: ("wagtail.blocks.CharBlock", (), {"label": "Alt text", "required": True}), + 147: ("wagtail.blocks.RichTextBlock", (), {"label": "Text", "required": True}), + 148: ("wagtail.blocks.PageChooserBlock", (), {"label": "Main link", "required": True}), + 149: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Secondary link", "required": False}, + ), + 150: ( + "wagtail.blocks.StructBlock", + [[("image", 145), ("alt", 146), ("text", 147), ("main_link", 148), ("secondary_link", 149)]], + {"group": "Numerique components", "label": "Numeric direction card", "required": False}, + ), + 151: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 152: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ] + ], + {"label": "Items"}, + ), + 153: ( + "wagtail.blocks.StructBlock", + [[("column_width", 151), ("items", 152)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 154: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("title", 143), + ("html", 144), + ("numeric_direction_card", 150), + ("horizontal_card", 93), + ("item_grid", 153), + ] + ], + {"label": "Column content"}, + ), + 155: ( + "wagtail.blocks.StructBlock", + [[("width", 140), ("content", 154)]], + {"group": "Page structure", "label": "Custom adjustable column", "required": False}, + ), + 156: ("wagtail.blocks.BooleanBlock", (), {"label": "Border", "required": False}), + 157: ("wagtail.blocks.BooleanBlock", (), {"label": "Center content", "required": False}), + 158: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("title", 143), + ("html", 144), + ("numeric_direction_card", 150), + ("horizontal_card", 93), + ("item_grid", 153), + ] + ], + {"label": "Content"}, + ), + 159: ( + "wagtail.blocks.StructBlock", + [[("bg_color_class", 137), ("border", 156), ("center_content", 157), ("content", 158)]], + {"group": "Numerique components", "label": "Stylized column"}, + ), + 160: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("column", 155), + ("html", 144), + ("numeric_direction_card", 150), + ("horizontal_card", 93), + ("stylized_column", 159), + ] + ], + {"group": "Page structure", "label": "Columns"}, + ), + 161: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 136), + ("bg_color_class", 137), + ("bg_color", 138), + ("title", 1), + ("heading_tag", 139), + ("columns", 160), + ] + ], + {"group": "Page structure", "label": "Multi columns"}, + ), + 162: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("title", 143), + ("html", 144), + ("numeric_direction_card", 150), + ("horizontal_card", 93), + ("item_grid", 153), + ] + ], + {"label": "Items"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [[("column_width", 151), ("items", 162)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 164: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["numerique_gouv.NumeriqueBlogIndexPage"]}, + ), + 165: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 12, + "min_value": 1, + "required": False, + }, + ), + 166: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("numerique_gouv.PageTag",), + {"label": "Filter by tag", "required": False}, + ), + 167: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("blog", 164), + ("entries_count", 165), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ("page_tag_filter", 166), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 168: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 136), + ("bg_color_class", 137), + ("bg_color", 138), + ("title", 1), + ("heading_tag", 139), + ("columns", 160), + ] + ], + {"group": "Page structure", "label": "Multi columns", "required": False}, + ), + 169: ( + "wagtail.blocks.DecimalBlock", + (), + {"help_text": "In rem", "label": "Margin", "required": False}, + ), + 170: ( + "wagtail.blocks.StructBlock", + [[("marginTop", 169)]], + {"group": "Page structure", "label": "Spacer"}, + ), + 171: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Title heading level", + "required": False, + }, + ), + 172: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 2.", + "label": "Title heading size level", + "required": False, + }, + ), + 173: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("card", 127), + ("title", 143), + ("html", 144), + ("numeric_direction_card", 150), + ("horizontal_card", 93), + ("item_grid", 153), + ] + ], + {"label": "Slider blocks"}, + ), + 174: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("title_heading_tag", 171), ("title_heading_size", 172), ("blocks", 173)]], + {"group": "Numerique components", "label": "Slider"}, + ), + 175: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 167), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 130), + ("item_grid", 153), + ("html", 144), + ("numeric_direction_card", 150), + ("custom_ajustable_column", 155), + ("horizontal_card", 93), + ("multicolumns", 168), + ("stylized_column", 159), + ("spacer", 170), + ("custom_item_grid", 163), + ("slider", 174), + ] + ], + {"label": "Content"}, + ), + 176: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 136), ("bg_color_class", 137), ("content", 175)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 177: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 104), + ("video", 53), + ("transcription", 54), + ("accordions", 31), + ("callout", 38), + ("highlight", 41), + ("quote", 46), + ("stepper", 71), + ("text_cta", 109), + ("link", 65), + ("iframe", 114), + ("tile", 103), + ("blog_recent_entries", 123), + ("events_recent_entries", 125), + ("image_and_text", 22), + ("card", 93), + ("tabs", 130), + ("item_grid", 153), + ] + ], + {"label": "Main content"}, + ), + 178: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 179: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 180: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 181: ("wagtail.blocks.StructBlock", [[("page", 180)]], {"label": "Page tree"}), + 182: ( + "wagtail.blocks.StreamBlock", + [[("html", 179), ("pagetree", 181)]], + {"label": "Side menu content"}, + ), + 183: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 136), + ("bg_color_class", 137), + ("main_content", 177), + ("sidemenu_title", 178), + ("sidemenu_content", 182), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 184: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 185: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["numerique_gouv.NumeriqueEventsIndexPage"]}, + ), + 186: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 115), + ("index_page", 185), + ("entries_count", 117), + ("category_filter", 118), + ("tag_filter", 119), + ("author_filter", 120), + ("source_filter", 121), + ("show_filters", 122), + ] + ], + {"group": "Website structure", "label": "custom Events recent entries"}, + ), + 187: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 188: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Main card image", "required": True}, + ), + 189: ("wagtail.blocks.TextBlock", (), {"label": "Main card title", "required": True}), + 190: ("wagtail.blocks.RichTextBlock", (), {"label": "Main card text", "required": True}), + 191: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Main card page link", "required": False}, + ), + 192: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Main card URL link", "required": False}, + ), + 193: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Top right card image", "required": False}, + ), + 194: ("wagtail.blocks.TextBlock", (), {"label": "Top right card title", "required": False}), + 195: ("wagtail.blocks.RichTextBlock", (), {"label": "Top right card text", "required": True}), + 196: ("wagtail.blocks.TextBlock", (), {"label": "Top right card button label", "required": False}), + 197: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Top right card page link", "required": False}, + ), + 198: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Top right card URL link", + "required": False, + }, + ), + 199: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Bottom right card image", "required": False}, + ), + 200: ("wagtail.blocks.TextBlock", (), {"label": "Bottom right card title", "required": False}), + 201: ("wagtail.blocks.RichTextBlock", (), {"label": "Bottom right card text", "required": True}), + 202: ( + "wagtail.blocks.TextBlock", + (), + {"label": "Bottom right card button label", "required": False}, + ), + 203: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Bottom right card page link", "required": False}, + ), + 204: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Bottom right card URL link", + "required": False, + }, + ), + 205: ( + "wagtail.blocks.StructBlock", + [ + [ + ("main_image", 188), + ("main_title", 189), + ("main_text", 190), + ("main_page_link", 191), + ("main_url_link", 192), + ("top_right_image", 193), + ("top_right_title", 194), + ("top_right_text", 195), + ("top_right_button_label", 196), + ("top_right_page_link", 197), + ("top_right_url_link", 198), + ("bottom_right_image", 199), + ("bottom_right_title", 200), + ("bottom_right_text", 201), + ("bottom_right_button_label", 202), + ("bottom_right_page_link", 203), + ("bottom_right_url_link", 204), + ] + ], + {"group": "Numerique components", "label": "Headline cards"}, + ), + 206: ( + "wagtail.blocks.StructBlock", + [[("image", 145), ("alt", 146), ("text", 147), ("main_link", 148), ("secondary_link", 149)]], + {"group": "Numerique components", "label": "Numeric direction card"}, + ), + 207: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 72), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 82), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 208: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"abel": "Secondary card", "group": "DSFR components", "lrequired": True}, + ), + 209: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"group": "DSFR components", "label": "Tertiary card", "required": True}, + ), + 210: ( + "wagtail.blocks.StructBlock", + [[("main_card", 207), ("secondary_card", 208), ("tertiary_card", 209)]], + {"group": "Numerique components", "label": "Highlight cards"}, + ), + 211: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 28), + ("heading_tag", 26), + ("description", 33), + ("image", 42), + ("image_ratio", 6), + ("image_badge", 73), + ("link", 74), + ("url", 75), + ("document", 76), + ("top_detail_text", 77), + ("top_detail_icon", 78), + ("top_detail_badges_tags", 81), + ("bottom_detail_text", 126), + ("bottom_detail_icon", 83), + ("call_to_action", 88), + ("grey_background", 89), + ("no_background", 90), + ("no_border", 91), + ("shadow", 92), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 212: ( + "wagtail.blocks.StructBlock", + [[("main_card", 211), ("secondary_card", 208), ("tertiary_card", 209)]], + {"group": "Numerique components", "label": "Vertical Highlight cards"}, + ), + }, + ), + ), + ] From 21409558940f29f180800693df439f5da3d235a6 Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 15:46:06 +0100 Subject: [PATCH 14/15] updates after merge --- blog/migrations/0056_merge_20241220_1543.py | 13 +++++++++++++ numerique_gouv/models.py | 1 + .../templates/numerique_gouv/blog_entry_page.html | 7 ++++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 blog/migrations/0056_merge_20241220_1543.py diff --git a/blog/migrations/0056_merge_20241220_1543.py b/blog/migrations/0056_merge_20241220_1543.py new file mode 100644 index 00000000..bebfa14d --- /dev/null +++ b/blog/migrations/0056_merge_20241220_1543.py @@ -0,0 +1,13 @@ +# Generated by Django 5.0.9 on 2024-12-20 14:43 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("blog", "0041_alter_blogentrypage_body_alter_blogindexpage_body_and_more"), + ("blog", "0055_alter_blogindexpage_body"), + ] + + operations = [] diff --git a/numerique_gouv/models.py b/numerique_gouv/models.py index 5540c21a..664608fe 100644 --- a/numerique_gouv/models.py +++ b/numerique_gouv/models.py @@ -27,6 +27,7 @@ class NumeriquePage(NumeriqueBasePage): "numerique_gouv.ProductsIndexPage", "numerique_gouv.NumeriqueEventsIndexPage", "numerique_gouv.SitemapPage", + "content_manager.CatalogIndexPage", ] class Meta: diff --git a/numerique_gouv/templates/numerique_gouv/blog_entry_page.html b/numerique_gouv/templates/numerique_gouv/blog_entry_page.html index 1b0226a8..6a9529bd 100644 --- a/numerique_gouv/templates/numerique_gouv/blog_entry_page.html +++ b/numerique_gouv/templates/numerique_gouv/blog_entry_page.html @@ -22,7 +22,12 @@ {% endif %}
    -

    {{ page.title }}

    + {% if not page.header_with_title %} +

    + {{ page.title }} + {% include "content_manager/blocks/page_visibility.html" %} +

    + {% endif %}

    Publié le {{ page.date |date:'l j F Y' }} {% if organizations %} From 165700a8f125c06b0168288a075dc3c274fcb861 Mon Sep 17 00:00:00 2001 From: Lucien Date: Fri, 20 Dec 2024 15:49:56 +0100 Subject: [PATCH 15/15] updates after merge --- ...entrypage_body_alter_blogindexpage_body.py | 3978 +++++++++++++++++ .../0088_alter_numeriquebasepage_body.py | 1996 +++++++++ 2 files changed, 5974 insertions(+) create mode 100644 blog/migrations/0057_alter_blogentrypage_body_alter_blogindexpage_body.py create mode 100644 numerique_gouv/migrations/0088_alter_numeriquebasepage_body.py diff --git a/blog/migrations/0057_alter_blogentrypage_body_alter_blogindexpage_body.py b/blog/migrations/0057_alter_blogentrypage_body_alter_blogindexpage_body.py new file mode 100644 index 00000000..3e638620 --- /dev/null +++ b/blog/migrations/0057_alter_blogentrypage_body_alter_blogindexpage_body.py @@ -0,0 +1,3978 @@ +# Generated by Django 5.0.9 on 2024-12-20 14:49 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("blog", "0056_merge_20241220_1543"), + ] + + operations = [ + migrations.AlterField( + model_name="blogentrypage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 169), + ("item_grid", 171), + ("fullwidthbackground", 184), + ("fullwidthbackgroundwithsidemenu", 191), + ("subpageslist", 192), + ("blog_recent_entries", 175), + ("events_recent_entries", 194), + ("three_cards", 212), + ("numeric_direction_card", 213), + ("spacer", 178), + ("stylized_column", 167), + ("highlight_cards", 217), + ("vertical_highlight_cards", 219), + ("slider", 182), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 150: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 3.", + "label": "Heading size level", + "required": False, + }, + ), + 151: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Title color", + "required": False, + }, + ), + 152: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("heading_tag", 2), ("heading_size", 150), ("title_color_class", 151)]], + {"group": "Numerique components", "label": "Title"}, + ), + 153: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": True}), + 154: ("wagtail.blocks.CharBlock", (), {"label": "Alt text", "required": True}), + 155: ("wagtail.blocks.RichTextBlock", (), {"label": "Text", "required": True}), + 156: ("wagtail.blocks.PageChooserBlock", (), {"label": "Main link", "required": True}), + 157: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Secondary link", "required": False}, + ), + 158: ( + "wagtail.blocks.StructBlock", + [[("image", 153), ("alt", 154), ("text", 155), ("main_link", 156), ("secondary_link", 157)]], + {"group": "Numerique components", "label": "Numeric direction card", "required": False}, + ), + 159: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 160: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 161: ( + "wagtail.blocks.StructBlock", + [[("column_width", 159), ("items", 160)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 162: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Column content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [[("width", 149), ("content", 162)]], + {"group": "Page structure", "label": "Custom adjustable column", "required": False}, + ), + 164: ("wagtail.blocks.BooleanBlock", (), {"label": "Border", "required": False}), + 165: ("wagtail.blocks.BooleanBlock", (), {"label": "Center content", "required": False}), + 166: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Content"}, + ), + 167: ( + "wagtail.blocks.StructBlock", + [[("bg_color_class", 145), ("border", 164), ("center_content", 165), ("content", 166)]], + {"group": "Numerique components", "label": "Stylized column"}, + ), + 168: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("column", 163), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("stylized_column", 167), + ] + ], + {"group": "Page structure", "label": "Columns"}, + ), + 169: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 168), + ] + ], + {"group": "Page structure", "label": "Multi columns"}, + ), + 170: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Items"}, + ), + 171: ( + "wagtail.blocks.StructBlock", + [[("column_width", 159), ("items", 170)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 172: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["numerique_gouv.NumeriqueBlogIndexPage"]}, + ), + 173: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 12, + "min_value": 1, + "required": False, + }, + ), + 174: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("numerique_gouv.PageTag",), + {"label": "Filter by tag", "required": False}, + ), + 175: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 172), + ("entries_count", 173), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ("page_tag_filter", 174), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 176: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 168), + ] + ], + {"group": "Page structure", "label": "Multi columns", "required": False}, + ), + 177: ( + "wagtail.blocks.DecimalBlock", + (), + {"help_text": "In rem", "label": "Margin", "required": False}, + ), + 178: ( + "wagtail.blocks.StructBlock", + [[("marginTop", 177)]], + {"group": "Page structure", "label": "Spacer"}, + ), + 179: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Title heading level", + "required": False, + }, + ), + 180: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 2.", + "label": "Title heading size level", + "required": False, + }, + ), + 181: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Slider blocks"}, + ), + 182: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("title_heading_tag", 179), ("title_heading_size", 180), ("blocks", 181)]], + {"group": "Numerique components", "label": "Slider"}, + ), + 183: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 175), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 161), + ("numeric_direction_card", 158), + ("custom_ajustable_column", 163), + ("horizontal_card", 99), + ("multicolumns", 176), + ("stylized_column", 167), + ("spacer", 178), + ("custom_item_grid", 171), + ("slider", 182), + ] + ], + {"label": "Content"}, + ), + 184: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 183)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 185: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 161), + ] + ], + {"label": "Main content"}, + ), + 186: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 187: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 188: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 189: ("wagtail.blocks.StructBlock", [[("page", 188)]], {"label": "Page tree"}), + 190: ( + "wagtail.blocks.StreamBlock", + [[("html", 187), ("pagetree", 189)]], + {"label": "Side menu content"}, + ), + 191: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 185), + ("sidemenu_title", 186), + ("sidemenu_content", 190), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 192: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 193: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["numerique_gouv.NumeriqueEventsIndexPage"]}, + ), + 194: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 193), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "custom Events recent entries"}, + ), + 195: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Main card image", "required": True}, + ), + 196: ("wagtail.blocks.TextBlock", (), {"label": "Main card title", "required": True}), + 197: ("wagtail.blocks.RichTextBlock", (), {"label": "Main card text", "required": True}), + 198: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Main card page link", "required": False}, + ), + 199: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Main card URL link", "required": False}, + ), + 200: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Top right card image", "required": False}, + ), + 201: ("wagtail.blocks.TextBlock", (), {"label": "Top right card title", "required": False}), + 202: ("wagtail.blocks.RichTextBlock", (), {"label": "Top right card text", "required": True}), + 203: ("wagtail.blocks.TextBlock", (), {"label": "Top right card button label", "required": False}), + 204: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Top right card page link", "required": False}, + ), + 205: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Top right card URL link", + "required": False, + }, + ), + 206: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Bottom right card image", "required": False}, + ), + 207: ("wagtail.blocks.TextBlock", (), {"label": "Bottom right card title", "required": False}), + 208: ("wagtail.blocks.RichTextBlock", (), {"label": "Bottom right card text", "required": True}), + 209: ( + "wagtail.blocks.TextBlock", + (), + {"label": "Bottom right card button label", "required": False}, + ), + 210: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Bottom right card page link", "required": False}, + ), + 211: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Bottom right card URL link", + "required": False, + }, + ), + 212: ( + "wagtail.blocks.StructBlock", + [ + [ + ("main_image", 195), + ("main_title", 196), + ("main_text", 197), + ("main_page_link", 198), + ("main_url_link", 199), + ("top_right_image", 200), + ("top_right_title", 201), + ("top_right_text", 202), + ("top_right_button_label", 203), + ("top_right_page_link", 204), + ("top_right_url_link", 205), + ("bottom_right_image", 206), + ("bottom_right_title", 207), + ("bottom_right_text", 208), + ("bottom_right_button_label", 209), + ("bottom_right_page_link", 210), + ("bottom_right_url_link", 211), + ] + ], + {"group": "Numerique components", "label": "Headline cards"}, + ), + 213: ( + "wagtail.blocks.StructBlock", + [[("image", 153), ("alt", 154), ("text", 155), ("main_link", 156), ("secondary_link", 157)]], + {"group": "Numerique components", "label": "Numeric direction card"}, + ), + 214: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 215: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Secondary card", "group": "DSFR components", "lrequired": True}, + ), + 216: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Tertiary card", "required": True}, + ), + 217: ( + "wagtail.blocks.StructBlock", + [[("main_card", 214), ("secondary_card", 215), ("tertiary_card", 216)]], + {"group": "Numerique components", "label": "Highlight cards"}, + ), + 218: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 219: ( + "wagtail.blocks.StructBlock", + [[("main_card", 218), ("secondary_card", 215), ("tertiary_card", 216)]], + {"group": "Numerique components", "label": "Vertical Highlight cards"}, + ), + }, + ), + ), + migrations.AlterField( + model_name="blogindexpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 169), + ("item_grid", 171), + ("fullwidthbackground", 184), + ("fullwidthbackgroundwithsidemenu", 191), + ("subpageslist", 192), + ("blog_recent_entries", 175), + ("events_recent_entries", 194), + ("three_cards", 212), + ("numeric_direction_card", 213), + ("spacer", 178), + ("stylized_column", 167), + ("highlight_cards", 217), + ("vertical_highlight_cards", 219), + ("slider", 182), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 150: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 3.", + "label": "Heading size level", + "required": False, + }, + ), + 151: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Title color", + "required": False, + }, + ), + 152: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("heading_tag", 2), ("heading_size", 150), ("title_color_class", 151)]], + {"group": "Numerique components", "label": "Title"}, + ), + 153: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": True}), + 154: ("wagtail.blocks.CharBlock", (), {"label": "Alt text", "required": True}), + 155: ("wagtail.blocks.RichTextBlock", (), {"label": "Text", "required": True}), + 156: ("wagtail.blocks.PageChooserBlock", (), {"label": "Main link", "required": True}), + 157: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Secondary link", "required": False}, + ), + 158: ( + "wagtail.blocks.StructBlock", + [[("image", 153), ("alt", 154), ("text", 155), ("main_link", 156), ("secondary_link", 157)]], + {"group": "Numerique components", "label": "Numeric direction card", "required": False}, + ), + 159: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 160: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 161: ( + "wagtail.blocks.StructBlock", + [[("column_width", 159), ("items", 160)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 162: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Column content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [[("width", 149), ("content", 162)]], + {"group": "Page structure", "label": "Custom adjustable column", "required": False}, + ), + 164: ("wagtail.blocks.BooleanBlock", (), {"label": "Border", "required": False}), + 165: ("wagtail.blocks.BooleanBlock", (), {"label": "Center content", "required": False}), + 166: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Content"}, + ), + 167: ( + "wagtail.blocks.StructBlock", + [[("bg_color_class", 145), ("border", 164), ("center_content", 165), ("content", 166)]], + {"group": "Numerique components", "label": "Stylized column"}, + ), + 168: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("column", 163), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("stylized_column", 167), + ] + ], + {"group": "Page structure", "label": "Columns"}, + ), + 169: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 168), + ] + ], + {"group": "Page structure", "label": "Multi columns"}, + ), + 170: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Items"}, + ), + 171: ( + "wagtail.blocks.StructBlock", + [[("column_width", 159), ("items", 170)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 172: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["numerique_gouv.NumeriqueBlogIndexPage"]}, + ), + 173: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 12, + "min_value": 1, + "required": False, + }, + ), + 174: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("numerique_gouv.PageTag",), + {"label": "Filter by tag", "required": False}, + ), + 175: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 172), + ("entries_count", 173), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ("page_tag_filter", 174), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 176: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 168), + ] + ], + {"group": "Page structure", "label": "Multi columns", "required": False}, + ), + 177: ( + "wagtail.blocks.DecimalBlock", + (), + {"help_text": "In rem", "label": "Margin", "required": False}, + ), + 178: ( + "wagtail.blocks.StructBlock", + [[("marginTop", 177)]], + {"group": "Page structure", "label": "Spacer"}, + ), + 179: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Title heading level", + "required": False, + }, + ), + 180: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 2.", + "label": "Title heading size level", + "required": False, + }, + ), + 181: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Slider blocks"}, + ), + 182: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("title_heading_tag", 179), ("title_heading_size", 180), ("blocks", 181)]], + {"group": "Numerique components", "label": "Slider"}, + ), + 183: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 175), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 161), + ("numeric_direction_card", 158), + ("custom_ajustable_column", 163), + ("horizontal_card", 99), + ("multicolumns", 176), + ("stylized_column", 167), + ("spacer", 178), + ("custom_item_grid", 171), + ("slider", 182), + ] + ], + {"label": "Content"}, + ), + 184: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 183)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 185: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 161), + ] + ], + {"label": "Main content"}, + ), + 186: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 187: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 188: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 189: ("wagtail.blocks.StructBlock", [[("page", 188)]], {"label": "Page tree"}), + 190: ( + "wagtail.blocks.StreamBlock", + [[("html", 187), ("pagetree", 189)]], + {"label": "Side menu content"}, + ), + 191: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 185), + ("sidemenu_title", 186), + ("sidemenu_content", 190), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 192: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 193: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["numerique_gouv.NumeriqueEventsIndexPage"]}, + ), + 194: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 193), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "custom Events recent entries"}, + ), + 195: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Main card image", "required": True}, + ), + 196: ("wagtail.blocks.TextBlock", (), {"label": "Main card title", "required": True}), + 197: ("wagtail.blocks.RichTextBlock", (), {"label": "Main card text", "required": True}), + 198: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Main card page link", "required": False}, + ), + 199: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Main card URL link", "required": False}, + ), + 200: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Top right card image", "required": False}, + ), + 201: ("wagtail.blocks.TextBlock", (), {"label": "Top right card title", "required": False}), + 202: ("wagtail.blocks.RichTextBlock", (), {"label": "Top right card text", "required": True}), + 203: ("wagtail.blocks.TextBlock", (), {"label": "Top right card button label", "required": False}), + 204: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Top right card page link", "required": False}, + ), + 205: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Top right card URL link", + "required": False, + }, + ), + 206: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Bottom right card image", "required": False}, + ), + 207: ("wagtail.blocks.TextBlock", (), {"label": "Bottom right card title", "required": False}), + 208: ("wagtail.blocks.RichTextBlock", (), {"label": "Bottom right card text", "required": True}), + 209: ( + "wagtail.blocks.TextBlock", + (), + {"label": "Bottom right card button label", "required": False}, + ), + 210: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Bottom right card page link", "required": False}, + ), + 211: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Bottom right card URL link", + "required": False, + }, + ), + 212: ( + "wagtail.blocks.StructBlock", + [ + [ + ("main_image", 195), + ("main_title", 196), + ("main_text", 197), + ("main_page_link", 198), + ("main_url_link", 199), + ("top_right_image", 200), + ("top_right_title", 201), + ("top_right_text", 202), + ("top_right_button_label", 203), + ("top_right_page_link", 204), + ("top_right_url_link", 205), + ("bottom_right_image", 206), + ("bottom_right_title", 207), + ("bottom_right_text", 208), + ("bottom_right_button_label", 209), + ("bottom_right_page_link", 210), + ("bottom_right_url_link", 211), + ] + ], + {"group": "Numerique components", "label": "Headline cards"}, + ), + 213: ( + "wagtail.blocks.StructBlock", + [[("image", 153), ("alt", 154), ("text", 155), ("main_link", 156), ("secondary_link", 157)]], + {"group": "Numerique components", "label": "Numeric direction card"}, + ), + 214: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 215: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Secondary card", "group": "DSFR components", "lrequired": True}, + ), + 216: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Tertiary card", "required": True}, + ), + 217: ( + "wagtail.blocks.StructBlock", + [[("main_card", 214), ("secondary_card", 215), ("tertiary_card", 216)]], + {"group": "Numerique components", "label": "Highlight cards"}, + ), + 218: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 219: ( + "wagtail.blocks.StructBlock", + [[("main_card", 218), ("secondary_card", 215), ("tertiary_card", 216)]], + {"group": "Numerique components", "label": "Vertical Highlight cards"}, + ), + }, + ), + ), + ] diff --git a/numerique_gouv/migrations/0088_alter_numeriquebasepage_body.py b/numerique_gouv/migrations/0088_alter_numeriquebasepage_body.py new file mode 100644 index 00000000..1cbc9ed4 --- /dev/null +++ b/numerique_gouv/migrations/0088_alter_numeriquebasepage_body.py @@ -0,0 +1,1996 @@ +# Generated by Django 5.0.9 on 2024-12-20 14:49 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("numerique_gouv", "0087_alter_offersentrypage_text_and_cta"), + ] + + operations = [ + migrations.AlterField( + model_name="numeriquebasepage", + name="body", + field=wagtail.fields.StreamField( + [ + ("paragraph", 0), + ("image", 9), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("link", 58), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("stepper", 79), + ("card", 99), + ("tile", 109), + ("tabs", 143), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("multicolumns", 169), + ("item_grid", 171), + ("fullwidthbackground", 184), + ("fullwidthbackgroundwithsidemenu", 191), + ("subpageslist", 192), + ("blog_recent_entries", 175), + ("events_recent_entries", 194), + ("three_cards", 212), + ("numeric_direction_card", 213), + ("spacer", 178), + ("stylized_column", 167), + ("highlight_cards", 217), + ("vertical_highlight_cards", 219), + ("slider", 182), + ], + blank=True, + block_lookup={ + 0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text"}), + 1: ("wagtail.blocks.CharBlock", (), {"label": "Title", "required": False}), + 2: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + "required": False, + }, + ), + 3: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image"}), + 4: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Alternative text (textual description of the image)", "required": False}, + ), + 5: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-content-media--sm", "Small"), + ("", "Medium"), + ("fr-content-media--lg", "Large"), + ], + "label": "Witdh", + "required": False, + }, + ), + 6: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-ratio-32x9", "32x9"), + ("fr-ratio-16x9", "16x9"), + ("fr-ratio-3x2", "3x2"), + ("fr-ratio-4x3", "4x3"), + ("fr-ratio-1x1", "1x1"), + ("fr-ratio-3x4", "3x4"), + ("fr-ratio-2x3", "2x3"), + ], + "label": "Image ratio", + "required": False, + }, + ), + 7: ("wagtail.blocks.CharBlock", (), {"label": "Caption", "required": False}), + 8: ("wagtail.blocks.URLBlock", (), {"label": "Link", "required": False}), + 9: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {}, + ), + 10: ("wagtail.images.blocks.ImageBlock", [], {"label": "Image"}), + 11: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("left", "Left"), ("right", "Right")], + "label": "Side where the image is displayed", + }, + ), + 12: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("5", "5/12"), ("6", "6/12")], "label": "Image width"}, + ), + 13: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "help_text": "Link to a page of this site. Use either this, the document, or the external URL parameter.", + "label": "Page", + "required": False, + }, + ), + 14: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "help_text": "Use either this, the external URL or the page parameter.", + "label": "Document", + "required": False, + }, + ), + 15: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use either this, the document or the page parameter.", + "label": "External URL", + "required": False, + }, + ), + 16: ("wagtail.blocks.CharBlock", (), {"label": "Link label", "required": False}), + 17: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", "No icon"), + ("fr-icon-arrow-right-line fr-link--icon-right", "Icon on the right side"), + ("fr-icon-arrow-right-line fr-link--icon-left", "Icon on the left side"), + ], + "help_text": "Only used for internal links.", + "label": "Icon", + "required": False, + }, + ), + 18: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-link--sm", "Small"), ("", "Medium"), ("fr-link--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 19: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + { + "help_text": "The link is shown at the bottom of the text block, with an arrow", + "label": "Link", + "required": False, + }, + ), + 20: ( + "wagtail.blocks.CharBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link label (obsolete)", + "required": False, + }, + ), + 21: ( + "wagtail.blocks.PageChooserBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Internal link (obsolete)", + "required": False, + }, + ), + 22: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "obsolete", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link URL (obsolete)", + "required": False, + }, + ), + 23: ( + "wagtail.blocks.StructBlock", + [ + [ + ("image", 10), + ("image_side", 11), + ("image_ratio", 12), + ("text", 0), + ("link", 19), + ("link_label", 20), + ("page", 21), + ("link_url", 22), + ] + ], + {"label": "Image and text"}, + ), + 24: ("wagtail.blocks.CharBlock", (), {"label": "Message title", "required": False}), + 25: ("wagtail.blocks.TextBlock", (), {"label": "Message text", "required": False}), + 26: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("error", "Error"), + ("success", "Success"), + ("info", "Information"), + ("warning", "Warning"), + ], + "label": "Message type", + }, + ), + 27: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 3.", + "label": "Heading level", + }, + ), + 28: ( + "wagtail.blocks.StructBlock", + [[("title", 24), ("description", 25), ("level", 26), ("heading_tag", 27)]], + {"label": "Alert message"}, + ), + 29: ("wagtail.blocks.RichTextBlock", (), {"label": "Rich text", "required": False}), + 30: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("fr-btn", "Primary"), + ("fr-btn fr-btn--secondary", "Secundary"), + ("fr-btn fr-btn--tertiary", "Tertiary"), + ("fr-btn fr-btn--tertiary-no-outline", "Tertiary without border"), + ], + "label": "Button type", + "required": False, + }, + ), + 31: ("content_manager.blocks.IconPickerBlock", (), {"label": "Icon", "required": False}), + 32: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-btn--icon-left", "Left"), ("fr-btn--icon-right", "Right")], + "label": "Icon side", + "required": False, + }, + ), + 33: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button"}, + ), + 34: ( + "wagtail.blocks.StreamBlock", + [[("button", 33)]], + { + "help_text": "Please use only one primary button.\n If you use icons, use them on all buttons and align them on the same side.", + "label": "Buttons", + }, + ), + 35: ( + "wagtail.blocks.StreamBlock", + [[("buttons", 34)]], + {"label": "Call-to-action buttons", "max_num": 1, "required": False}, + ), + 36: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Call to action label (obsolete)", + "required": False, + }, + ), + 37: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the CTA buttons above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 38: ( + "wagtail.blocks.StructBlock", + [[("text", 29), ("cta_buttons", 35), ("cta_label", 36), ("cta_url", 37)]], + {"label": "Text and call to action"}, + ), + 39: ("wagtail.blocks.CharBlock", (), {"label": "Video title", "required": False}), + 40: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Use embed format, with a version that doesn't require a consent banner if available. (e.g. : https://www.youtube-nocookie.com/embed/gLzXOViPX-0) For Youtube, use Embed video and check Enable privacy-enhanced mode.", + "label": "Video URL", + }, + ), + 41: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-ratio-16x9", "16x9"), ("fr-ratio-4x3", "4x3"), ("fr-ratio-1x1", "1x1")], + "label": "Video ratio", + "required": False, + }, + ), + 42: ( + "wagtail.blocks.CharBlock", + (), + {"default": "Transcription", "label": "Title", "required": False}, + ), + 43: ("wagtail.blocks.RichTextBlock", (), {"label": "Transcription content", "required": False}), + 44: ( + "wagtail.blocks.StructBlock", + [[("title", 42), ("content", 43)]], + {"label": "Transcription", "required": False}, + ), + 45: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 39), + ("caption", 7), + ("url", 40), + ("width", 5), + ("video_ratio", 41), + ("transcription", 44), + ] + ], + {"label": "Video"}, + ), + 46: ("wagtail.blocks.StructBlock", [[("title", 42), ("content", 43)]], {"label": "Transcription"}), + 47: ("wagtail.blocks.CharBlock", (), {"label": "Badge label", "required": False}), + 48: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("", [("new", "New"), ("grey", "Grey")]), + ( + "System colors", + [ + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("error", "Error"), + ], + ), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "label": "Badge color", + "required": False, + }, + ), + 49: ("wagtail.blocks.BooleanBlock", (), {"label": "Hide badge icon", "required": False}), + 50: ( + "wagtail.blocks.StructBlock", + [[("text", 47), ("color", 48), ("hide_icon", 49)]], + {"label": "Badge"}, + ), + 51: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {"label": "Badge list"}), + 52: ("wagtail.blocks.CharBlock", (), {"label": "Title"}), + 53: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tag", "required": False}), + 54: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "help_text": "Only for clickable tags", + "label": "Tag color", + "required": False, + }, + ), + 55: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"required": False}, + ), + 56: ( + "wagtail.blocks.StructBlock", + [[("label", 52), ("is_small", 53), ("color", 54), ("icon_class", 31), ("link", 55)]], + {"label": "Tag"}, + ), + 57: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tag list"}), + 58: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("icon", 17), + ("size", 18), + ] + ], + {"label": "Single link"}, + ), + 59: ("wagtail.blocks.RichTextBlock", (), {"label": "Content"}), + 60: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 59)]], + {"label": "Accordion", "max_num": 15, "min_num": 1}, + ), + 61: ( + "wagtail.blocks.StreamBlock", + [[("title", 52), ("accordion", 60)]], + {"group": "DSFR components", "label": "Accordions"}, + ), + 62: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + "required": False, + }, + ), + 63: ( + "wagtail.blocks.StructBlock", + [ + [ + ("page", 13), + ("document", 14), + ("external_url", 15), + ("text", 16), + ("button_type", 30), + ("icon_class", 31), + ("icon_side", 32), + ] + ], + {"label": "Button", "required": False}, + ), + 64: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + "label": "Color", + "required": False, + }, + ), + 65: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 27), + ("icon_class", 31), + ("text", 62), + ("button", 63), + ("color", 64), + ] + ], + {"group": "DSFR components", "label": "Callout"}, + ), + 66: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": [ + "bold", + "italic", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + ], + "label": "Content", + }, + ), + 67: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-text--sm", "Small"), ("", "Medium"), ("fr-text--lg", "Large")], + "label": "Size", + "required": False, + }, + ), + 68: ( + "wagtail.blocks.StructBlock", + [[("text", 66), ("color", 64), ("size", 67)]], + {"group": "DSFR components", "label": "Highlight"}, + ), + 69: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": False}), + 70: ("wagtail.blocks.CharBlock", (), {"label": "Quote"}), + 71: ("wagtail.blocks.CharBlock", (), {"label": "Author name", "required": False}), + 72: ("wagtail.blocks.CharBlock", (), {"label": "Author title", "required": False}), + 73: ( + "wagtail.blocks.StructBlock", + [[("image", 69), ("quote", 70), ("author_name", 71), ("author_title", 72), ("color", 64)]], + {"group": "DSFR components", "label": "Quote"}, + ), + 74: ( + "wagtail.blocks.IntegerBlock", + (), + {"label": "Number of steps", "max_value": 8, "min_value": 1}, + ), + 75: ("wagtail.blocks.IntegerBlock", (), {"label": "Current step", "max_value": 8, "min_value": 1}), + 76: ("wagtail.blocks.TextBlock", (), {"label": "Detail", "required": False}), + 77: ("wagtail.blocks.StructBlock", [[("title", 52), ("detail", 76)]], {"label": "Step"}), + 78: ("wagtail.blocks.StreamBlock", [[("step", 77)]], {"label": "Steps"}), + 79: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("total", 74), ("current", 75), ("steps", 78)]], + {"group": "DSFR components", "label": "Stepper"}, + ), + 80: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [("fr-card--horizontal-tier", "1/3"), ("fr-card--horizontal-half", "50/50")], + "label": "Image ratio", + "required": False, + }, + ), + 81: ( + "wagtail.blocks.StreamBlock", + [[("badge", 50)]], + { + "help_text": "Only used if the card has an image.", + "label": "Image area badge", + "max_num": 1, + "required": False, + }, + ), + 82: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15)]], + {"label": "Link", "required": False}, + ), + 83: ( + "wagtail.blocks.URLBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "Link (obsolete)", + "required": False, + }, + ), + 84: ( + "wagtail.documents.blocks.DocumentChooserBlock", + (), + { + "group": "target", + "help_text": "This field is obsolete and will be removed in the near future. Please replace with the Link field above.", + "label": "or Document (obsolete)", + "required": False, + }, + ), + 85: ("wagtail.blocks.CharBlock", (), {"label": "Top detail: text", "required": False}), + 86: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Top detail: icon", "required": False}, + ), + 87: ("wagtail.blocks.StreamBlock", [[("badge", 50)]], {}), + 88: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {}), + 89: ( + "wagtail.blocks.StreamBlock", + [[("badges", 87), ("tags", 88)]], + {"label": "Top detail: badges or tags", "max_num": 1, "required": False}, + ), + 90: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action. If the card links to a downloadable document, the values are pre-filled.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 91: ( + "content_manager.blocks.IconPickerBlock", + (), + {"label": "Bottom detail: icon", "required": False}, + ), + 92: ( + "wagtail.blocks.StructBlock", + [[("page", 13), ("document", 14), ("external_url", 15), ("text", 16)]], + {"label": "Link"}, + ), + 93: ("wagtail.blocks.StreamBlock", [[("link", 92)]], {}), + 94: ( + "wagtail.blocks.StreamBlock", + [[("links", 93), ("buttons", 34)]], + { + "help_text": "Incompatible with the bottom detail text.", + "label": "Bottom call-to-action: links or buttons", + "max_num": 1, + "required": False, + }, + ), + 95: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with grey background", "required": False}), + 96: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without background", "required": False}), + 97: ("wagtail.blocks.BooleanBlock", (), {"label": "Card without border", "required": False}), + 98: ("wagtail.blocks.BooleanBlock", (), {"label": "Card with a shadow", "required": False}), + 99: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Horizontal card"}, + ), + 100: ( + "wagtail.blocks.RichTextBlock", + (), + { + "features": ["bold", "italic", "superscript", "subscript", "strikethrough"], + "label": "Content", + "required": False, + }, + ), + 101: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"help_text": "Prefer SVG files.", "label": "Image", "required": False}, + ), + 102: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "If the tile links to a downloadable document, the values are pre-filled.", + "label": "Detail text", + "required": False, + }, + ), + 103: ("wagtail.blocks.BooleanBlock", (), {"label": "Small tile", "required": False}), + 104: ( + "wagtail.blocks.BooleanBlock", + (), + {"label": "Tile with grey background", "required": False}, + ), + 105: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without background", "required": False}), + 106: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile without border", "required": False}), + 107: ("wagtail.blocks.BooleanBlock", (), {"label": "Tile with a shadow", "required": False}), + 108: ("wagtail.blocks.BooleanBlock", (), {"label": "Horizontal tile", "required": False}), + 109: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 100), + ("image", 101), + ("link", 82), + ("top_detail_badges_tags", 89), + ("detail_text", 102), + ("is_small", 103), + ("grey_background", 104), + ("no_background", 105), + ("no_border", 106), + ("shadow", 107), + ("is_horizontal", 108), + ] + ], + {"group": "DSFR components", "label": "Tile"}, + ), + 110: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 2), + ("image", 3), + ("alt", 4), + ("width", 5), + ("image_ratio", 6), + ("caption", 7), + ("url", 8), + ] + ], + {"label": "Image"}, + ), + 111: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 112: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["blog.BlogIndexPage"]}, + ), + 113: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 8, + "min_value": 1, + "required": False, + }, + ), + 114: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Category",), + {"label": "Filter by category", "required": False}, + ), + 115: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("content_manager.Tag",), + {"label": "Filter by tag", "required": False}, + ), + 116: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + {"label": "Filter by author", "required": False}, + ), + 117: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Organization",), + { + "help_text": "The source is the organization of the post author", + "label": "Filter by source", + "required": False, + }, + ), + 118: ( + "wagtail.blocks.BooleanBlock", + (), + {"default": False, "label": "Show filters", "required": False}, + ), + 119: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 112), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 120: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["events.EventsIndexPage"]}, + ), + 121: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 120), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "Event calendar recent entries"}, + ), + 122: ("wagtailmarkdown.blocks.MarkdownBlock", (), {"group": "Expert syntax", "label": "Markdown"}), + 123: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Accessibility: The title should describe, in a clear and concise manner, the embedded content.", + "label": "Title", + }, + ), + 124: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Example for Tally: https://tally.so/embed/w2jMRa", + "label": "URL of the iframe", + }, + ), + 125: ("wagtail.blocks.IntegerBlock", (), {"label": "Height (in pixels)"}), + 126: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "For example: \"allow='geolocation'\".", + "label": "Parameters", + "required": False, + }, + ), + 127: ( + "wagtail.blocks.StructBlock", + [[("title", 123), ("url", 124), ("height", 125), ("parameters", 126)]], + {"group": "Expert syntax", "label": "Iframe"}, + ), + 128: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "readonly": True, + }, + ), + 129: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Top margin", "max_value": 15, "min_value": 0}, + ), + 130: ( + "wagtail.blocks.IntegerBlock", + (), + {"default": 3, "label": "Bottom margin", "max_value": 15, "min_value": 0}, + ), + 131: ( + "wagtail.blocks.StructBlock", + [[("top_margin", 129), ("bottom_margin", 130)]], + {"group": "Page structure", "label": "Separator"}, + ), + 132: ( + "wagtail.blocks.CharBlock", + (), + { + "help_text": "Incompatible with the bottom call-to-action.", + "label": "Bottom detail: text", + "required": False, + }, + ), + 133: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Vertical card"}, + ), + 134: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("blog.Person",), + { + "help_text": "Optional, all values can be manually specified or overriden below", + "label": "Person", + "required": False, + }, + ), + 135: ("wagtail.blocks.CharBlock", (), {"label": "Name", "max_length": 255, "required": False}), + 136: ("wagtail.blocks.CharBlock", (), {"label": "Role", "max_length": 255, "required": False}), + 137: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Organization", "max_length": 255, "required": False}, + ), + 138: ( + "wagtail.blocks.CharBlock", + (), + {"label": "Contact info", "max_length": 500, "required": False}, + ), + 139: ("wagtail.blocks.StreamBlock", [[("tag", 56)]], {"label": "Tags", "required": False}), + 140: ( + "wagtail.blocks.StructBlock", + [ + [ + ("contact", 134), + ("link", 82), + ("heading_tag", 2), + ("name", 135), + ("role", 136), + ("organization", 137), + ("contact_info", 138), + ("image", 69), + ("tags", 139), + ] + ], + {"group": "Extra components", "label": "Contact card"}, + ), + 141: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Content"}, + ), + 142: ( + "wagtail.blocks.StructBlock", + [[("title", 52), ("content", 141)]], + {"label": "Tab", "max_num": 15, "min_num": 1}, + ), + 143: ( + "wagtail.blocks.StreamBlock", + [[("tabs", 142)]], + {"group": "DSFR components", "label": "Tabs"}, + ), + 144: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Background image", "required": False}, + ), + 145: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Background color", + "required": False, + }, + ), + 146: ( + "wagtail.blocks.RegexBlock", + (), + { + "error_messages": {"invalid": "Incorrect color format, must be #fff or #f5f5f5"}, + "help_text": "This field is obsolete and will be removed in the near future. Replace it with the background color.", + "label": "Background color, hexadecimal format (obsolete)", + "regex": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", + "required": False, + }, + ), + 147: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Heading level", + "required": False, + }, + ), + 148: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "group": "Expert syntax", + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "required": False, + }, + ), + 149: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("3", "3/12"), + ("4", "4/12"), + ("5", "5/12"), + ("6", "6/12"), + ("7", "7/12"), + ("8", "8/12"), + ("9", "9/12"), + ], + "help_text": "The total width of all columns should be 12.", + "label": "Column width", + "required": False, + }, + ), + 150: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 3.", + "label": "Heading size level", + "required": False, + }, + ), + 151: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("Primary colors", [("blue-france", "Blue France"), ("red-marianne", "Red Marianne")]), + ("Neutral colors", [("grey", "Grey")]), + ( + "Illustration colors", + [ + ("green-tilleul-verveine", "Tilleul verveine"), + ("green-bourgeon", "Bourgeon"), + ("green-emeraude", "Émeraude"), + ("green-menthe", "Menthe"), + ("green-archipel", "Archipel"), + ("blue-ecume", "Écume"), + ("blue-cumulus", "Cumulus"), + ("purple-glycine", "Glycine"), + ("pink-macaron", "Macaron"), + ("pink-tuile", "Tuile"), + ("yellow-tournesol", "Tournesol"), + ("yellow-moutarde", "Moutarde"), + ("orange-terre-battue", "Terre battue"), + ("brown-cafe-creme", "Café crème"), + ("brown-caramel", "Caramel"), + ("brown-opera", "Opéra"), + ("beige-gris-galet", "Gris galet"), + ], + ), + ], + "help_text": "Uses the French Design System colors", + "label": "Title color", + "required": False, + }, + ), + 152: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("heading_tag", 2), ("heading_size", 150), ("title_color_class", 151)]], + {"group": "Numerique components", "label": "Title"}, + ), + 153: ("wagtail.images.blocks.ImageChooserBlock", (), {"label": "Image", "required": True}), + 154: ("wagtail.blocks.CharBlock", (), {"label": "Alt text", "required": True}), + 155: ("wagtail.blocks.RichTextBlock", (), {"label": "Text", "required": True}), + 156: ("wagtail.blocks.PageChooserBlock", (), {"label": "Main link", "required": True}), + 157: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Secondary link", "required": False}, + ), + 158: ( + "wagtail.blocks.StructBlock", + [[("image", 153), ("alt", 154), ("text", 155), ("main_link", 156), ("secondary_link", 157)]], + {"group": "Numerique components", "label": "Numeric direction card", "required": False}, + ), + 159: ( + "wagtail.blocks.ChoiceBlock", + [], + {"choices": [("3", "3/12"), ("4", "4/12"), ("6", "6/12")], "label": "Column width"}, + ), + 160: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ] + ], + {"label": "Items"}, + ), + 161: ( + "wagtail.blocks.StructBlock", + [[("column_width", 159), ("items", 160)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 162: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Column content"}, + ), + 163: ( + "wagtail.blocks.StructBlock", + [[("width", 149), ("content", 162)]], + {"group": "Page structure", "label": "Custom adjustable column", "required": False}, + ), + 164: ("wagtail.blocks.BooleanBlock", (), {"label": "Border", "required": False}), + 165: ("wagtail.blocks.BooleanBlock", (), {"label": "Center content", "required": False}), + 166: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Content"}, + ), + 167: ( + "wagtail.blocks.StructBlock", + [[("bg_color_class", 145), ("border", 164), ("center_content", 165), ("content", 166)]], + {"group": "Numerique components", "label": "Stylized column"}, + ), + 168: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("column", 163), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("stylized_column", 167), + ] + ], + {"group": "Page structure", "label": "Columns"}, + ), + 169: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 168), + ] + ], + {"group": "Page structure", "label": "Multi columns"}, + ), + 170: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Items"}, + ), + 171: ( + "wagtail.blocks.StructBlock", + [[("column_width", 159), ("items", 170)]], + {"group": "Page structure", "label": "Item grid"}, + ), + 172: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Blog", "page_type": ["numerique_gouv.NumeriqueBlogIndexPage"]}, + ), + 173: ( + "wagtail.blocks.IntegerBlock", + (), + { + "default": 3, + "label": "Number of entries", + "max_value": 12, + "min_value": 1, + "required": False, + }, + ), + 174: ( + "wagtail.snippets.blocks.SnippetChooserBlock", + ("numerique_gouv.PageTag",), + {"label": "Filter by tag", "required": False}, + ), + 175: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("blog", 172), + ("entries_count", 173), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ("page_tag_filter", 174), + ] + ], + {"group": "Website structure", "label": "Blog recent entries"}, + ), + 176: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("bg_color", 146), + ("title", 1), + ("heading_tag", 147), + ("columns", 168), + ] + ], + {"group": "Page structure", "label": "Multi columns", "required": False}, + ), + 177: ( + "wagtail.blocks.DecimalBlock", + (), + {"help_text": "In rem", "label": "Margin", "required": False}, + ), + 178: ( + "wagtail.blocks.StructBlock", + [[("marginTop", 177)]], + {"group": "Page structure", "label": "Spacer"}, + ), + 179: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ("p", "Paragraph"), + ], + "help_text": "Adapt to the page layout. Defaults to heading 2.", + "label": "Title heading level", + "required": False, + }, + ), + 180: ( + "wagtail.blocks.ChoiceBlock", + [], + { + "choices": [ + ("h1", "Heading 1"), + ("h2", "Heading 2"), + ("h3", "Heading 3"), + ("h4", "Heading 4"), + ("h5", "Heading 5"), + ("h6", "Heading 6"), + ], + "help_text": "Defaults to heading 2.", + "label": "Title heading size level", + "required": False, + }, + ), + 181: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("card", 133), + ("contact_card", 140), + ("title", 152), + ("numeric_direction_card", 158), + ("horizontal_card", 99), + ("item_grid", 161), + ] + ], + {"label": "Slider blocks"}, + ), + 182: ( + "wagtail.blocks.StructBlock", + [[("title", 1), ("title_heading_tag", 179), ("title_heading_size", 180), ("blocks", 181)]], + {"group": "Numerique components", "label": "Slider"}, + ), + 183: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 175), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 148), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 161), + ("numeric_direction_card", 158), + ("custom_ajustable_column", 163), + ("horizontal_card", 99), + ("multicolumns", 176), + ("stylized_column", 167), + ("spacer", 178), + ("custom_item_grid", 171), + ("slider", 182), + ] + ], + {"label": "Content"}, + ), + 184: ( + "wagtail.blocks.StructBlock", + [[("bg_image", 144), ("bg_color_class", 145), ("content", 183)]], + {"group": "Page structure", "label": "Full width background"}, + ), + 185: ( + "wagtail.blocks.StreamBlock", + [ + [ + ("text", 0), + ("image", 110), + ("imageandtext", 23), + ("alert", 28), + ("text_cta", 38), + ("video", 45), + ("transcription", 46), + ("badges_list", 51), + ("tags_list", 57), + ("accordions", 61), + ("callout", 65), + ("highlight", 68), + ("quote", 73), + ("link", 58), + ("tile", 109), + ("blog_recent_entries", 119), + ("events_recent_entries", 121), + ("stepper", 79), + ("markdown", 122), + ("iframe", 127), + ("html", 128), + ("separator", 131), + ("image_and_text", 23), + ("card", 99), + ("tabs", 143), + ("item_grid", 161), + ] + ], + {"label": "Main content"}, + ), + 186: ("wagtail.blocks.CharBlock", (), {"label": "Side menu title", "required": False}), + 187: ( + "wagtail.blocks.RawHTMLBlock", + (), + { + "help_text": "Warning: Use HTML block with caution. Malicious code can compromise the security of the site.", + "label": "HTML", + }, + ), + 188: ("wagtail.blocks.PageChooserBlock", (), {"label": "Parent page"}), + 189: ("wagtail.blocks.StructBlock", [[("page", 188)]], {"label": "Page tree"}), + 190: ( + "wagtail.blocks.StreamBlock", + [[("html", 187), ("pagetree", 189)]], + {"label": "Side menu content"}, + ), + 191: ( + "wagtail.blocks.StructBlock", + [ + [ + ("bg_image", 144), + ("bg_color_class", 145), + ("main_content", 185), + ("sidemenu_title", 186), + ("sidemenu_content", 190), + ] + ], + {"group": "Page structure", "label": "Full width background with side menu"}, + ), + 192: ( + "wagtail.blocks.static_block.StaticBlock", + (), + { + "admin_text": "A simple, alphabetical list of the subpages of the current page.", + "group": "Website structure", + "label": "Subpages list", + "template": "content_manager/blocks/subpages_list.html", + }, + ), + 193: ( + "wagtail.blocks.PageChooserBlock", + (), + {"label": "Event calendar", "page_type": ["numerique_gouv.NumeriqueEventsIndexPage"]}, + ), + 194: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 1), + ("heading_tag", 111), + ("index_page", 193), + ("entries_count", 113), + ("category_filter", 114), + ("tag_filter", 115), + ("author_filter", 116), + ("source_filter", 117), + ("show_filters", 118), + ] + ], + {"group": "Website structure", "label": "custom Events recent entries"}, + ), + 195: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Main card image", "required": True}, + ), + 196: ("wagtail.blocks.TextBlock", (), {"label": "Main card title", "required": True}), + 197: ("wagtail.blocks.RichTextBlock", (), {"label": "Main card text", "required": True}), + 198: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Main card page link", "required": False}, + ), + 199: ( + "wagtail.blocks.URLBlock", + (), + {"help_text": "Link to an external URL", "label": "Main card URL link", "required": False}, + ), + 200: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Top right card image", "required": False}, + ), + 201: ("wagtail.blocks.TextBlock", (), {"label": "Top right card title", "required": False}), + 202: ("wagtail.blocks.RichTextBlock", (), {"label": "Top right card text", "required": True}), + 203: ("wagtail.blocks.TextBlock", (), {"label": "Top right card button label", "required": False}), + 204: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Top right card page link", "required": False}, + ), + 205: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Top right card URL link", + "required": False, + }, + ), + 206: ( + "wagtail.images.blocks.ImageChooserBlock", + (), + {"label": "Bottom right card image", "required": False}, + ), + 207: ("wagtail.blocks.TextBlock", (), {"label": "Bottom right card title", "required": False}), + 208: ("wagtail.blocks.RichTextBlock", (), {"label": "Bottom right card text", "required": True}), + 209: ( + "wagtail.blocks.TextBlock", + (), + {"label": "Bottom right card button label", "required": False}, + ), + 210: ( + "wagtail.blocks.PageChooserBlock", + (), + {"help_text": "Link to a page", "label": "Bottom right card page link", "required": False}, + ), + 211: ( + "wagtail.blocks.URLBlock", + (), + { + "help_text": "Link to an external URL", + "label": "Bottom right card URL link", + "required": False, + }, + ), + 212: ( + "wagtail.blocks.StructBlock", + [ + [ + ("main_image", 195), + ("main_title", 196), + ("main_text", 197), + ("main_page_link", 198), + ("main_url_link", 199), + ("top_right_image", 200), + ("top_right_title", 201), + ("top_right_text", 202), + ("top_right_button_label", 203), + ("top_right_page_link", 204), + ("top_right_url_link", 205), + ("bottom_right_image", 206), + ("bottom_right_title", 207), + ("bottom_right_text", 208), + ("bottom_right_button_label", 209), + ("bottom_right_page_link", 210), + ("bottom_right_url_link", 211), + ] + ], + {"group": "Numerique components", "label": "Headline cards"}, + ), + 213: ( + "wagtail.blocks.StructBlock", + [[("image", 153), ("alt", 154), ("text", 155), ("main_link", 156), ("secondary_link", 157)]], + {"group": "Numerique components", "label": "Numeric direction card"}, + ), + 214: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 80), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 90), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 215: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Secondary card", "group": "DSFR components", "lrequired": True}, + ), + 216: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"group": "DSFR components", "label": "Tertiary card", "required": True}, + ), + 217: ( + "wagtail.blocks.StructBlock", + [[("main_card", 214), ("secondary_card", 215), ("tertiary_card", 216)]], + {"group": "Numerique components", "label": "Highlight cards"}, + ), + 218: ( + "wagtail.blocks.StructBlock", + [ + [ + ("title", 52), + ("heading_tag", 27), + ("description", 62), + ("image", 69), + ("image_ratio", 6), + ("image_badge", 81), + ("link", 82), + ("url", 83), + ("document", 84), + ("top_detail_text", 85), + ("top_detail_icon", 86), + ("top_detail_badges_tags", 89), + ("bottom_detail_text", 132), + ("bottom_detail_icon", 91), + ("call_to_action", 94), + ("grey_background", 95), + ("no_background", 96), + ("no_border", 97), + ("shadow", 98), + ] + ], + {"abel": "Main card", "group": "DSFR components", "lrequired": True}, + ), + 219: ( + "wagtail.blocks.StructBlock", + [[("main_card", 218), ("secondary_card", 215), ("tertiary_card", 216)]], + {"group": "Numerique components", "label": "Vertical Highlight cards"}, + ), + }, + ), + ), + ]