From 6b259735039b5c3e99b5b6b275d4a5b87c3af7dd Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 18 Sep 2024 15:03:52 +0200 Subject: [PATCH 01/17] Update dependencies --- poetry.lock | 337 ++++++++++++++++++++++++++-------------------------- 1 file changed, 171 insertions(+), 166 deletions(-) diff --git a/poetry.lock b/poetry.lock index a9c18816..555a5589 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,5 @@ # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "anyascii" @@ -131,17 +132,17 @@ webencodings = "*" [[package]] name = "boto3" -version = "1.35.4" +version = "1.35.21" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.4-py3-none-any.whl", hash = "sha256:96c39593afb7b55ebb74d08c8e3201041d105b557c8c8536c9054c9f13da5f2a"}, - {file = "boto3-1.35.4.tar.gz", hash = "sha256:d997b82c468bd5c2d5cd29810d47079b66b178d2b5ae021aebe262c4d78d4c94"}, + {file = "boto3-1.35.21-py3-none-any.whl", hash = "sha256:247f88eedce9ae4e014a8fc14a9473759bb8e391460d49396a3b600fb649f33b"}, + {file = "boto3-1.35.21.tar.gz", hash = "sha256:db5fbbd10248db060f2ccce3ae17764f1641c99c8b9f51d422c26ebe25703a1e"}, ] [package.dependencies] -botocore = ">=1.35.4,<1.36.0" +botocore = ">=1.35.21,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -150,13 +151,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.4" +version = "1.35.21" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.4-py3-none-any.whl", hash = "sha256:10195e5ca764745f02b9a51df048b996ddbdc1899a44a2caf35dfb225dfea489"}, - {file = "botocore-1.35.4.tar.gz", hash = "sha256:4cc51a6a486915aedc140f9d027b7e156646b7a0f7b33b1000762c81aff9a12f"}, + {file = "botocore-1.35.21-py3-none-any.whl", hash = "sha256:3db9ddfe521edc0753fc8c68caef71c7806e1d2d21ce8cbabc2065b7d79192f2"}, + {file = "botocore-1.35.21.tar.gz", hash = "sha256:db917e7d7b3a2eed1310c6496784bc813c91f020a021c2ab5f9df7d28cdb4f1d"}, ] [package.dependencies] @@ -165,17 +166,17 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.21.2)"] +crt = ["awscrt (==0.21.5)"] [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] @@ -391,17 +392,17 @@ static3 = "*" [[package]] name = "django" -version = "5.0.9" +version = "5.1.1" 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.0.9-py3-none-any.whl", hash = "sha256:f219576ba53be4e83f485130a7283f0efde06a9f2e3a7c3c5180327549f078fa"}, - {file = "Django-5.0.9.tar.gz", hash = "sha256:6333870d342329b60174da3a60dbd302e533f3b0bb0971516750e974a99b5a39"}, + {file = "Django-5.1.1-py3-none-any.whl", hash = "sha256:71603f27dac22a6533fb38d83072eea9ddb4017fead6f67f2562a40402d61c3f"}, + {file = "Django-5.1.1.tar.gz", hash = "sha256:021ffb7fdab3d2d388bc8c7c2434eb9c1f6f4d09e6119010bbb1694dda286bc2"}, ] [package.dependencies] -asgiref = ">=3.7.0,<4" +asgiref = ">=3.8.1,<4" sqlparse = ">=0.3.1" tzdata = {version = "*", markers = "sys_platform == \"win32\""} @@ -658,28 +659,28 @@ django = ">=4.2" [[package]] name = "djlint" -version = "1.34.1" +version = "1.35.2" description = "HTML Template Linter and Formatter" optional = false -python-versions = ">=3.8.0,<4.0.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "djlint-1.34.1-py3-none-any.whl", hash = "sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8"}, - {file = "djlint-1.34.1.tar.gz", hash = "sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346"}, + {file = "djlint-1.35.2-py3-none-any.whl", hash = "sha256:4ba995bad378f2afa77c8ea56ba1c14429d9ff26a18e8ae23bc71eedb9152243"}, + {file = "djlint-1.35.2.tar.gz", hash = "sha256:318de9d4b9b0061a111f8f5164ecbacd8215f449dd4bd5a76d2a691c815ee103"}, ] [package.dependencies] -click = ">=8.0.1,<9.0.0" -colorama = ">=0.4.4,<0.5.0" -cssbeautifier = ">=1.14.4,<2.0.0" -html-tag-names = ">=0.1.2,<0.2.0" -html-void-elements = ">=0.1.0,<0.2.0" -jsbeautifier = ">=1.14.4,<2.0.0" -json5 = ">=0.9.11,<0.10.0" -pathspec = ">=0.12.0,<0.13.0" -PyYAML = ">=6.0,<7.0" -regex = ">=2023.0.0,<2024.0.0" -tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} -tqdm = ">=4.62.2,<5.0.0" +click = ">=8.0.1" +colorama = ">=0.4.4" +cssbeautifier = ">=1.14.4" +html-tag-names = ">=0.1.2" +html-void-elements = ">=0.1.0" +jsbeautifier = ">=1.14.4" +json5 = ">=0.9.11" +pathspec = ">=0.12.0" +PyYAML = ">=6.0" +regex = ">=2023" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} +tqdm = ">=4.62.2" [[package]] name = "draftjs-exporter" @@ -733,13 +734,13 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "2.0.1" +version = "2.1.0" description = "Get the currently executing AST node of a frame, and other information" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, - {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, + {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, + {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, ] [package.extras] @@ -761,19 +762,19 @@ python-dateutil = ">=2.4" [[package]] name = "filelock" -version = "3.15.4" +version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, - {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] -typing = ["typing-extensions (>=4.8)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "filetype" @@ -862,13 +863,13 @@ pytz = "*" [[package]] name = "identify" -version = "2.6.0" +version = "2.6.1" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, - {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, ] [package.extras] @@ -876,24 +877,27 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "ipython" -version = "8.26.0" +version = "8.27.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.26.0-py3-none-any.whl", hash = "sha256:e6b347c27bdf9c32ee9d31ae85defc525755a1869f14057e900675b9e8d6e6ff"}, - {file = "ipython-8.26.0.tar.gz", hash = "sha256:1cec0fbba8404af13facebe83d04436a7434c7400e59f47acf467c64abd0956c"}, + {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, + {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, ] [package.dependencies] @@ -1336,19 +1340,19 @@ tests-min = ["defusedxml", "packaging", "pytest"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "polib" @@ -1565,13 +1569,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2024.1" +version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] @@ -1694,104 +1698,105 @@ files = [ [[package]] name = "regex" -version = "2023.12.25" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, - {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, - {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, - {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, - {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, - {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, - {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, - {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, - {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, - {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, - {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, - {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, - {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, - {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, - {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] @@ -2079,13 +2084,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -2096,13 +2101,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.26.3" +version = "20.26.5" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, - {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, + {file = "virtualenv-20.26.5-py3-none-any.whl", hash = "sha256:4f3ac17b81fba3ce3bd6f4ead2749a72da5929c01774948e243db9ba41df4ff6"}, + {file = "virtualenv-20.26.5.tar.gz", hash = "sha256:ce489cac131aa58f4b25e321d6d186171f78e6cb13fafbf32a840cee67733ff4"}, ] [package.dependencies] @@ -2150,17 +2155,17 @@ testing = ["Jinja2 (>=3.0,<3.2)", "azure-mgmt-cdn (>=12.0,<13.0)", "azure-mgmt-f [[package]] name = "wagtail-localize" -version = "1.9.1" +version = "1.10" description = "Translation plugin for Wagtail CMS" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "wagtail_localize-1.9.1-py3-none-any.whl", hash = "sha256:c895efc286970d2810929056044c11ff0b4ebb7a26b494d052a07c41ead4afab"}, - {file = "wagtail_localize-1.9.1.tar.gz", hash = "sha256:d7b1434e765a004ffd7b5951d151b3817bbbd1ee5c4f11b9485c84e520f383e6"}, + {file = "wagtail_localize-1.10-py3-none-any.whl", hash = "sha256:11746223d5f20d898efff36042f730a3d499135b4a92945db01fc9769c47cb28"}, + {file = "wagtail_localize-1.10.tar.gz", hash = "sha256:ecde7efd366485ea325904efbbae5e50297f094f4b91ca8ac94aec04dd3b0ded"}, ] [package.dependencies] -Django = ">=3.2,<5.1" +Django = ">=4.2,<6.0" polib = ">=1.1,<2.0" typing_extensions = ">=4.0" Wagtail = ">=5.2" From 46bb9278f6b4bb37fc764a100ea7ff2ab3c957ed Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 23 Sep 2024 18:34:24 +0200 Subject: [PATCH 02/17] Work on data importer --- ...age_source_url_blogindexpage_source_url.py | 26 ++++++++ content_manager/abstract.py | 7 ++ content_manager/fixtures/sample.json | 19 ++++++ .../management/commands/import_templates.py | 19 ++++++ .../migrations/0047_contentpage_source_url.py | 19 ++++++ content_manager/services/__init__.py | 0 content_manager/services/import_export.py | 65 +++++++++++++++++++ ...e_source_url_eventsindexpage_source_url.py | 26 ++++++++ 8 files changed, 181 insertions(+) create mode 100644 blog/migrations/0036_blogentrypage_source_url_blogindexpage_source_url.py create mode 100644 content_manager/fixtures/sample.json create mode 100644 content_manager/management/commands/import_templates.py create mode 100644 content_manager/migrations/0047_contentpage_source_url.py create mode 100644 content_manager/services/__init__.py create mode 100644 content_manager/services/import_export.py create mode 100644 events/migrations/0009_evententrypage_source_url_eventsindexpage_source_url.py diff --git a/blog/migrations/0036_blogentrypage_source_url_blogindexpage_source_url.py b/blog/migrations/0036_blogentrypage_source_url_blogindexpage_source_url.py new file mode 100644 index 00000000..d8743328 --- /dev/null +++ b/blog/migrations/0036_blogentrypage_source_url_blogindexpage_source_url.py @@ -0,0 +1,26 @@ +# Generated by Django 5.1.1 on 2024-09-23 13:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("blog", "0035_alter_blogentrypage_body_alter_blogindexpage_body_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="blogentrypage", + name="source_url", + field=models.URLField( + blank=True, help_text="For imported pages, to allow updates.", null=True, verbose_name="Source URL" + ), + ), + migrations.AddField( + model_name="blogindexpage", + name="source_url", + field=models.URLField( + blank=True, help_text="For imported pages, to allow updates.", null=True, verbose_name="Source URL" + ), + ), + ] diff --git a/content_manager/abstract.py b/content_manager/abstract.py index a18766ea..4cce4664 100644 --- a/content_manager/abstract.py +++ b/content_manager/abstract.py @@ -83,6 +83,13 @@ class SitesFacilesBasePage(Page): blank=True, ) + source_url = models.URLField( + _("Source URL"), + help_text=_("For imported pages, to allow updates."), + null=True, + blank=True, + ) + content_panels = Page.content_panels + [ FieldPanel("body", heading=_("Body")), ] diff --git a/content_manager/fixtures/sample.json b/content_manager/fixtures/sample.json new file mode 100644 index 00000000..f90f1fae --- /dev/null +++ b/content_manager/fixtures/sample.json @@ -0,0 +1,19 @@ +[ + { + "model": "content_manager.contentpage", + "pk": 3, + "fields": { + "body": "[{\"id\": \"f042a295-04f9-43b7-b324-963104917b99\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"4d596a74-a9ad-400d-bc43-8e5bc87cfde6\", \"type\": \"text\", \"value\": \"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

\"}, {\"id\": \"c279336b-c2bd-42cf-a674-97e334a48151\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 63, \"title\": \"\", \"width\": \"\", \"caption\": \"L\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"beaf3105-5af7-424a-aa1c-fbecdb9f3cd2\", \"type\": \"text\", \"value\": \"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

\"}], \"bg_color_class\": \"grey\", \"sidemenu_title\": \"Menu lat\\u00e9ral\", \"sidemenu_content\": [{\"id\": \"ad019dcc-5f4b-4a68-9ef8-1f4e80f407f7\", \"type\": \"html\", \"value\": \"\"}]}}, {\"id\": \"c4a8bd8e-1ca3-44bc-8a9c-ce3c1feceefe\", \"type\": \"events_recent_entries\", \"value\": {\"title\": \"\\u00c9v\\u00e9nements r\\u00e9cents\", \"index_page\": 59, \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": false, \"author_filter\": null, \"entries_count\": 4, \"source_filter\": null, \"category_filter\": null}}, {\"id\": \"511da050-4920-401b-bc62-8ca53ad3bd4d\", \"type\": \"blog_recent_entries\", \"value\": {\"blog\": 6, \"title\": \"Actus\", \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": true, \"author_filter\": null, \"entries_count\": 3, \"source_filter\": 3, \"category_filter\": 3}}, {\"id\": \"7ea494aa-89a9-4965-8a37-bc277d70a27e\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 63, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Les boutons d\\u2019appel \\u00e0 action des cartes peuvent maintenant \\u00e9galement avoir des ic\\u00f4nes

\", \"heading_tag\": \"h2\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [{\"id\": \"6f0b342c-18d3-4ba4-a049-c605603d5db4\", \"type\": \"buttons\", \"value\": [{\"id\": \"e038ee8e-14bc-4a2c-a63c-7d8a0bbcd688\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 1\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-attachment-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"dfff96cd-faa2-4d94-8551-929c8ef79da6\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 2\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-bookmark-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"3478ae00-f351-485c-987a-907e0e645644\", \"type\": \"callout\", \"value\": {\"text\": \"\", \"color\": \"\", \"title\": \"De m\\u00eame pour ceux des mises en avant\", \"button\": {\"page\": null, \"text\": \"Bouton\", \"document\": 1, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-slideshow-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"fr-icon-community-line\", \"heading_tag\": \"h3\"}}, {\"id\": \"d1cba9b0-6018-4332-8d24-e85e92a65906\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"c747b7b2-9a0f-4880-b5c9-fbd535ed7dec\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Les appels \\u00e0 action peuvent maintenant avoir plusieurs boutons.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a2a37bed-e000-49b7-89a7-dc692d51e398\", \"type\": \"buttons\", \"value\": [{\"id\": \"a9996262-af55-40f9-9502-e799a492fb67\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton primaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hospital-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"b85b1d60-62a0-49f6-9f7b-99bee906f288\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton secondaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hotel-fill\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]}}], \"bg_image\": null, \"bg_color_class\": \"blue-france\"}}, {\"id\": \"2b6a6f07-0bfb-40a0-bf10-a1e732ad2f2f\", \"type\": \"paragraph\", \"value\": \"

En particulier, vous devrez :

  • Configurer le site dans Configuration > Configuration du site
  • Remplacer le contenu de la page de mentions l\\u00e9gales
  • Remplacer le contenu de cette page d\\u2019accueil.
\"}]", + "header_with_title": true, + "header_image": 63, + "header_color_class": "blue-france", + "header_large": false, + "header_darken": true, + "header_cta_text": "

Appel à action de l’en-tête :

  • C'est maintenant du texte riche
  • Il peut donc contenir du gras, de l’italique ou des listes à puces.
", + "header_cta_buttons": "[{\"id\": \"3d5d2c50-6b94-4ace-9138-374e11b84315\", \"type\": \"buttons\", \"value\": [{\"id\": \"086183f4-405f-43d6-9537-5a9470f7759a\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton principal\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-award-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"53228443-09d5-4fdd-86ed-2c4194f7bbce\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"En savoir plus\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-add-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + } +] diff --git a/content_manager/management/commands/import_templates.py b/content_manager/management/commands/import_templates.py new file mode 100644 index 00000000..34b0953f --- /dev/null +++ b/content_manager/management/commands/import_templates.py @@ -0,0 +1,19 @@ +from django.core.management.base import BaseCommand + +from content_manager.services.import_export import ImportExportPage + +SOURCE_URL = "https://sites-faciles.beta.numerique.gouv.fr/" + + +class Command(BaseCommand): + def handle(self, *args, **kwargs): + """ + Import template pages + """ + + page_ids = ["32", "37"] + + for page_id in page_ids: + page = ImportExportPage(SOURCE_URL, page_id) + # pprint(page.source_body) + print(page.image_ids) diff --git a/content_manager/migrations/0047_contentpage_source_url.py b/content_manager/migrations/0047_contentpage_source_url.py new file mode 100644 index 00000000..a6d3b4b5 --- /dev/null +++ b/content_manager/migrations/0047_contentpage_source_url.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.1 on 2024-09-23 13:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("content_manager", "0046_alter_contentpage_body"), + ] + + operations = [ + migrations.AddField( + model_name="contentpage", + name="source_url", + field=models.URLField( + blank=True, help_text="For imported pages, to allow updates.", null=True, verbose_name="Source URL" + ), + ), + ] diff --git a/content_manager/services/__init__.py b/content_manager/services/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py new file mode 100644 index 00000000..fa32bfaf --- /dev/null +++ b/content_manager/services/import_export.py @@ -0,0 +1,65 @@ +import requests + + +class ImportExportPage: + """ + Generic class for data import/export a ContentPage from a wagtail instance + """ + + def __init__(self, source_site, source_page_id) -> None: + self.source_site = source_site + self.source_page_id = source_page_id + self.source_content = self.get_content_from_source() + + self.source_body = remove_block_ids(self.source_content["body"]) + + self.images = {} + self.image_ids = [] + self.get_source_images() + + @property + def source_page_api_url(self): + return f"{self.source_site}api/v2/pages/{self.source_page_id}/" + + def get_content_from_source(self): + response = requests.get(self.source_page_api_url) + return response.json() + + def get_source_images(self) -> None: + """ + Get a list of images present in the source content. + """ + + # Header image + header_image = self.source_content.get("header_image", None) + if header_image: + header_image["local_image"] = None + img_id = header_image["id"] + self.images[img_id] = header_image + + # Images from the body + self.locate_image_ids(self.source_body) + self.image_ids = list(set(self.image_ids)) + + def locate_image_ids(self, json_object): + if isinstance(json_object, dict) and json_object: + for key, value in json_object.items(): + if key in ["image", "bg_image"] and value: + self.image_ids.append(value) + else: + self.locate_image_ids(value) + + elif isinstance(json_object, list) and json_object: + for item in json_object: + self.locate_image_ids(item) + + +def remove_block_ids(json_object): + """ + Parse a page JSON representation and strip the block IDs + """ + if not isinstance(json_object, (dict, list)): + return json_object + if isinstance(json_object, list): + return [remove_block_ids(v) for v in json_object] + return {k: remove_block_ids(v) for k, v in json_object.items() if k != "id"} diff --git a/events/migrations/0009_evententrypage_source_url_eventsindexpage_source_url.py b/events/migrations/0009_evententrypage_source_url_eventsindexpage_source_url.py new file mode 100644 index 00000000..8d30be70 --- /dev/null +++ b/events/migrations/0009_evententrypage_source_url_eventsindexpage_source_url.py @@ -0,0 +1,26 @@ +# Generated by Django 5.1.1 on 2024-09-23 13:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0008_alter_evententrypage_body_alter_eventsindexpage_body"), + ] + + operations = [ + migrations.AddField( + model_name="evententrypage", + name="source_url", + field=models.URLField( + blank=True, help_text="For imported pages, to allow updates.", null=True, verbose_name="Source URL" + ), + ), + migrations.AddField( + model_name="eventsindexpage", + name="source_url", + field=models.URLField( + blank=True, help_text="For imported pages, to allow updates.", null=True, verbose_name="Source URL" + ), + ), + ] From 503a3c263d4a0d91f00f12ab1d5ea9273d2a686b Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 25 Sep 2024 20:06:28 +0200 Subject: [PATCH 03/17] Image export --- content_manager/fixtures/sample_2.json | 19 + content_manager/fixtures/sample_3.json | 2879 +++++++++++++++++ ...mport_templates.py => export_templates.py} | 12 +- content_manager/services/import_export.py | 72 +- static/template_images/Home.original.png | Bin 0 -> 92450 bytes static/template_images/image_data.json | 52 + .../undraw_Website_builder_re_ii6e.png | Bin 0 -> 37030 bytes .../undraw_building_websites_i78t_1.png | Bin 0 -> 41716 bytes 8 files changed, 3027 insertions(+), 7 deletions(-) create mode 100644 content_manager/fixtures/sample_2.json create mode 100644 content_manager/fixtures/sample_3.json rename content_manager/management/commands/{import_templates.py => export_templates.py} (53%) create mode 100644 static/template_images/Home.original.png create mode 100644 static/template_images/image_data.json create mode 100644 static/template_images/undraw_Website_builder_re_ii6e.png create mode 100644 static/template_images/undraw_building_websites_i78t_1.png diff --git a/content_manager/fixtures/sample_2.json b/content_manager/fixtures/sample_2.json new file mode 100644 index 00000000..f90f1fae --- /dev/null +++ b/content_manager/fixtures/sample_2.json @@ -0,0 +1,19 @@ +[ + { + "model": "content_manager.contentpage", + "pk": 3, + "fields": { + "body": "[{\"id\": \"f042a295-04f9-43b7-b324-963104917b99\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"4d596a74-a9ad-400d-bc43-8e5bc87cfde6\", \"type\": \"text\", \"value\": \"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

\"}, {\"id\": \"c279336b-c2bd-42cf-a674-97e334a48151\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 63, \"title\": \"\", \"width\": \"\", \"caption\": \"L\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"beaf3105-5af7-424a-aa1c-fbecdb9f3cd2\", \"type\": \"text\", \"value\": \"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

\"}], \"bg_color_class\": \"grey\", \"sidemenu_title\": \"Menu lat\\u00e9ral\", \"sidemenu_content\": [{\"id\": \"ad019dcc-5f4b-4a68-9ef8-1f4e80f407f7\", \"type\": \"html\", \"value\": \"
\"}]}}, {\"id\": \"c4a8bd8e-1ca3-44bc-8a9c-ce3c1feceefe\", \"type\": \"events_recent_entries\", \"value\": {\"title\": \"\\u00c9v\\u00e9nements r\\u00e9cents\", \"index_page\": 59, \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": false, \"author_filter\": null, \"entries_count\": 4, \"source_filter\": null, \"category_filter\": null}}, {\"id\": \"511da050-4920-401b-bc62-8ca53ad3bd4d\", \"type\": \"blog_recent_entries\", \"value\": {\"blog\": 6, \"title\": \"Actus\", \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": true, \"author_filter\": null, \"entries_count\": 3, \"source_filter\": 3, \"category_filter\": 3}}, {\"id\": \"7ea494aa-89a9-4965-8a37-bc277d70a27e\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 63, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Les boutons d\\u2019appel \\u00e0 action des cartes peuvent maintenant \\u00e9galement avoir des ic\\u00f4nes

\", \"heading_tag\": \"h2\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [{\"id\": \"6f0b342c-18d3-4ba4-a049-c605603d5db4\", \"type\": \"buttons\", \"value\": [{\"id\": \"e038ee8e-14bc-4a2c-a63c-7d8a0bbcd688\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 1\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-attachment-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"dfff96cd-faa2-4d94-8551-929c8ef79da6\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 2\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-bookmark-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"3478ae00-f351-485c-987a-907e0e645644\", \"type\": \"callout\", \"value\": {\"text\": \"\", \"color\": \"\", \"title\": \"De m\\u00eame pour ceux des mises en avant\", \"button\": {\"page\": null, \"text\": \"Bouton\", \"document\": 1, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-slideshow-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"fr-icon-community-line\", \"heading_tag\": \"h3\"}}, {\"id\": \"d1cba9b0-6018-4332-8d24-e85e92a65906\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"c747b7b2-9a0f-4880-b5c9-fbd535ed7dec\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Les appels \\u00e0 action peuvent maintenant avoir plusieurs boutons.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a2a37bed-e000-49b7-89a7-dc692d51e398\", \"type\": \"buttons\", \"value\": [{\"id\": \"a9996262-af55-40f9-9502-e799a492fb67\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton primaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hospital-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"b85b1d60-62a0-49f6-9f7b-99bee906f288\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton secondaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hotel-fill\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]}}], \"bg_image\": null, \"bg_color_class\": \"blue-france\"}}, {\"id\": \"2b6a6f07-0bfb-40a0-bf10-a1e732ad2f2f\", \"type\": \"paragraph\", \"value\": \"

En particulier, vous devrez :

  • Configurer le site dans Configuration > Configuration du site
  • Remplacer le contenu de la page de mentions l\\u00e9gales
  • Remplacer le contenu de cette page d\\u2019accueil.
\"}]", + "header_with_title": true, + "header_image": 63, + "header_color_class": "blue-france", + "header_large": false, + "header_darken": true, + "header_cta_text": "

Appel à action de l’en-tête :

  • C'est maintenant du texte riche
  • Il peut donc contenir du gras, de l’italique ou des listes à puces.
", + "header_cta_buttons": "[{\"id\": \"3d5d2c50-6b94-4ace-9138-374e11b84315\", \"type\": \"buttons\", \"value\": [{\"id\": \"086183f4-405f-43d6-9537-5a9470f7759a\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton principal\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-award-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"53228443-09d5-4fdd-86ed-2c4194f7bbce\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"En savoir plus\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-add-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + } +] diff --git a/content_manager/fixtures/sample_3.json b/content_manager/fixtures/sample_3.json new file mode 100644 index 00000000..f14a7579 --- /dev/null +++ b/content_manager/fixtures/sample_3.json @@ -0,0 +1,2879 @@ +[ + { + "model": "wagtailcore.page", + "pk": 1, + "fields": { + "path": "0001", + "depth": 1, + "numchild": 1, + "translation_key": "d41bc552-dd67-40c1-ab0c-370787bf03f5", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Root", + "draft_title": "Root", + "slug": "root", + "content_type": [ + "wagtailcore", + "page" + ], + "url_path": "/", + "owner": null, + "seo_title": "", + "show_in_menus": false, + "search_description": "", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 3, + "fields": { + "path": "00010002", + "depth": 2, + "numchild": 12, + "translation_key": "36c1a45d-083c-4086-8ffd-93de57c0fad2", + "locale": 1, + "latest_revision": 141, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-01T14:35:53.089Z", + "last_published_at": "2024-09-24T09:35:24.924Z", + "live_revision": 141, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Accueil", + "draft_title": "Accueil", + "slug": "home", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Bienvenue ! Vous venez de créer un site utilisant le gestionnaire de contenus de l’État. Vous pouvez maintenant vous connecter […]", + "latest_revision_created_at": "2024-09-24T09:35:24.876Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 4, + "fields": { + "path": "000100020001", + "depth": 3, + "numchild": 0, + "translation_key": "f248da7d-eacc-4cba-8fd3-e38bf34e05ab", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Mentions légales", + "draft_title": "Mentions légales", + "slug": "mentions-legales", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/mentions-legales/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "D’après la documentation du système de design , le pied de page doit contenir a minima les quatre liens suivants […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 5, + "fields": { + "path": "000100020002", + "depth": 3, + "numchild": 0, + "translation_key": "047b6bdd-921a-428c-9ec1-49a3775428ba", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Déclaration d’accessibilité", + "draft_title": "Déclaration d’accessibilité", + "slug": "accessibilite", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/accessibilite/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 6, + "fields": { + "path": "000100020003", + "depth": 3, + "numchild": 4, + "translation_key": "af40e946-c3e9-4bd8-a7fe-8cd0cd1cc4a6", + "locale": 1, + "latest_revision": 49, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-04T07:50:22.826Z", + "last_published_at": "2024-07-09T16:41:15.003Z", + "live_revision": 49, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Actualités", + "draft_title": "Actualités", + "slug": "actualités", + "content_type": [ + "blog", + "blogindexpage" + ], + "url_path": "/home/actualités/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Bienvenue ! Vous trouverez ici nos dernières actualités […]", + "latest_revision_created_at": "2024-07-09T16:41:14.967Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 7, + "fields": { + "path": "000100020004", + "depth": 3, + "numchild": 32, + "translation_key": "61c2be39-673d-43cd-b5a4-33ecd457884f", + "locale": 1, + "latest_revision": 36, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-08T14:42:22.950Z", + "last_published_at": "2024-07-08T14:42:22.950Z", + "live_revision": 36, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Publications", + "draft_title": "Publications", + "slug": "publications", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Veuillez trouver ici une liste de publications […]", + "latest_revision_created_at": "2024-07-08T14:42:22.917Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 8, + "fields": { + "path": "0001000200040001", + "depth": 4, + "numchild": 0, + "translation_key": "059b3495-1599-422d-889c-598b50972f7b", + "locale": 1, + "latest_revision": 67, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-16T16:27:24.500Z", + "last_published_at": "2024-07-16T16:27:24.500Z", + "live_revision": 67, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Intégration superset", + "draft_title": "Intégration superset", + "slug": "page-1-1", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-1/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Roman désert français plaisir boire détail tombe. Mur bande perdu course. Roman désert français plaisir boire détail tombe. Mur bande […]", + "latest_revision_created_at": "2024-07-16T16:27:24.429Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 9, + "fields": { + "path": "0001000200040002", + "depth": 4, + "numchild": 2, + "translation_key": "b1226d7b-961e-4186-95ce-715f24a64ab0", + "locale": 1, + "latest_revision": 93, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-08-26T09:33:57.473Z", + "last_published_at": "2024-08-26T13:07:12.901Z", + "live_revision": 93, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page avec barre latérale", + "draft_title": "Page avec barre latérale", + "slug": "page-1-2", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-2/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Mêler possible accomplir besoin militaire. Garde apparence chaud craindre parfois. Commencer même armer attention vide soulever pitié. Mêler possible accomplir […]", + "latest_revision_created_at": "2024-08-26T13:07:12.858Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 10, + "fields": { + "path": "0001000200040003", + "depth": 4, + "numchild": 0, + "translation_key": "eec22d02-df0a-4b54-b500-afb03a46083b", + "locale": 1, + "latest_revision": 110, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-08-26T15:39:23.329Z", + "last_published_at": "2024-08-27T17:09:22.413Z", + "live_revision": 110, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Liste de cartes et tuiles", + "draft_title": "Liste de cartes et tuiles", + "slug": "page-1-3", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-3/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Retrouver joue chance que. Enfant printemps vous. Bureau choisir à exister accomplir protéger fait. Retrouver joue chance que. Enfant printemps […]", + "latest_revision_created_at": "2024-08-27T17:09:22.343Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 11, + "fields": { + "path": "0001000200040004", + "depth": 4, + "numchild": 0, + "translation_key": "924f050d-c53a-419c-abc6-c5a4282300a8", + "locale": 1, + "latest_revision": 122, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-08-30T09:21:28.072Z", + "last_published_at": "2024-09-02T16:24:40.775Z", + "live_revision": 122, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Gestion des cookies", + "draft_title": "Gestion des cookies", + "slug": "page-1-4", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-4/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Supporter auquel marier. Vision installer lueur entier supérieur sembler. Recevoir voisin tour mensonge interrompre. Supporter auquel marier. Vision installer lueur […]", + "latest_revision_created_at": "2024-09-02T16:24:40.730Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 12, + "fields": { + "path": "0001000200040005", + "depth": 4, + "numchild": 0, + "translation_key": "e540e576-cb50-49e8-b36c-8470a676125c", + "locale": 1, + "latest_revision": 127, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-09-03T15:04:49.161Z", + "last_published_at": "2024-09-04T08:50:12.578Z", + "live_revision": 127, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Onglets", + "draft_title": "Onglets", + "slug": "page-1-5", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-5/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Travailler cuisine se repas journal. Avec bête système notre pointe. Travailler cuisine se repas journal. Avec bête système notre pointe. […]", + "latest_revision_created_at": "2024-09-04T08:50:12.525Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 13, + "fields": { + "path": "0001000200040006", + "depth": 4, + "numchild": 0, + "translation_key": "1bdf22f5-9963-41ee-b947-d92cd729bfaa", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 1 - 6", + "draft_title": "Page 1 - 6", + "slug": "page-1-6", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-6/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Portier paysage abattre. Avenir grave jardin. Main savoir rire fumée. Portier paysage abattre. Avenir grave jardin. Main savoir rire fumée. […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 14, + "fields": { + "path": "0001000200040007", + "depth": 4, + "numchild": 0, + "translation_key": "62936eb8-d1e6-4c8f-9444-545017bf45a7", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 1 - 7", + "draft_title": "Page 1 - 7", + "slug": "page-1-7", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-7/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Ça inviter baisser salle tendre précis. Rêve présent main muet voiture. Ça inviter baisser salle tendre précis. Rêve présent main […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 15, + "fields": { + "path": "0001000200040008", + "depth": 4, + "numchild": 0, + "translation_key": "04d648d6-3cc5-41e3-b1a6-66012206efe5", + "locale": 1, + "latest_revision": 113, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-08-28T15:17:12.095Z", + "last_published_at": "2024-08-30T09:16:59.146Z", + "live_revision": 113, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Test indentation", + "draft_title": "Test indentation", + "slug": "page-1-8", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-8/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Rayon voler faute fauteuil épaule. Or confier jouer afin de aussi malgré immobile seul. Accompagner ne port exposer parti particulier […]", + "latest_revision_created_at": "2024-08-30T09:16:59.046Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 16, + "fields": { + "path": "0001000200040009", + "depth": 4, + "numchild": 0, + "translation_key": "68b41258-f4f1-405f-be34-485deaa89e32", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 1", + "draft_title": "Page 2 - 1", + "slug": "page-2-1", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-1/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille déclarer chat d'autres. Chasse avant feu. […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 17, + "fields": { + "path": "000100020004000A", + "depth": 4, + "numchild": 0, + "translation_key": "0617e775-c615-42be-90d3-bdfe177b1e0b", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 2", + "draft_title": "Page 2 - 2", + "slug": "page-2-2", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-2/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Avis toile vert aventure paquet lever. Souffler intérêt espérer ensemble causer. Avis toile vert aventure paquet lever. Souffler intérêt espérer […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 18, + "fields": { + "path": "000100020004000B", + "depth": 4, + "numchild": 0, + "translation_key": "b92a1158-9bd1-435a-b634-75f496fa5673", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 3", + "draft_title": "Page 2 - 3", + "slug": "page-2-3", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-3/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Joue gauche vue dix situation moitié faire. Craindre suivant mêler toucher quelque. Joue gauche vue dix situation moitié faire. Craindre […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 19, + "fields": { + "path": "000100020004000C", + "depth": 4, + "numchild": 0, + "translation_key": "512c11ef-5259-4f1a-a979-6ccbbf1efac2", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 4", + "draft_title": "Page 2 - 4", + "slug": "page-2-4", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-4/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors. Chasser affirmer charge agiter intelligence ouvert vouloir […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 20, + "fields": { + "path": "000100020004000D", + "depth": 4, + "numchild": 0, + "translation_key": "5c5e769a-45f1-496d-930b-deb18262ba26", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 5", + "draft_title": "Page 2 - 5", + "slug": "page-2-5", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-5/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Vin brûler boire désormais prétendre céder arrivée. Souffrance demain découvrir papa maladie naturel. Oiseau fête au. Vin brûler boire désormais […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 21, + "fields": { + "path": "000100020004000E", + "depth": 4, + "numchild": 0, + "translation_key": "85042673-5ca5-4c87-a881-09c81497c4d2", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 6", + "draft_title": "Page 2 - 6", + "slug": "page-2-6", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-6/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Phrase contenter siècle ici attitude taille chercher couvrir. Connaissance rien fidèle chiffre remercier avancer dont détacher. Gros nature fer. Phrase […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 22, + "fields": { + "path": "000100020004000F", + "depth": 4, + "numchild": 0, + "translation_key": "f20154b6-d3b9-4887-9828-ba503138b4ce", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 2 - 7", + "draft_title": "Page 2 - 7", + "slug": "page-2-7", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-7/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Adresser nation table air car briser savoir gros. Mais à valoir maison. Assurer sauver devoir rose suffire. Adresser nation table […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 23, + "fields": { + "path": "000100020004000G", + "depth": 4, + "numchild": 1, + "translation_key": "12927b12-e8dc-4436-b7ab-6e334c9d0b0f", + "locale": 1, + "latest_revision": 138, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-09-17T09:01:26.653Z", + "last_published_at": "2024-09-18T07:39:43.727Z", + "live_revision": 138, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page protégée par mot de passe", + "draft_title": "Page protégée par mot de passe", + "slug": "page-2-8", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-8/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter désespoir. Dominer du raison ou seuil. […]", + "latest_revision_created_at": "2024-09-18T07:39:43.683Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 24, + "fields": { + "path": "000100020004000H", + "depth": 4, + "numchild": 0, + "translation_key": "d3f385d6-64f0-42d5-afc6-8f18b202e2dc", + "locale": 1, + "latest_revision": 134, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-09-17T09:30:05.260Z", + "last_published_at": "2024-09-17T09:30:05.260Z", + "live_revision": 134, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page restreinte aux éditeurs", + "draft_title": "Page restreinte aux éditeurs", + "slug": "page-3-1", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-1/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Humain veille déposer secret paysan. Traîner exister état. Solitude appuyer extraordinaire année intérieur. Humain veille déposer secret paysan. Traîner exister […]", + "latest_revision_created_at": "2024-09-17T09:30:05.229Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 25, + "fields": { + "path": "000100020004000I", + "depth": 4, + "numchild": 0, + "translation_key": "167264cc-dd0c-4152-9768-bb5a4d7589cd", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 3 - 2", + "draft_title": "Page 3 - 2", + "slug": "page-3-2", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-2/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Parmi relation habitant plaisir haut tâche figurer. Baisser libre paupière arbre. Parmi relation habitant plaisir haut tâche figurer. Baisser libre […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 26, + "fields": { + "path": "000100020004000J", + "depth": 4, + "numchild": 0, + "translation_key": "15ef2a13-7fce-4cc8-9034-1bbfeee28554", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 3 - 3", + "draft_title": "Page 3 - 3", + "slug": "page-3-3", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-3/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Fixe plein enfant content ne prendre. Juste chercher quelqu'un. Fixe plein enfant content ne prendre. Juste chercher quelqu'un. Chaleur âge […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 27, + "fields": { + "path": "000100020004000K", + "depth": 4, + "numchild": 0, + "translation_key": "da3edf3a-ace4-4b55-a712-25fbbd72209d", + "locale": 1, + "latest_revision": 133, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-09-17T09:14:08.528Z", + "last_published_at": "2024-09-17T09:14:08.528Z", + "live_revision": 133, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page restreinte aux utilisateurs connectés", + "draft_title": "Page restreinte aux utilisateurs connectés", + "slug": "page-3-4", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-4/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers société ouvrage lutte. Terrible espoir entretenir […]", + "latest_revision_created_at": "2024-09-17T09:14:08.506Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 28, + "fields": { + "path": "000100020004000L", + "depth": 4, + "numchild": 1, + "translation_key": "bab0df35-12cc-4474-9a0b-02de7c940541", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 3 - 5", + "draft_title": "Page 3 - 5", + "slug": "page-3-5", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-5/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Pitié bête flot conscience trouver. Pitié bête flot conscience trouver. Prouver sol d'abord glisser froid poursuivre taille. Réunir exposer état […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 29, + "fields": { + "path": "000100020004000M", + "depth": 4, + "numchild": 0, + "translation_key": "02cf4704-1f25-4413-add8-5b0c642a806a", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 3 - 6", + "draft_title": "Page 3 - 6", + "slug": "page-3-6", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-6/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Marier voyager mur frère mêler position genre compagnie. Choisir tuer contenter officier vie. Mari état vaincre course. Marier voyager mur […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 30, + "fields": { + "path": "000100020004000N", + "depth": 4, + "numchild": 0, + "translation_key": "c4c3deca-1b5c-430d-94a8-46b345197002", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 3 - 7", + "draft_title": "Page 3 - 7", + "slug": "page-3-7", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-7/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Soldat falloir hier elle ajouter sueur répandre. Côte tomber encore il drame souvenir parcourir. Remonter as tourner militaire précéder. Soldat […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 31, + "fields": { + "path": "000100020004000O", + "depth": 4, + "numchild": 0, + "translation_key": "84812cca-7c3c-42c4-93b2-b6fd5230332c", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 3 - 8", + "draft_title": "Page 3 - 8", + "slug": "page-3-8", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-8/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Appeler billet dieu. Derrière léger bas marche plein produire. Appeler billet dieu. Derrière léger bas marche plein produire. Époque abattre […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 32, + "fields": { + "path": "000100020004000P", + "depth": 4, + "numchild": 0, + "translation_key": "7ab68869-1c3f-4f66-8472-5d2ad68f4442", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 1", + "draft_title": "Page 4 - 1", + "slug": "page-4-1", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-1/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Observer coeur dormir. Observer coeur dormir. Couvrir puis large et éclater loup. Tuer joue fonction partie place pourtant. Observer coeur […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 33, + "fields": { + "path": "000100020004000Q", + "depth": 4, + "numchild": 0, + "translation_key": "2f3b8dce-2083-4426-aca5-e503633764e1", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 2", + "draft_title": "Page 4 - 2", + "slug": "page-4-2", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-2/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Depuis séparer lit fier. Curieux après instant poids etc jambe ennemi. Quant À prix lorsque cruel bout annoncer ouvrir. Depuis […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 34, + "fields": { + "path": "000100020004000R", + "depth": 4, + "numchild": 0, + "translation_key": "9e5793c7-8632-485f-b5a9-3234a67ba928", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 3", + "draft_title": "Page 4 - 3", + "slug": "page-4-3", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-3/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "On aucun saisir bête cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire. On aucun saisir bête […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 35, + "fields": { + "path": "000100020004000S", + "depth": 4, + "numchild": 0, + "translation_key": "376577e9-69c5-47db-ac46-e887a64fb646", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 4", + "draft_title": "Page 4 - 4", + "slug": "page-4-4", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-4/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Point plan avancer plonger résister ministre. Doigt permettre pousser fonction. Point plan avancer plonger résister ministre. Doigt permettre pousser fonction. […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 36, + "fields": { + "path": "000100020004000T", + "depth": 4, + "numchild": 0, + "translation_key": "ba77cd95-0f73-41de-9ff5-9a4524c57492", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 5", + "draft_title": "Page 4 - 5", + "slug": "page-4-5", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-5/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Digne trop examiner prêter essuyer. Pour trou comment mon hôtel moyen larme. Voisin poursuivre moyen dos quel sourd lire. Digne […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 37, + "fields": { + "path": "000100020004000U", + "depth": 4, + "numchild": 0, + "translation_key": "d330c11a-f42b-41ef-9c74-e88f6417de2b", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 6", + "draft_title": "Page 4 - 6", + "slug": "page-4-6", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-6/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Étude ci mauvais suivant trace. Approcher maison oser on. Soirée lit grand de million vert changement. Étude ci mauvais suivant […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 38, + "fields": { + "path": "000100020004000V", + "depth": 4, + "numchild": 0, + "translation_key": "f87606dc-31ab-424d-963e-b556793b1a21", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 7", + "draft_title": "Page 4 - 7", + "slug": "page-4-7", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-7/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Nécessaire cela état énorme. Jeune choix trop sous celui. Nécessaire cela état énorme. Jeune choix trop sous celui. Propre sonner […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 39, + "fields": { + "path": "000100020004000W", + "depth": 4, + "numchild": 0, + "translation_key": "c270a2be-9a25-46a7-bd26-2ce0445dfca7", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Page 4 - 8", + "draft_title": "Page 4 - 8", + "slug": "page-4-8", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-4-8/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "Lien moins admettre mais métier absolument rompre. Deux professeur précis intérieur. Lien moins admettre mais métier absolument rompre. Deux professeur […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 44, + "fields": { + "path": "000100020006", + "depth": 3, + "numchild": 0, + "translation_key": "756c7581-a1cd-4ee6-a15d-0d87c6eb4722", + "locale": 1, + "latest_revision": 7, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-06-27T08:17:22.479Z", + "last_published_at": "2024-06-27T08:17:41.386Z", + "live_revision": 7, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Contactez-nous", + "draft_title": "Contactez-nous", + "slug": "contactez-nous", + "content_type": [ + "forms", + "formpage" + ], + "url_path": "/home/contactez-nous/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": true, + "search_description": "", + "latest_revision_created_at": "2024-06-27T08:17:41.340Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 49, + "fields": { + "path": "000100020007", + "depth": 3, + "numchild": 0, + "translation_key": "e57ec700-1dff-48db-8e68-488cc369c1d2", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Contact", + "draft_title": "Contact", + "slug": "contact", + "content_type": [ + "forms", + "formpage" + ], + "url_path": "/home/contact/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 53, + "fields": { + "path": "000100020008", + "depth": 3, + "numchild": 1, + "translation_key": "2f1b9e00-3c45-446d-9dcc-4868d70c3369", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Pages d’exemple", + "draft_title": "Pages d’exemple", + "slug": "menu_page", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/menu_page/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": " […]", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 54, + "fields": { + "path": "0001000200080001", + "depth": 4, + "numchild": 0, + "translation_key": "dd229b39-7fb4-4c57-af39-1ab4eda5d1c3", + "locale": 1, + "latest_revision": null, + "live": true, + "has_unpublished_changes": false, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Formulaire avec tous les champs", + "draft_title": "Formulaire avec tous les champs", + "slug": "form_with_all_fields", + "content_type": [ + "forms", + "formpage" + ], + "url_path": "/home/menu_page/form_with_all_fields/", + "owner": null, + "seo_title": "", + "show_in_menus": true, + "search_description": "", + "latest_revision_created_at": null, + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 55, + "fields": { + "path": "0001000200030001", + "depth": 4, + "numchild": 0, + "translation_key": "61a1606a-f733-4228-8f40-1445b513fe25", + "locale": 1, + "latest_revision": 38, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-03T15:45:32.455Z", + "last_published_at": "2024-07-08T14:46:31.295Z", + "live_revision": 38, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "L’État lance une communauté numérique des ingénieurs des grands corps techniques afin de répondre aux enjeux d’attractivité et de fidélisation au sein de la filière numérique de l’État", + "draft_title": "L’État lance une communauté numérique des ingénieurs des grands corps techniques afin de répondre aux enjeux d’attractivité et de fidélisation au sein de la filière numérique de l’État", + "slug": "létat-lance-une-communauté-numérique-des-ingénieurs-des-grands-corps-techniques-afin-de-répondre-aux-enjeux-dattractivité-et-de-fidélisation-au-sein-de-la-filière-numérique-de-létat", + "content_type": [ + "blog", + "blogentrypage" + ], + "url_path": "/home/actualités/létat-lance-une-communauté-numérique-des-ingénieurs-des-grands-corps-techniques-afin-de-répondre-aux-enjeux-dattractivité-et-de-fidélisation-au-sein-de-la-filière-numérique-de-létat/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Le renforcement du pilotage et la valorisation des compétences sont des priorités absolues de l’État pour réussir ses grands chantiers […]", + "latest_revision_created_at": "2024-07-08T14:46:31.207Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 56, + "fields": { + "path": "0001000200030002", + "depth": 4, + "numchild": 0, + "translation_key": "4cefeffe-21ba-40b7-baf9-2e987fcfe103", + "locale": 1, + "latest_revision": 42, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-03T16:01:37.470Z", + "last_published_at": "2024-07-08T16:42:59.200Z", + "live_revision": 42, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Dites-le-nous une fois : l’État simplifie les démarches des citoyens en automatisant la transmission du quotient familial CAF et MSA vers les autres administrations", + "draft_title": "Dites-le-nous une fois : l’État simplifie les démarches des citoyens en automatisant la transmission du quotient familial CAF et MSA vers les autres administrations", + "slug": "dites-le-nous-une-fois-létat-simplifie-les-démarches-des-citoyens-en-automatisant-la-transmission-du-quotient-familial-caf-et-msa-vers-les-autres-administrations", + "content_type": [ + "blog", + "blogentrypage" + ], + "url_path": "/home/actualités/dites-le-nous-une-fois-létat-simplifie-les-démarches-des-citoyens-en-automatisant-la-transmission-du-quotient-familial-caf-et-msa-vers-les-autres-administrations/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Pour garantir des services publics plus simples, accessibles et efficaces, l’État doit pouvoir s’appuyer pleinement sur la puissance du numérique […]", + "latest_revision_created_at": "2024-07-08T16:42:59.163Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 57, + "fields": { + "path": "0001000200030003", + "depth": 4, + "numchild": 0, + "translation_key": "80f0b3ee-50dc-48ed-9994-9f1213d5450c", + "locale": 1, + "latest_revision": 87, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-03T16:03:21.069Z", + "last_published_at": "2024-07-24T15:35:39.715Z", + "live_revision": 87, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Retour sur « l’État dans le nuage » : une journée dédiée au Cloud dans la sphère publique", + "draft_title": "Retour sur « l’État dans le nuage » : une journée dédiée au Cloud dans la sphère publique", + "slug": "retour-sur-létat-dans-le-nuage-une-journée-dédiée-au-cloud-dans-la-sphère-publique", + "content_type": [ + "blog", + "blogentrypage" + ], + "url_path": "/home/actualités/retour-sur-létat-dans-le-nuage-une-journée-dédiée-au-cloud-dans-la-sphère-publique/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "La DINUM conviait tous les acteurs de l’écosystème Cloud le 5 mars dernier, en présence de témoins de haut niveau, […]", + "latest_revision_created_at": "2024-07-24T15:35:39.664Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 58, + "fields": { + "path": "0001000200030004", + "depth": 4, + "numchild": 0, + "translation_key": "0671bbbd-1717-4c6d-a7e2-80b18a81c989", + "locale": 1, + "latest_revision": 46, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-09T12:28:26.368Z", + "last_published_at": "2024-07-09T12:28:26.368Z", + "live_revision": 46, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Cloud : série de témoignages portant sur les succès du cloud public", + "draft_title": "Cloud : série de témoignages portant sur les succès du cloud public", + "slug": "cloud-série-de-témoignages-portant-sur-les-succès-du-cloud-public", + "content_type": [ + "blog", + "blogentrypage" + ], + "url_path": "/home/actualités/cloud-série-de-témoignages-portant-sur-les-succès-du-cloud-public/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "L’informatique en nuage (Cloud computing) est une formidable opportunité pour accélérer la transformation numérique des administrations. Après la publication de […]", + "latest_revision_created_at": "2024-07-09T12:28:26.310Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 59, + "fields": { + "path": "000100020009", + "depth": 3, + "numchild": 7, + "translation_key": "ac74c561-8ea6-4ef7-9da2-c4a2af0c9eea", + "locale": 1, + "latest_revision": 74, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-15T13:34:17.207Z", + "last_published_at": "2024-07-23T10:01:47.166Z", + "live_revision": 74, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Agenda", + "draft_title": "Agenda", + "slug": "agenda", + "content_type": [ + "events", + "eventsindexpage" + ], + "url_path": "/home/agenda/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": true, + "search_description": "aa […]", + "latest_revision_created_at": "2024-07-23T10:01:47.123Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 60, + "fields": { + "path": "0001000200090001", + "depth": 4, + "numchild": 0, + "translation_key": "9d1f94bf-53f2-44e7-ad05-5bb399b37488", + "locale": 1, + "latest_revision": 69, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-15T14:11:30.945Z", + "last_published_at": "2024-07-17T16:27:41.693Z", + "live_revision": 69, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Formation à l'écoconception", + "draft_title": "Formation à l'écoconception", + "slug": "formation-à-lécoconception-17-septembre-2024", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/formation-à-lécoconception-17-septembre-2024/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Vous êtes un agent public travaillant dans le numérique et les sujets environnementaux vous intéressent ? Participez à la formation […]", + "latest_revision_created_at": "2024-07-17T16:27:41.637Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 61, + "fields": { + "path": "0001000200090002", + "depth": 4, + "numchild": 0, + "translation_key": "9f33ef5e-7591-4fcf-83b4-970e5a7e82a1", + "locale": 1, + "latest_revision": 64, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-15T15:59:27.806Z", + "last_published_at": "2024-07-15T16:01:56.795Z", + "live_revision": 64, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Événement dans le passé", + "draft_title": "Événement dans le passé", + "slug": "événement-dans-le-passé", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/événement-dans-le-passé/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Cet événement a déjà eu lieu. […]", + "latest_revision_created_at": "2024-07-15T16:01:56.757Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 62, + "fields": { + "path": "0001000200090003", + "depth": 4, + "numchild": 0, + "translation_key": "998a7e46-fa5d-437e-9c14-a43f1609be79", + "locale": 1, + "latest_revision": 90, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-22T15:12:14.282Z", + "last_published_at": "2024-07-25T14:16:34.017Z", + "live_revision": 90, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Webinaire de présentation de La Suite numérique de l’État", + "draft_title": "Webinaire de présentation de La Suite numérique de l’État", + "slug": "webinaire-de-présentation-de-la-suite-numérique-de-létat", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/webinaire-de-présentation-de-la-suite-numérique-de-létat/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Agents publics, rejoignez la communauté de La Suite numérique pour apprendre à utiliser les applications à la carte et interconnectées […]", + "latest_revision_created_at": "2024-07-25T14:16:33.935Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 63, + "fields": { + "path": "0001000200090004", + "depth": 4, + "numchild": 0, + "translation_key": "d092dbb0-a6f3-42e8-9717-e9d9314dc724", + "locale": 1, + "latest_revision": 72, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-22T15:17:35.668Z", + "last_published_at": "2024-07-22T15:18:06.230Z", + "live_revision": 72, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "La DINUM partenaire de Numérique en Commun[s] à Chambéry", + "draft_title": "La DINUM partenaire de Numérique en Commun[s] à Chambéry", + "slug": "la-dinum-partenaire-de-numérique-en-communs-à-chambéry", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/la-dinum-partenaire-de-numérique-en-communs-à-chambéry/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "La DINUM est partenaire de Numérique en Commun[s] qui se tiendra du 24 au 26 septembre à Chambéry. L’objectif de […]", + "latest_revision_created_at": "2024-07-22T15:18:06.164Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 64, + "fields": { + "path": "0001000200090005", + "depth": 4, + "numchild": 0, + "translation_key": "a81cb3ab-2e10-46d2-83cb-01faa74a34a3", + "locale": 1, + "latest_revision": 73, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-23T09:52:09.625Z", + "last_published_at": "2024-07-23T09:52:09.625Z", + "live_revision": 73, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Journée Numérique & Territoires", + "draft_title": "Journée Numérique & Territoires", + "slug": "journée-numérique-territoires", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/journée-numérique-territoires/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "La direction interministérielle du numérique (DINUM) et l’Agence nationale de la cohésion des territoires (ANCT) organisent la 2ème édition “Journée […]", + "latest_revision_created_at": "2024-07-23T09:52:09.576Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 65, + "fields": { + "path": "0001000200090006", + "depth": 4, + "numchild": 0, + "translation_key": "63eb5c09-1de9-4271-94d7-20b2bed99b7a", + "locale": 1, + "latest_revision": 79, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-24T14:38:05.618Z", + "last_published_at": "2024-07-24T14:38:28.929Z", + "live_revision": 79, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Événement loin dans le passé", + "draft_title": "Événement loin dans le passé", + "slug": "événement-loin-dans-le-passé", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/événement-loin-dans-le-passé/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Cet événement a déjà eu lieu. […]", + "latest_revision_created_at": "2024-07-24T14:38:28.885Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 66, + "fields": { + "path": "0001000200090007", + "depth": 4, + "numchild": 0, + "translation_key": "002ffccd-f083-4736-a0b6-03c9f0455eb5", + "locale": 1, + "latest_revision": 85, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-07-24T14:41:15.742Z", + "last_published_at": "2024-07-24T14:41:52.265Z", + "live_revision": 85, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Événement encore plus loin dans le passé", + "draft_title": "Événement encore plus loin dans le passé", + "slug": "événement-encore-plus-loin-dans-le-passé", + "content_type": [ + "events", + "evententrypage" + ], + "url_path": "/home/agenda/événement-encore-plus-loin-dans-le-passé/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Cet événement a déjà eu lieu. […]", + "latest_revision_created_at": "2024-07-24T14:41:52.222Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 67, + "fields": { + "path": "00010002000400020001", + "depth": 5, + "numchild": 0, + "translation_key": "eacad201-3656-48bd-904f-a4976f9efe51", + "locale": 1, + "latest_revision": 95, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-08-26T13:11:14.797Z", + "last_published_at": "2024-08-26T13:11:25.687Z", + "live_revision": 95, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Chapitre 2", + "draft_title": "Chapitre 2", + "slug": "chapitre-2", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-2/chapitre-2/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": true, + "search_description": "Dans cette rubrique Publications Intégration superset Page avec barre latérale Page 1 - 3 Page 1 - 4 Page 1 […]", + "latest_revision_created_at": "2024-08-26T13:11:25.655Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 68, + "fields": { + "path": "00010002000400020002", + "depth": 5, + "numchild": 0, + "translation_key": "a92f934a-e23e-43de-9fb6-e0d14a19ee01", + "locale": 1, + "latest_revision": 97, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-08-26T13:12:23.826Z", + "last_published_at": "2024-08-26T13:12:37.948Z", + "live_revision": 97, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Chapitre 3", + "draft_title": "Chapitre 3", + "slug": "chapitre-3", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-1-2/chapitre-3/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": true, + "search_description": "Dans cette rubrique Publications Intégration superset Page avec barre latérale Chapitre 2 Page 1 - 3 Page 1 - 4 […]", + "latest_revision_created_at": "2024-08-26T13:12:37.892Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 69, + "fields": { + "path": "000100020004000L0001", + "depth": 5, + "numchild": 0, + "translation_key": "0b9418e2-1db5-485a-9bf2-66ec336574b6", + "locale": 1, + "latest_revision": 131, + "live": false, + "has_unpublished_changes": true, + "first_published_at": null, + "last_published_at": null, + "live_revision": null, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Brouillon", + "draft_title": "Brouillon", + "slug": "brouillon", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-3-5/brouillon/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Cette page restera en brouillon […]", + "latest_revision_created_at": "2024-09-11T10:17:23.367Z", + "alias_of": null + } + }, + { + "model": "wagtailcore.page", + "pk": 70, + "fields": { + "path": "000100020004000G0001", + "depth": 5, + "numchild": 0, + "translation_key": "2e87a4c4-16a0-4242-a74d-aeb036a61405", + "locale": 1, + "latest_revision": 135, + "live": true, + "has_unpublished_changes": false, + "first_published_at": "2024-09-17T10:20:28.436Z", + "last_published_at": "2024-09-17T10:20:28.436Z", + "live_revision": 135, + "go_live_at": null, + "expire_at": null, + "expired": false, + "locked": false, + "locked_at": null, + "locked_by": null, + "title": "Sous-page de la page protégée par mot de passe.", + "draft_title": "Sous-page de la page protégée par mot de passe.", + "slug": "sous-page-de-la-page-protégée-par-mot-de-passe", + "content_type": [ + "content_manager", + "contentpage" + ], + "url_path": "/home/publications/page-2-8/sous-page-de-la-page-protégée-par-mot-de-passe/", + "owner": [ + "ashig" + ], + "seo_title": "", + "show_in_menus": false, + "search_description": "Page vide. […]", + "latest_revision_created_at": "2024-09-17T10:20:28.409Z", + "alias_of": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 3, + "fields": { + "body": "[{\"id\": \"f042a295-04f9-43b7-b324-963104917b99\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"4d596a74-a9ad-400d-bc43-8e5bc87cfde6\", \"type\": \"text\", \"value\": \"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

\"}, {\"id\": \"c279336b-c2bd-42cf-a674-97e334a48151\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 63, \"title\": \"\", \"width\": \"\", \"caption\": \"L\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"beaf3105-5af7-424a-aa1c-fbecdb9f3cd2\", \"type\": \"text\", \"value\": \"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

\"}], \"bg_color_class\": \"grey\", \"sidemenu_title\": \"Menu lat\\u00e9ral\", \"sidemenu_content\": [{\"id\": \"ad019dcc-5f4b-4a68-9ef8-1f4e80f407f7\", \"type\": \"html\", \"value\": \"
\"}]}}, {\"id\": \"c4a8bd8e-1ca3-44bc-8a9c-ce3c1feceefe\", \"type\": \"events_recent_entries\", \"value\": {\"title\": \"\\u00c9v\\u00e9nements r\\u00e9cents\", \"index_page\": 59, \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": false, \"author_filter\": null, \"entries_count\": 4, \"source_filter\": null, \"category_filter\": null}}, {\"id\": \"511da050-4920-401b-bc62-8ca53ad3bd4d\", \"type\": \"blog_recent_entries\", \"value\": {\"blog\": 6, \"title\": \"Actus\", \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": true, \"author_filter\": null, \"entries_count\": 3, \"source_filter\": 3, \"category_filter\": 3}}, {\"id\": \"7ea494aa-89a9-4965-8a37-bc277d70a27e\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 63, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Les boutons d\\u2019appel \\u00e0 action des cartes peuvent maintenant \\u00e9galement avoir des ic\\u00f4nes

\", \"heading_tag\": \"h2\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [{\"id\": \"6f0b342c-18d3-4ba4-a049-c605603d5db4\", \"type\": \"buttons\", \"value\": [{\"id\": \"e038ee8e-14bc-4a2c-a63c-7d8a0bbcd688\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 1\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-attachment-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"dfff96cd-faa2-4d94-8551-929c8ef79da6\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 2\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-bookmark-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"3478ae00-f351-485c-987a-907e0e645644\", \"type\": \"callout\", \"value\": {\"text\": \"\", \"color\": \"\", \"title\": \"De m\\u00eame pour ceux des mises en avant\", \"button\": {\"page\": null, \"text\": \"Bouton\", \"document\": 1, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-slideshow-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"fr-icon-community-line\", \"heading_tag\": \"h3\"}}, {\"id\": \"d1cba9b0-6018-4332-8d24-e85e92a65906\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"c747b7b2-9a0f-4880-b5c9-fbd535ed7dec\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Les appels \\u00e0 action peuvent maintenant avoir plusieurs boutons.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a2a37bed-e000-49b7-89a7-dc692d51e398\", \"type\": \"buttons\", \"value\": [{\"id\": \"a9996262-af55-40f9-9502-e799a492fb67\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton primaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hospital-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"b85b1d60-62a0-49f6-9f7b-99bee906f288\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton secondaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hotel-fill\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]}}], \"bg_image\": null, \"bg_color_class\": \"blue-france\"}}, {\"id\": \"2b6a6f07-0bfb-40a0-bf10-a1e732ad2f2f\", \"type\": \"paragraph\", \"value\": \"

En particulier, vous devrez :

  • Configurer le site dans Configuration > Configuration du site
  • Remplacer le contenu de la page de mentions l\\u00e9gales
  • Remplacer le contenu de cette page d\\u2019accueil.
\"}]", + "header_with_title": true, + "header_image": 63, + "header_color_class": "blue-france", + "header_large": false, + "header_darken": true, + "header_cta_text": "

Appel à action de l’en-tête :

  • C'est maintenant du texte riche
  • Il peut donc contenir du gras, de l’italique ou des listes à puces.
", + "header_cta_buttons": "[{\"id\": \"3d5d2c50-6b94-4ace-9138-374e11b84315\", \"type\": \"buttons\", \"value\": [{\"id\": \"086183f4-405f-43d6-9537-5a9470f7759a\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton principal\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-award-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"53228443-09d5-4fdd-86ed-2c4194f7bbce\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"En savoir plus\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-add-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 4, + "fields": { + "body": "[{\"id\": \"80f8f8d0-2cdf-418b-9a50-f91288c4d7da\", \"type\": \"alert\", \"value\": {\"level\": \"info\", \"title\": \"Mentions l\\u00e9gales\", \"description\": \"Entrez ici les mentions l\\u00e9gales du site.
\\n
\\n Que doivent-elles obligatoirement contenir\\u00a0?\", \"heading_tag\": \"h2\"}}, {\"id\": \"40aaa3f5-d8a1-4b81-a332-56a21c8cbd67\", \"type\": \"paragraph\", \"value\": \"\\n

D\\u2019apr\\u00e8s la documentation du syst\\u00e8me de design,\\n le pied de page doit contenir a minima les quatre liens suivants :

\\n \\n

Ces deux derniers peuvent pointer vers des pages \\u00e0 part enti\\u00e8re ou des sections de cette page.

\\n \"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 5, + "fields": { + "body": "[{\"id\": \"2da507b3-d101-4513-8a22-10d232621893\", \"type\": \"alert\", \"value\": {\"level\": \"info\", \"title\": \"D\\u00e9claration d\\u2019accessibilit\\u00e9\", \"description\": \"Entrez ici la d\\u00e9claration d\\u2019accessibilit\\u00e9.
\\n \\n G\\u00e9n\\u00e9rateur de d\\u00e9claration d\\u2019accessibilit\\u00e9\", \"heading_tag\": \"h2\"}}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 7, + "fields": { + "body": "[{\"id\": \"9ecba372-c63f-4bbd-9526-df96bce841ab\", \"type\": \"subpageslist\", \"value\": null}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 8, + "fields": { + "body": "[{\"id\": \"3993aeee-3abf-495d-b943-fa7e12bb1e68\", \"type\": \"iframe\", \"value\": {\"url\": \"https://superset-opi.lab.sspcloud.fr/superset/dashboard/4/?standalone=true&native_filters_key=nvGJtoonMO4grK1O84e0rt2qVN_BcH-gpNN8MJefnQfH_YOBjArK6XP8EiyTz92e\", \"title\": \"Tableau de bord d\\u2019exemple\", \"height\": 800, \"parameters\": \"\"}}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 9, + "fields": { + "body": "[{\"id\": \"6869f659-52e1-498c-ade2-f96bfeb8fb25\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"902c2d60-12a1-414c-a5a6-8fcd9f1104b2\", \"type\": \"text\", \"value\": \"

Le nom de famille de mon p\\u00e8re \\u00e9tant Pirrip, et mon nom de bapt\\u00eame Philip, ma langue enfantine ne put jamais former de ces deux mots rien de plus long et de plus explicite que Pip. C\\u2019est ainsi que je m\\u2019appelai moi-m\\u00eame Pip, et que tout le monde m\\u2019appela Pip.

Si je donne Pirrip comme le nom de famille de mon p\\u00e8re, c\\u2019est d\\u2019apr\\u00e8s l\\u2019autorit\\u00e9 de l\\u2019\\u00e9pitaphe de son tombeau, et l\\u2019attestation de ma s\\u0153ur, Mrs Joe Gargery, qui a \\u00e9pous\\u00e9 le forgeron. N\\u2019ayant jamais vu ni mon p\\u00e8re, ni ma m\\u00e8re, m\\u00eame en portrait puisqu\\u2019ils vivaient bien avant les photographes, la premi\\u00e8re id\\u00e9e que je me formai de leur personne fut tir\\u00e9e, avec assez peu de raison, du reste, de leurs pierres tumulaires. La forme des lettres trac\\u00e9es sur celle de mon p\\u00e8re me donna l\\u2019id\\u00e9e bizarre que c\\u2019\\u00e9tait un homme brun, fort, carr\\u00e9, ayant les cheveux noirs et fris\\u00e9s. De la tournure et des caract\\u00e8res de cette inscription\\u00a0: Et aussi Georgiana, \\u00e9pouse du ci-dessus, je tirai la conclusion enfantine que ma m\\u00e8re avait \\u00e9t\\u00e9 une femme faible et maladive. Les cinq petites losanges de pierre, d\\u2019environ un pied et demi de longueur, qui \\u00e9taient rang\\u00e9es avec soin \\u00e0 c\\u00f4t\\u00e9 de leur tombe, et d\\u00e9di\\u00e9es \\u00e0 la m\\u00e9moire de cinq petits fr\\u00e8res qui avaient quitt\\u00e9 ce monde apr\\u00e8s y \\u00eatre \\u00e0 peine entr\\u00e9s, firent na\\u00eetre en moi une pens\\u00e9e que j\\u2019ai religieusement conserv\\u00e9e depuis, c\\u2019est qu\\u2019ils \\u00e9taient venus en ce monde couch\\u00e9s sur leurs dos, les mains dans les poches de leurs pantalons, et qu\\u2019ils n\\u2019\\u00e9taient jamais sortis de cet \\u00e9tat d\\u2019immobilit\\u00e9.

Notre pays est une contr\\u00e9e mar\\u00e9cageuse, situ\\u00e9e \\u00e0 vingt milles de la mer, pr\\u00e8s de la rivi\\u00e8re qui y conduit en serpentant. La premi\\u00e8re impression que j\\u2019\\u00e9prouvai de l\\u2019existence des choses ext\\u00e9rieures semble m\\u2019\\u00eatre venue par une m\\u00e9morable apr\\u00e8s-midi, froide, tirant vers le soir. \\u00c0 ce moment, je devinai que ce lieu glac\\u00e9, envahi par les orties, \\u00e9tait le cimeti\\u00e8re\\u00a0; que Philip Pirrip, d\\u00e9c\\u00e9d\\u00e9 dans cette paroisse, et Georgiana, sa femme, y \\u00e9taient enterr\\u00e9s\\u00a0; que Alexander, Bartholomew, Abraham, Tobias et Roger, fils desdits, y \\u00e9taient \\u00e9galement morts et enterr\\u00e9s\\u00a0; que ce grand d\\u00e9sert plat, au del\\u00e0 du cimeti\\u00e8re, entrecoup\\u00e9 de murailles, de foss\\u00e9s, et de portes, avec des bestiaux qui y paissaient \\u00e7\\u00e0 et l\\u00e0, se composait de marais\\u00a0; que cette petite ligne de plomb plus loin \\u00e9tait la rivi\\u00e8re, et que cette vaste \\u00e9tendue, plus \\u00e9loign\\u00e9e encore, et d\\u2019o\\u00f9 nous venait le vent, \\u00e9tait la mer\\u00a0; et ce petit amas de chairs tremblantes effray\\u00e9 de tout cela et commen\\u00e7ant \\u00e0 crier, \\u00e9tait Pip.

\\u00ab\\u00a0Tais-toi\\u00a0! s\\u2019\\u00e9cria une voix terrible, au moment o\\u00f9 un homme parut au milieu des tombes, pr\\u00e8s du portail de l\\u2019\\u00e9glise. Tiens-toi tranquille, petit dr\\u00f4le, ou je te coupe la gorge\\u00a0!\\u00a0\\u00bb

C\\u2019\\u00e9tait un homme effrayant \\u00e0 voir, v\\u00eatu tout en gris, avec un anneau de fer \\u00e0 la jambe\\u00a0; un homme sans chapeau, avec des souliers us\\u00e9s et trou\\u00e9s, et une vieille loque autour de la t\\u00eate\\u00a0; un homme tremp\\u00e9 par la pluie, tout couvert de boue, estropi\\u00e9 par les pierres, \\u00e9corch\\u00e9 par les cailloux, d\\u00e9chir\\u00e9 par les \\u00e9pines, piqu\\u00e9 par les orties, \\u00e9gratign\\u00e9 par les ronces\\u00a0; un homme qui boitait, grelottait, grognait, dont les yeux flamboyaient, et dont les dents claquaient, lorsqu\\u2019il me saisit par le menton.

\\u00ab\\u00a0Oh\\u00a0! monsieur, ne me coupez pas la gorge\\u00a0!\\u2026 m\\u2019\\u00e9criai-je avec terreur. Je vous en prie, monsieur\\u2026, ne me faites pas de mal\\u00a0!\\u2026

\\u2014 Dis-moi ton nom, fit l\\u2019homme, et vivement\\u00a0!

\\u2014 Pip, monsieur\\u2026.

\\u2014 Encore une fois, dit l\\u2019homme en me fixant, ton nom\\u2026 ton nom\\u00a0?\\u2026

\\u2014 Pip\\u2026 Pip\\u2026 monsieur\\u2026

\\u2014 Montre-nous o\\u00f9 tu demeures, dit l\\u2019homme, montre-nous ta maison.\\u00a0\\u00bb

J\\u2019indiquai du doigt notre village, qu\\u2019on apercevait parmi les aulnes et les peupliers, \\u00e0 un mille ou deux de l\\u2019\\u00e9glise.

L\\u2019homme, apr\\u00e8s m\\u2019avoir examin\\u00e9 pendant quelques minutes, me retourna la t\\u00eate en bas, les pieds en l\\u2019air et vida mes poches. Elles ne contenaient qu\\u2019un morceau de pain. Quand je revins \\u00e0 moi, il avait agi si brusquement, et j\\u2019avais \\u00e9t\\u00e9 si effray\\u00e9, que je voyais tout sens dessus dessous, et que le clocher de l\\u2019\\u00e9glise semblait \\u00eatre \\u00e0 mes pieds\\u00a0; quand je revins \\u00e0 moi, dis-je, j\\u2019\\u00e9tais assis sur une grosse pierre, o\\u00f9 je tremblais pendant qu\\u2019il d\\u00e9vorait mon pain avec avidit\\u00e9.

\\u00ab\\u00a0Mon jeune gaillard, dit l\\u2019homme, en se l\\u00e9chant les l\\u00e8vres, tu as des joues bien grasses.\\u00a0\\u00bb

Je crois qu\\u2019effectivement mes joues \\u00e9taient grasses, bien que je fusse rest\\u00e9 petit et faible pour mon \\u00e2ge.

\\u00ab\\u00a0Du diable si je ne les mangerais pas\\u00a0! dit l\\u2019homme en faisant un signe de t\\u00eate mena\\u00e7ant, je crois m\\u00eame que j\\u2019en ai quelque envie.\\u00a0\\u00bb

J\\u2019exprimai l\\u2019espoir qu\\u2019il n\\u2019en ferait rien, et je me cramponnai plus solidement \\u00e0 la pierre sur laquelle il m\\u2019avait plac\\u00e9, autant pour m\\u2019y tenir en \\u00e9quilibre que pour m\\u2019emp\\u00eacher de crier.

\\u00ab\\u00a0Allons, dit l\\u2019homme, parle\\u00a0! o\\u00f9 est ta m\\u00e8re\\u00a0?

\\u2014 L\\u00e0, monsieur\\u00a0!\\u00a0\\u00bb r\\u00e9pondis-je.

Il fit un mouvement, puis quelques pas, et s\\u2019arr\\u00eata pour regarder par-dessus son \\u00e9paule.

\\u00ab\\u00a0L\\u00e0, monsieur\\u00a0! repris-je timidement en montrant la tombe. Aussi Georgiana. C\\u2019est ma m\\u00e8re\\u00a0!

\\u2014 Oh\\u00a0! dit-il en revenant, et c\\u2019est ton p\\u00e8re qui est l\\u00e0 \\u00e9tendu \\u00e0 c\\u00f4t\\u00e9 de ta m\\u00e8re\\u00a0?

\\u2014 Oui, monsieur, dis-je, c\\u2019est lui, d\\u00e9funt de cette paroisse.

\\u2014 Ah\\u00a0! murmura-t-il en r\\u00e9fl\\u00e9chissant, avec qui demeures-tu, en supposant qu\\u2019on te laisse demeurer quelque part, ce dont je ne suis pas certain\\u00a0?

\\u2014 Avec ma s\\u0153ur, monsieur\\u2026 Mrs Joe Gargery\\u2026 la femme de Joe Gargery, le forgeron, monsieur.

\\u2014 Le forgeron\\u2026 hein\\u00a0?\\u00a0\\u00bb dit-il en regardant le bas de sa jambe.

Apr\\u00e8s avoir pendant un instant promen\\u00e9 ses yeux alternativement sur moi et sur sa jambe, il me prit dans ses bras, me souleva, et, me tenant de mani\\u00e8re \\u00e0 ce que ses yeux plongeassent dans les miens, de haut en bas, et les miens dans les siens, de bas en haut, il dit\\u00a0:

\\u00ab\\u00a0Maintenant, \\u00e9coute-moi bien, c\\u2019est toi qui vas d\\u00e9cider si tu dois vivre. Tu sais ce que c\\u2019est qu\\u2019une lime\\u00a0?

\\u2014 Oui, monsieur\\u2026

\\u2014 Tu sais aussi ce que c\\u2019est que des vivres\\u00a0?

\\u2014 Oui, monsieur\\u2026\\u00a0\\u00bb

Apr\\u00e8s chaque question, il me secouait un peu plus fort, comme pour me donner une id\\u00e9e plus sensible de mon abandon et du danger que je courais.

\\u00ab\\u00a0Tu me trouveras une lime\\u2026\\u00a0\\u00bb

Il me secouait.

\\u00ab\\u00a0Et tu me trouveras des vivres\\u2026\\u00a0\\u00bb

Il me secouait encore.

\\u00ab\\u00a0Tu m\\u2019apporteras ces deux choses\\u2026\\u00a0\\u00bb

Il me secouait plus fort.

\\u00ab\\u00a0Ou j\\u2019aurai ton c\\u0153ur et ton foie\\u2026\\u00a0\\u00bb

Et il me secouait toujours.

J\\u2019\\u00e9tais mortellement effray\\u00e9 et si \\u00e9tourdi, que je me cramponnai \\u00e0 lui en disant\\u00a0:

\\u00ab\\u00a0Si vous vouliez bien ne pas tant me secouer, monsieur, peut-\\u00eatre n\\u2019aurais-je pas mal au c\\u0153ur, et peut-\\u00eatre entendrais-je mieux\\u2026\\u00a0\\u00bb

Il me donna une secousse si terrible, qu\\u2019il me sembla voir danser le coq sur son clocher. Alors il me soutint par les bras, dans une position verticale, sur le bloc de pierre, puis il continua en ces termes effrayants\\u00a0:

\\u00ab\\u00a0Tu m\\u2019apporteras demain matin, \\u00e0 la premi\\u00e8re heure, une lime et des vivres. Tu m\\u2019apporteras le tout dans la vieille Batterie l\\u00e0-bas. Tu auras soin de ne pas dire un mot, de ne pas faire un signe qui puisse faire penser que tu m\\u2019as vu, ou que tu as vu quelque autre personne\\u00a0; \\u00e0 ces conditions, on te laissera vivre. Si tu manques \\u00e0 cette promesse en quelque mani\\u00e8re que ce soit, ton c\\u0153ur et ton foie te seront arrach\\u00e9s, pour \\u00eatre r\\u00f4tis et mang\\u00e9s. Et puis, je ne suis pas seul, ainsi que tu peux le croire. Il y a l\\u00e0 un jeune homme avec moi, un jeune homme aupr\\u00e8s duquel je suis un ange. Ce jeune homme entend ce que je te dis. Ce jeune homme a un moyen tout particulier de se procurer le c\\u0153ur et le foie des petits gars de ton esp\\u00e8ce. Il est impossible, \\u00e0 n\\u2019importe quel moucheron comme toi, de le fuir ou de se cacher de lui. Tu auras beau fermer la porte au verrou, te croire en s\\u00fbret\\u00e9 dans ton lit bien chaud, te cacher la t\\u00eate sous les couvertures, et esp\\u00e9rer que tu es \\u00e0 l\\u2019abri de tout danger, ce jeune homme saura s\\u2019approcher de toi et t\\u2019ouvrir le ventre. Ce n\\u2019est qu\\u2019avec de grandes difficult\\u00e9s que j\\u2019emp\\u00eache en ce moment ce jeune homme de te faire du mal. J\\u2019ai beaucoup de peine \\u00e0 l\\u2019emp\\u00eacher de fouiller tes entrailles. Eh bien\\u00a0! qu\\u2019en dis-tu\\u00a0?\\u00a0\\u00bb

Je lui dis que je lui procurerais la lime dont il avait besoin, et toutes les provisions que je pourrais apporter, et que je viendrais le trouver \\u00e0 la Batterie, le lendemain, \\u00e0 la premi\\u00e8re heure.

\\u00ab\\u00a0R\\u00e9p\\u00e8te apr\\u00e8s moi\\u00a0: \\u00ab\\u00a0Que Dieu me frappe de mort, si je ne fais pas ce que vous m\\u2019ordonnez,\\u00a0\\u00bb fit l\\u2019homme.

Je dis ce qu\\u2019il voulut, et il me posa \\u00e0 terre.

\\u00ab\\u00a0Maintenant, reprit-il, souviens-toi de ce que tu promets, souviens-toi de ce jeune homme, et rentre chez toi\\u00a0!

\\u2014 Bon\\u2026 bonsoir\\u2026 monsieur, murmurai-je en tremblant.

\\u2014 C\\u2019est \\u00e9gal\\u00a0! dit-il en jetant les yeux sur le sol humide. Je voudrais bien \\u00eatre grenouille ou anguille.\\u00a0\\u00bb

En m\\u00eame temps il entoura son corps grelottant avec ses grands bras, en les serrant tellement qu\\u2019ils avaient l\\u2019air d\\u2019y tenir, et s\\u2019en alla en boitant le long du mur de l\\u2019\\u00e9glise. Comme je le regardais s\\u2019en aller \\u00e0 travers les ronces et les orties qui couvraient les tertres de gazon, il sembla \\u00e0 ma jeune imagination qu\\u2019il \\u00e9ludait, en passant, les mains que les morts \\u00e9tendaient avec pr\\u00e9caution hors de leurs tombes, pour le saisir \\u00e0 la cheville et l\\u2019attirer chez eux.

Lorsqu\\u2019il arriva au pied du mur qui entoure le cimeti\\u00e8re, il l\\u2019escalada comme un homme dont les jambes sont roides et engourdies, puis il se retourna pour voir ce que je faisais. Je me tournai alors du c\\u00f4t\\u00e9 de la maison, et fis de mes jambes le meilleur usage possible. Mais bient\\u00f4t, regardant en arri\\u00e8re, je le vis s\\u2019avancer vers la rivi\\u00e8re, toujours envelopp\\u00e9 de ses bras, et choisissant pour ses pieds malades les grandes pierres jet\\u00e9es \\u00e7\\u00e0 et l\\u00e0 dans les marais, pour servir de passerelles, lorsqu\\u2019il avait beaucoup plu ou que la mar\\u00e9e y \\u00e9tait mont\\u00e9e.

Les marais formaient alors une longue ligne noire horizontale, la rivi\\u00e8re formait une autre ligne un peu moins large et moins noire, les nuages, eux, formaient de longues lignes rouges et noires, entrem\\u00eal\\u00e9es et mena\\u00e7antes. Sur le bord de la rivi\\u00e8re, je distinguais \\u00e0 peine les deux seuls objets noirs qui se d\\u00e9tachaient dans toute la perspective qui s\\u2019\\u00e9tendait devant moi\\u00a0: l\\u2019un \\u00e9tait le fanal destin\\u00e9 \\u00e0 guider les matelots, ressemblant assez \\u00e0 un casque sans houppe plac\\u00e9 sur une perche, et qui \\u00e9tait fort laid vu de pr\\u00e8s\\u00a0; l\\u2019autre, un gibet, avec ses cha\\u00eenes pendantes, auquel on avait jadis pendu un pirate. L\\u2019homme, qui s\\u2019avan\\u00e7ait en boitant vers ce dernier objet, semblait \\u00eatre le pirate revenu \\u00e0 la vie, et allant se raccrocher et se reprendre lui-m\\u00eame. Cette pens\\u00e9e me donna un terrible moment de vertige\\u00a0; et, en voyant les bestiaux lever leurs t\\u00eates vers lui, je me demandais s\\u2019ils ne pensaient pas comme moi. Je regardais autour de moi pour voir si je n\\u2019apercevais pas l\\u2019horrible jeune homme, je n\\u2019en vis pas la moindre trace\\u00a0; mais la frayeur me reprit tellement, que je courus \\u00e0 la maison sans m\\u2019arr\\u00eater.

\"}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"28074a29-b27a-4531-87c8-e56343da9cb6\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 10, + "fields": { + "body": "[{\"id\": \"51590992-7dcd-4c86-8e2a-293cd765356b\", \"type\": \"paragraph\", \"value\": \"

Grilles d'\\u00e9l\\u00e9ments disparates

\"}, {\"id\": \"9bc9ec2c-8ec4-4ee7-8afd-520563edaf29\", \"type\": \"item_grid\", \"value\": {\"items\": [{\"id\": \"dc6078da-3b2e-43d5-b071-86cb1c8892d2\", \"type\": \"tile\", \"value\": {\"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 45, \"title\": \"Tuile 1\", \"shadow\": false, \"is_small\": false, \"no_border\": false, \"description\": \"\", \"detail_text\": \"\", \"heading_tag\": \"h3\", \"is_horizontal\": false, \"no_background\": false, \"grey_background\": false, \"top_detail_badges_tags\": []}}, {\"id\": \"2280780c-f83d-4a48-a745-3ce4f6795e25\", \"type\": \"tile\", \"value\": {\"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 45, \"title\": \"Tuile 1\", \"shadow\": false, \"is_small\": false, \"no_border\": false, \"description\": \"\", \"detail_text\": \"\", \"heading_tag\": \"h3\", \"is_horizontal\": false, \"no_background\": false, \"grey_background\": false, \"top_detail_badges_tags\": []}}, {\"id\": \"4e7ac1dc-b388-48c7-93ac-14231f1791d7\", \"type\": \"text\", \"value\": \"

Blaa blaa

\"}, {\"id\": \"c2e16ce0-d14c-4c60-89d4-bf5cdb5a373c\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 68, \"title\": \"\", \"width\": \"\", \"caption\": \"Image avec l\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"7babfbb9-6959-4e61-b44e-9b4860f60cb6\", \"type\": \"text\", \"value\": \"

Retrouver joue chance que. Enfant printemps vous. Bureau choisir \\u00e0 exister accomplir prot\\u00e9ger fait.

Plonger ensuite confiance mourir note sorte eaux. Jeter amener souvenir histoire gris.

\"}, {\"id\": \"7c41aa7c-2ad3-4504-bedc-5c94e245c529\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Ceci est un texte avec un appel \\u00e0 action.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a9907032-fb19-45bf-8d15-9c654c8aefd3\", \"type\": \"buttons\", \"value\": [{\"id\": \"9e6ec725-e575-4d8f-a37c-6355448728b0\", \"type\": \"button\", \"value\": {\"page\": 6, \"text\": \"Cliquez ici\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-moon-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}]}]}}, {\"id\": \"1e2c0e37-ea74-4242-97c7-3a2b6b09d432\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 62, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Texte de la carte

\", \"heading_tag\": \"h3\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"b22c317a-1fb7-4583-bb86-f386fe380729\", \"type\": \"callout\", \"value\": {\"text\": \"

Contenu de la mise en avant

\", \"color\": \"\", \"title\": \"Mise en avant\", \"button\": {\"page\": 7, \"text\": \"Bouton\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-archive-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"\", \"heading_tag\": \"h3\"}}, {\"id\": \"118d841b-e2a7-4f16-8e8e-3799df623d3d\", \"type\": \"quote\", \"value\": {\"color\": \"\", \"image\": 67, \"quote\": \"My name is Bond... James Bond\", \"author_name\": \"Ian Fleming\", \"author_title\": \"Casino Royale\"}}], \"column_width\": \"4\"}}, {\"id\": \"12332a6e-f891-4869-8546-702fce23ae0c\", \"type\": \"paragraph\", \"value\": \"

Retrouver joue chance que. Enfant printemps vous. Bureau choisir \\u00e0 exister accomplir prot\\u00e9ger fait.

Plonger ensuite confiance mourir note sorte eaux. Jeter amener souvenir histoire gris.

Genou champ chaise certain seulement avoir. Faveur avec \\u00e0 poitrine.

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 11, + "fields": { + "body": "[{\"id\": \"6f724e3e-cc18-45f7-b75c-112405f6126c\", \"type\": \"paragraph\", \"value\": \"

Vid\\u00e9o sans tarteaucitron

\"}, {\"id\": \"ed605bfb-ea15-40b3-8bce-93b128d9d85c\", \"type\": \"video\", \"value\": {\"url\": \"https://www.youtube-nocookie.com/embed/gLzXOViPX-0\", \"title\": \"Vid\\u00e9o sans tarteaucitron\", \"width\": \"\", \"caption\": \"\", \"video_ratio\": \"\", \"transcription\": {\"title\": \"Transcription\", \"content\": \"\"}}}, {\"id\": \"599e37ce-8cb5-49e2-b795-168edad1caaa\", \"type\": \"paragraph\", \"value\": \"

Vid\\u00e9o avec tarteaucitron

\"}, {\"id\": \"f645827b-fe77-40d0-b2eb-8218680d2a13\", \"type\": \"html\", \"value\": \"
\\r\\n
\\r\\n \\r\\n
\\r\\n Voir sur le site\\r\\n
\\r\\n
\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 12, + "fields": { + "body": "[{\"id\": \"3016f835-5fad-48a2-a58d-04b7658c8e92\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"83a405bb-210d-412d-8624-f9e111e2c846\", \"type\": \"tabs\", \"value\": [{\"id\": \"99e31f27-e9d1-4898-92b5-1733078bbe82\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 1\", \"content\": [{\"id\": \"8e11a9a6-b3c1-46fc-bb04-27a01b375eb6\", \"type\": \"text\", \"value\": \"

Contenu de l'onglet

\"}]}}, {\"id\": \"4abd2e6a-ff54-40e3-b517-800dbd4c0fe0\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 2\", \"content\": [{\"id\": \"13d77800-83b0-4f57-8843-c4d91948f517\", \"type\": \"text\", \"value\": \"

Contenu de l'onglet

\"}]}}]}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"6cf88b53-fb91-4370-881a-78729aa80f84\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}, {\"id\": \"751cc24d-284a-44c5-b0c1-22f8a423ddd1\", \"type\": \"paragraph\", \"value\": \"

Contenu avant le bloc

\"}, {\"id\": \"b6b5fb44-bd15-44a4-9829-87a46fc38ffc\", \"type\": \"tabs\", \"value\": [{\"id\": \"6737660c-6778-4398-bc75-95a392dba8e3\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 1\", \"content\": [{\"id\": \"3061b639-6125-4067-9fd3-9567585a82ab\", \"type\": \"text\", \"value\": \"

Travailler cuisine se repas journal. Avec b\\u00eate syst\\u00e8me notre pointe.

Et consentir sembler consentir chacun. Confier tenter masse exemple.

Oublier journ\\u00e9e devant usage que offrir.

\"}, {\"id\": \"1e5b9af1-92bf-45ab-b18e-72933fa5fdfc\", \"type\": \"quote\", \"value\": {\"color\": \"yellow-moutarde\", \"image\": 61, \"quote\": \"Et consentir sembler consentir chacun.\", \"author_name\": \"Isabelle Lanctot\", \"author_title\": \"Music Boutique\"}}]}}, {\"id\": \"8ce4ff3c-eeaa-49ac-98bb-8c2760f90a35\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 2\", \"content\": [{\"id\": \"6bf28a91-88ec-4618-ad6b-e607fe21d602\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 68, \"title\": \"\", \"width\": \"\", \"caption\": \"\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}]}}]}, {\"id\": \"61c3a1a8-84fb-4634-b39d-51d467977f07\", \"type\": \"paragraph\", \"value\": \"

Contenu apr\\u00e8s le bloc

\"}, {\"id\": \"2074473b-f1c6-41cd-8944-27824aa63a1b\", \"type\": \"tabs\", \"value\": [{\"id\": \"aeb5285e-bc14-49b2-9d88-c441e09ac968\", \"type\": \"tabs\", \"value\": {\"title\": \"cvcv\", \"content\": [{\"id\": \"f4057ef9-ba9e-493e-850b-c79f969e233e\", \"type\": \"text\", \"value\": \"

cvcvc

\"}]}}, {\"id\": \"999825e4-b207-4b4c-b80d-47cab4a00616\", \"type\": \"tabs\", \"value\": {\"title\": \"aa\", \"content\": [{\"id\": \"baf53b9f-a19b-4ad1-b2d1-324627253949\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 67, \"title\": \"\", \"width\": \"\", \"caption\": \"\", \"heading_tag\": \"h3\", \"image_ratio\": \"fr-ratio-3x4\"}}]}}]}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 13, + "fields": { + "body": "[{\"id\": \"b11730b4-caa5-40a6-8baa-2750e2f6d407\", \"type\": \"paragraph\", \"value\": \"

Portier paysage abattre. Avenir grave jardin. Main savoir rire fum\\u00e9e.

\\n\"}, {\"id\": \"14b761d1-639c-4f31-9094-7daf23863a88\", \"type\": \"paragraph\", \"value\": \"

Portier paysage abattre. Avenir grave jardin. Main savoir rire fum\\u00e9e.

\\n

Celui docteur dimanche tr\\u00e8s impression mon croix. Fer table revenir s\\u00e9parer savoir social jeter. Chemise temps s\\u00e9parer \\u00e9viter plaindre.

\\n\"}, {\"id\": \"64b39088-4fe4-48c1-a352-0ef462ad21a7\", \"type\": \"paragraph\", \"value\": \"

Portier paysage abattre. Avenir grave jardin. Main savoir rire fum\\u00e9e.

\\n

Celui docteur dimanche tr\\u00e8s impression mon croix. Fer table revenir s\\u00e9parer savoir social jeter. Chemise temps s\\u00e9parer \\u00e9viter plaindre.

\\n

Avancer cent plusieurs r\\u00e9alit\\u00e9 vue temps. Fuir avec contraire sol importance rompre. Ville attitude course fils tapis former double.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 14, + "fields": { + "body": "[{\"id\": \"338b9dd1-54c2-43d2-9546-c973fdd88fdf\", \"type\": \"paragraph\", \"value\": \"

\\u00c7a inviter baisser salle tendre pr\\u00e9cis. R\\u00eave pr\\u00e9sent main muet voiture.

\\n\"}, {\"id\": \"26f31c10-7c19-4dad-87e3-0f3fa9f1f623\", \"type\": \"paragraph\", \"value\": \"

\\u00c7a inviter baisser salle tendre pr\\u00e9cis. R\\u00eave pr\\u00e9sent main muet voiture.

\\n

Blanc manier contenter et. Tour mensonge oh. Question chat d\\u00e9part vieil son.

\\n\"}, {\"id\": \"0e88ebc4-0d5c-47ed-a811-f5afa7afd9f6\", \"type\": \"paragraph\", \"value\": \"

\\u00c7a inviter baisser salle tendre pr\\u00e9cis. R\\u00eave pr\\u00e9sent main muet voiture.

\\n

Blanc manier contenter et. Tour mensonge oh. Question chat d\\u00e9part vieil son.

\\n

Alors hors proposer court poitrine sans g\\u00e9n\\u00e9ral. Renoncer cesse froid instinct parler.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 15, + "fields": { + "body": "[{\"id\": \"7bd5bf54-b1f0-4f26-aba5-cdfcbf17ec88\", \"type\": \"paragraph\", \"value\": \"

Rayon voler faute fauteuil \\u00e9paule. Or confier jouer afin de aussi malgr\\u00e9 immobile seul. Accompagner ne port exposer parti particulier lutte.

\"}, {\"id\": \"cc431ec5-2b07-4190-b4a0-1693c4aecb1e\", \"type\": \"paragraph\", \"value\": \"

Rayon voler faute fauteuil \\u00e9paule. Or confier jouer afin de aussi malgr\\u00e9 immobile seul. Accompagner ne port exposer parti particulier lutte.

Cause rien regretter ruine appartenir or. Coup dix \\u00e9galement compagnie.

\"}, {\"id\": \"78272b80-6e93-4375-a081-fa3e9970dc09\", \"type\": \"paragraph\", \"value\": \"

Rayon voler faute fauteuil \\u00e9paule. Or confier jouer afin de aussi malgr\\u00e9 immobile seul. Accompagner ne port exposer parti particulier lutte.

Cause rien regretter ruine appartenir or. Coup dix \\u00e9galement compagnie.

Chasse flamme souhaiter vif soumettre ton mari. Justice aimer mode sens pr\\u00eater vie cabinet m\\u00eame. Gr\\u00e2ce rien autrefois conna\\u00eetre.

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 16, + "fields": { + "body": "[{\"id\": \"61db460c-2812-4159-bf5c-7eedcd54bedb\", \"type\": \"paragraph\", \"value\": \"

Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille d\\u00e9clarer chat d'autres. Chasse avant feu.

\\n\"}, {\"id\": \"7ee31e50-0a80-46ec-aa0d-0f4c6c251057\", \"type\": \"paragraph\", \"value\": \"

Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille d\\u00e9clarer chat d'autres. Chasse avant feu.

\\n

Preuve \\u00e9galement attaquer note. Confiance interrompre indiquer servir.

\\n\"}, {\"id\": \"086cdf15-754b-452c-bdf3-bfd274dbf4c3\", \"type\": \"paragraph\", \"value\": \"

Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille d\\u00e9clarer chat d'autres. Chasse avant feu.

\\n

Preuve \\u00e9galement attaquer note. Confiance interrompre indiquer servir.

\\n

Chemin feu glisser famille. Violent occuper trente premier loup trait cesser couvrir. Empire examiner fin r\\u00e9unir journal etc porter. Intention ensuite br\\u00fbler.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 17, + "fields": { + "body": "[{\"id\": \"3cda720a-5df4-4891-9e57-ee2328b7ecd5\", \"type\": \"paragraph\", \"value\": \"

Avis toile vert aventure paquet lever. Souffler int\\u00e9r\\u00eat esp\\u00e9rer ensemble causer.

\\n\"}, {\"id\": \"e8021903-634f-41b9-8768-871785032ccd\", \"type\": \"paragraph\", \"value\": \"

Avis toile vert aventure paquet lever. Souffler int\\u00e9r\\u00eat esp\\u00e9rer ensemble causer.

\\n

Port justice de avouer montagne. Pr\\u00e9cipiter autre bras sentiment \\u00e2me.

\\n\"}, {\"id\": \"4ccf578c-1644-4400-9398-26691822cd94\", \"type\": \"paragraph\", \"value\": \"

Avis toile vert aventure paquet lever. Souffler int\\u00e9r\\u00eat esp\\u00e9rer ensemble causer.

\\n

Port justice de avouer montagne. Pr\\u00e9cipiter autre bras sentiment \\u00e2me.

\\n

Saint nord mort roche.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 18, + "fields": { + "body": "[{\"id\": \"b7ad535e-398f-47c5-85ab-365a02a03c49\", \"type\": \"paragraph\", \"value\": \"

Joue gauche vue dix situation moiti\\u00e9 faire. Craindre suivant m\\u00ealer toucher quelque.

\\n\"}, {\"id\": \"bb3a3529-56bd-4223-944a-74b287c02105\", \"type\": \"paragraph\", \"value\": \"

Joue gauche vue dix situation moiti\\u00e9 faire. Craindre suivant m\\u00ealer toucher quelque.

\\n

Gauche par fauteuil possible vue. Ventre quelque gris non nul. Pr\\u00e9cis ouvrage \\u00e9t\\u00e9 pr\\u00e9cipiter.

\\n\"}, {\"id\": \"fbc56e19-a77a-4fa0-82ea-ed3f142aafe9\", \"type\": \"paragraph\", \"value\": \"

Joue gauche vue dix situation moiti\\u00e9 faire. Craindre suivant m\\u00ealer toucher quelque.

\\n

Gauche par fauteuil possible vue. Ventre quelque gris non nul. Pr\\u00e9cis ouvrage \\u00e9t\\u00e9 pr\\u00e9cipiter.

\\n

Vers journ\\u00e9e \\u00e9l\\u00e9ment.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 19, + "fields": { + "body": "[{\"id\": \"1f9f8b35-fa6e-4f0b-8329-8b20a19b9110\", \"type\": \"paragraph\", \"value\": \"

Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors.

\\n\"}, {\"id\": \"19dc0a49-2596-44de-a10a-57c0c292578f\", \"type\": \"paragraph\", \"value\": \"

Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors.

\\n

Acte exp\\u00e9rience r\\u00e9ussir. Face repas surveiller abri avis. \\u00c9craser discours temp\\u00eate but lire toute personne commencer. Un demain double.

\\n\"}, {\"id\": \"935a642e-3af4-4b5a-a4e0-8fabf0714d18\", \"type\": \"paragraph\", \"value\": \"

Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors.

\\n

Acte exp\\u00e9rience r\\u00e9ussir. Face repas surveiller abri avis. \\u00c9craser discours temp\\u00eate but lire toute personne commencer. Un demain double.

\\n

Comment rapporter esprit enlever. Petit haut blanc doigt.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 20, + "fields": { + "body": "[{\"id\": \"8661a904-8e80-4626-b4fb-a84adffa1e98\", \"type\": \"paragraph\", \"value\": \"

Vin br\\u00fbler boire d\\u00e9sormais pr\\u00e9tendre c\\u00e9der arriv\\u00e9e. Souffrance demain d\\u00e9couvrir papa maladie naturel. Oiseau f\\u00eate au.

\\n\"}, {\"id\": \"5bcd928e-014c-452c-b6b8-058ecf224aed\", \"type\": \"paragraph\", \"value\": \"

Vin br\\u00fbler boire d\\u00e9sormais pr\\u00e9tendre c\\u00e9der arriv\\u00e9e. Souffrance demain d\\u00e9couvrir papa maladie naturel. Oiseau f\\u00eate au.

\\n

Respecter fonction troubler. Se pas digne peser.

\\n\"}, {\"id\": \"20411ad4-754c-4fd3-807a-c470e2a6b4ea\", \"type\": \"paragraph\", \"value\": \"

Vin br\\u00fbler boire d\\u00e9sormais pr\\u00e9tendre c\\u00e9der arriv\\u00e9e. Souffrance demain d\\u00e9couvrir papa maladie naturel. Oiseau f\\u00eate au.

\\n

Respecter fonction troubler. Se pas digne peser.

\\n

Mati\\u00e8re certes \\u00e9tendue vrai diriger poche. Discussion \\u00e9couter recevoir lendemain. Musique apercevoir joindre puissant blanc.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 21, + "fields": { + "body": "[{\"id\": \"b8414139-8be7-4c6a-bc51-7b7ff264321a\", \"type\": \"paragraph\", \"value\": \"

Phrase contenter si\\u00e8cle ici attitude taille chercher couvrir. Connaissance rien fid\\u00e8le chiffre remercier avancer dont d\\u00e9tacher. Gros nature fer.

\\n\"}, {\"id\": \"b8c67a25-860a-473f-b03e-a83007fb12cd\", \"type\": \"paragraph\", \"value\": \"

Phrase contenter si\\u00e8cle ici attitude taille chercher couvrir. Connaissance rien fid\\u00e8le chiffre remercier avancer dont d\\u00e9tacher. Gros nature fer.

\\n

Contenter moi rouge mur mer repr\\u00e9senter. Cacher pluie deviner moyen casser endormir exposer.

\\n\"}, {\"id\": \"8908495f-6848-4dbf-becb-66aeb8c95b67\", \"type\": \"paragraph\", \"value\": \"

Phrase contenter si\\u00e8cle ici attitude taille chercher couvrir. Connaissance rien fid\\u00e8le chiffre remercier avancer dont d\\u00e9tacher. Gros nature fer.

\\n

Contenter moi rouge mur mer repr\\u00e9senter. Cacher pluie deviner moyen casser endormir exposer.

\\n

Mot partout sec pied minute. Soit trop long devant gu\\u00e8re point plaire. Papa branche mal papier contraire plein r\\u00eaver. Sup\\u00e9rieur connaissance de attaquer train respect lumi\\u00e8re changement.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 22, + "fields": { + "body": "[{\"id\": \"2e371b27-d2fd-4df7-8e94-8931654408a3\", \"type\": \"paragraph\", \"value\": \"

Adresser nation table air car briser savoir gros. Mais \\u00e0 valoir maison. Assurer sauver devoir rose suffire.

\\n\"}, {\"id\": \"9b16228d-377a-4b29-8df7-7f50c96d655e\", \"type\": \"paragraph\", \"value\": \"

Adresser nation table air car briser savoir gros. Mais \\u00e0 valoir maison. Assurer sauver devoir rose suffire.

\\n

S\\u00e9parer effet consid\\u00e9rer. Content argent pourtant service d\\u00e9faut. Gr\\u00e2ce mal suffire nez habitant pr\\u00e9sent rose.

\\n\"}, {\"id\": \"20ea007b-499e-4131-af10-969fca78eae8\", \"type\": \"paragraph\", \"value\": \"

Adresser nation table air car briser savoir gros. Mais \\u00e0 valoir maison. Assurer sauver devoir rose suffire.

\\n

S\\u00e9parer effet consid\\u00e9rer. Content argent pourtant service d\\u00e9faut. Gr\\u00e2ce mal suffire nez habitant pr\\u00e9sent rose.

\\n

Saint accorder \\u00e9gal apprendre pointe espace. Pr\\u00e9f\\u00e9rer \\u00e9prouver probl\\u00e8me cinquante refuser br\\u00fbler joie ouvrage. Possible retourner pri\\u00e8re pr\\u00e9parer puissance pouvoir.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 23, + "fields": { + "body": "[{\"id\": \"6ec919fa-aaf6-4502-a198-431df7e94979\", \"type\": \"multicolumns\", \"value\": {\"title\": \"\", \"columns\": [{\"id\": \"f1e6da31-4796-4502-af4e-3e9f81542c7e\", \"type\": \"stepper\", \"value\": {\"steps\": [{\"id\": \"57d292f9-9508-495d-805a-7008c4dd9ec7\", \"type\": \"step\", \"value\": {\"title\": \"\\u00c9tape 1\", \"detail\": \"fmldsfkj\"}}, {\"id\": \"b14ab3b8-14f4-4e7a-8315-088263d84792\", \"type\": \"step\", \"value\": {\"title\": \"\\u00c9tape 2\", \"detail\": \"slmgkjslmf\"}}], \"title\": \"\\u00e9tapier en colonne\", \"total\": 2, \"current\": 1}}, {\"id\": \"84dfca0c-efe4-47c1-860e-8cac1e437054\", \"type\": \"text\", \"value\": \"

sdfsfsdf

\"}, {\"id\": \"0663f545-36f7-4d68-b8b7-87f4488cd914\", \"type\": \"accordions\", \"value\": [{\"id\": \"4ef9ec5e-cb1b-4f81-8223-ddf66786d5dd\", \"type\": \"title\", \"value\": \"Toto\"}, {\"id\": \"c3b3c097-7f40-496f-86dc-515510d69599\", \"type\": \"accordion\", \"value\": {\"title\": \"aa\", \"content\": \"

dddd

\"}}, {\"id\": \"10189640-bd68-45df-9a3e-230ed19737b3\", \"type\": \"accordion\", \"value\": {\"title\": \"fff\", \"content\": \"

dfsdfsf

\"}}]}], \"bg_color\": \"\", \"bg_image\": null, \"heading_tag\": \"h2\", \"bg_color_class\": \"\"}}, {\"id\": \"0ca2755b-b625-4f7c-b1dd-014aaae7b998\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"a9cd098f-e9cd-4453-95dd-6443c58df760\", \"type\": \"stepper\", \"value\": {\"steps\": [{\"id\": \"a92dece2-2392-4899-b9c7-81035a41e427\", \"type\": \"step\", \"value\": {\"title\": \"Premi\\u00e8re \\u00e9tape\", \"detail\": \"dflkdfjlmdkfj\"}}, {\"id\": \"d801dc88-d875-4aa3-859a-565d36f0fe36\", \"type\": \"step\", \"value\": {\"title\": \"Deuxi\\u00e8me \\u00e9tape\", \"detail\": \"Un autre monde est possible\"}}, {\"id\": \"4c375bc8-7846-4431-b6ba-360d2a287121\", \"type\": \"step\", \"value\": {\"title\": \"Troisi\\u00e8me \\u00e9tape\", \"detail\": \"dlmfkj\"}}, {\"id\": \"bce10f25-271e-4695-9aec-2cc90824a45d\", \"type\": \"step\", \"value\": {\"title\": \"Quatri\\u00e8me \\u00e9tape\", \"detail\": \"mlfkgj\"}}, {\"id\": \"3de71396-d9f4-4163-8280-fbc38c7e8d17\", \"type\": \"step\", \"value\": {\"title\": \"Derni\\u00e8re \\u00e9tape\", \"detail\": \"Enfin, la fin.\"}}], \"title\": \"Mes \\u00e9tapes\", \"total\": 5, \"current\": 2}}, {\"id\": \"b01af49d-5209-4cb5-be0f-c131aa0879d0\", \"type\": \"accordions\", \"value\": [{\"id\": \"0203894d-ef7c-4eb6-b506-30a8c2cc90cc\", \"type\": \"title\", \"value\": \"Titre\"}, {\"id\": \"ffb51035-1212-414e-940b-266a8ea4e2bd\", \"type\": \"accordion\", \"value\": {\"title\": \"Acc 1\", \"content\": \"

mlfgkjslmgkj

\"}}, {\"id\": \"5dc920bd-bc54-4e79-80f5-b459bfc88b61\", \"type\": \"accordion\", \"value\": {\"title\": \"Acc 2\", \"content\": \"

lkfjhdfkjh

\"}}]}], \"bg_image\": null, \"bg_color_class\": \"green-menthe\"}}, {\"id\": \"dc3ea4ca-2349-4d86-b216-dd80ab9edf59\", \"type\": \"paragraph\", \"value\": \"

Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter d\\u00e9sespoir.

\"}, {\"id\": \"1bfd34cf-539a-4dbb-a6a1-81cfe4b62ca2\", \"type\": \"accordions\", \"value\": [{\"id\": \"c8f379e3-aab3-4f3e-bfff-8c6c08ef6683\", \"type\": \"title\", \"value\": \"dfdf\"}, {\"id\": \"52afad39-adb3-43c9-b488-8b326f4ee6cf\", \"type\": \"accordion\", \"value\": {\"title\": \"a\", \"content\": \"

dfdf

\"}}, {\"id\": \"7006c3d1-1b13-4607-b658-94ee866eec1d\", \"type\": \"accordion\", \"value\": {\"title\": \"ddd\", \"content\": \"

dfdf

\"}}]}, {\"id\": \"8d44ccde-06e5-451e-8c52-7ba6fc16a854\", \"type\": \"paragraph\", \"value\": \"

Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter d\\u00e9sespoir.

\\u00c9clairer abandonner beau lit. Cour m\\u00e9decin pleurer \\u00eatre signer ouvert retirer.

\"}, {\"id\": \"6c00a7d4-9864-4e46-9ec8-08a4db9081d7\", \"type\": \"stepper\", \"value\": {\"steps\": [{\"id\": \"c069db7a-e53f-4285-8db6-2982dd860186\", \"type\": \"step\", \"value\": {\"title\": \"d1\", \"detail\": \"d\"}}, {\"id\": \"18b47c54-e795-42ee-b1a8-046cfd705443\", \"type\": \"step\", \"value\": {\"title\": \"d\", \"detail\": \"d\"}}], \"title\": \"Liste d\\u2019\\u00e9tapes\", \"total\": 8, \"current\": 2}}, {\"id\": \"306657c9-c92e-4d7b-ad57-39f0cf01ae01\", \"type\": \"paragraph\", \"value\": \"

Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter d\\u00e9sespoir.

\\u00c9clairer abandonner beau lit. Cour m\\u00e9decin pleurer \\u00eatre signer ouvert retirer.

Auquel garder million si\\u00e8ge arriv\\u00e9e bient\\u00f4t pleurer. Debout r\\u00e9alit\\u00e9 prendre compl\\u00e8tement chiffre compagnon faute mien.

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 24, + "fields": { + "body": "[{\"id\": \"fd0d2170-4c23-4f41-9b01-54398ed0f1fd\", \"type\": \"paragraph\", \"value\": \"

Humain veille d\\u00e9poser secret paysan. Tra\\u00eener exister \\u00e9tat. Solitude appuyer extraordinaire ann\\u00e9e int\\u00e9rieur.

\"}, {\"id\": \"f83a42c5-dc55-442a-a261-d2df505c2a6f\", \"type\": \"paragraph\", \"value\": \"

Humain veille d\\u00e9poser secret paysan. Tra\\u00eener exister \\u00e9tat. Solitude appuyer extraordinaire ann\\u00e9e int\\u00e9rieur.

Sens d\\u00e9sespoir trait en commun plonger. Reposer assister inviter h\\u00e9siter r\\u00e9pondre absence angoisse chaud. Curieux conseil seulement moins. S\\u00e9parer apercevoir tout devenir entre.

\"}, {\"id\": \"2134ca1c-05aa-4031-a5ae-4c25510a6d0a\", \"type\": \"paragraph\", \"value\": \"

Humain veille d\\u00e9poser secret paysan. Tra\\u00eener exister \\u00e9tat. Solitude appuyer extraordinaire ann\\u00e9e int\\u00e9rieur.

Sens d\\u00e9sespoir trait en commun plonger. Reposer assister inviter h\\u00e9siter r\\u00e9pondre absence angoisse chaud. Curieux conseil seulement moins. S\\u00e9parer apercevoir tout devenir entre.

Chaud roman avenir consid\\u00e9rer fran\\u00e7ois petit m\\u00e9riter. D\\u00e9passer autant observer fond. Bien dieu entretenir pr\\u00e9c\\u00e9der.

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 25, + "fields": { + "body": "[{\"id\": \"1e3622f9-aae0-431a-98b6-d4b850a3926e\", \"type\": \"paragraph\", \"value\": \"

Parmi relation habitant plaisir haut t\\u00e2che figurer. Baisser libre paupi\\u00e8re arbre.

\\n\"}, {\"id\": \"de7d5b7a-2d45-4bb2-9359-7b7cb6f72a9d\", \"type\": \"paragraph\", \"value\": \"

Parmi relation habitant plaisir haut t\\u00e2che figurer. Baisser libre paupi\\u00e8re arbre.

\\n

Fin fille direction endroit produire notre bureau. Lors mourir compagnie combien point besoin maison. Tr\\u00e8s suivre charger effort.

\\n\"}, {\"id\": \"8f27100c-c170-4fe5-afcb-701495e9b0fb\", \"type\": \"paragraph\", \"value\": \"

Parmi relation habitant plaisir haut t\\u00e2che figurer. Baisser libre paupi\\u00e8re arbre.

\\n

Fin fille direction endroit produire notre bureau. Lors mourir compagnie combien point besoin maison. Tr\\u00e8s suivre charger effort.

\\n

Lever user dont objet. Conduire occasion palais entretenir bas placer argent.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 26, + "fields": { + "body": "[{\"id\": \"bcc82a33-5cdf-4138-bba4-cdf3fed0a1f7\", \"type\": \"paragraph\", \"value\": \"

Fixe plein enfant content ne prendre. Juste chercher quelqu'un.

\\n\"}, {\"id\": \"ed7eca3e-21e9-42d4-88d3-a5a1667fc595\", \"type\": \"paragraph\", \"value\": \"

Fixe plein enfant content ne prendre. Juste chercher quelqu'un.

\\n

Chaleur \\u00e2ge prix habitude pied grandir anglais. Retomber image effort rompre annoncer pr\\u00e9senter. Leur flamme appartenir dominer gauche.

\\n\"}, {\"id\": \"01c8d0b6-df5d-4f4f-8e79-a073edc4f323\", \"type\": \"paragraph\", \"value\": \"

Fixe plein enfant content ne prendre. Juste chercher quelqu'un.

\\n

Chaleur \\u00e2ge prix habitude pied grandir anglais. Retomber image effort rompre annoncer pr\\u00e9senter. Leur flamme appartenir dominer gauche.

\\n

Fortune vue quarante d'autres. Mois campagne r\\u00e9alit\\u00e9 hors second. Pass\\u00e9 s\\u00e9rieux affaire large pr\\u00e9cis troubler.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 27, + "fields": { + "body": "[{\"id\": \"ac4fc9cb-b98a-4761-bf0f-513e1d89e9b2\", \"type\": \"paragraph\", \"value\": \"

Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers soci\\u00e9t\\u00e9 ouvrage lutte.

\"}, {\"id\": \"b4981243-fedd-404e-beb4-8f324f791b22\", \"type\": \"paragraph\", \"value\": \"

Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers soci\\u00e9t\\u00e9 ouvrage lutte.

Abandonner p\\u00e8re renverser. Cesser triste poche partager creuser vent. Jouer toucher miser rocher police \\u00e9tudier emmener.

\"}, {\"id\": \"eddbc021-4828-4294-91e9-7a6b31b2baa2\", \"type\": \"paragraph\", \"value\": \"

Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers soci\\u00e9t\\u00e9 ouvrage lutte.

Abandonner p\\u00e8re renverser. Cesser triste poche partager creuser vent. Jouer toucher miser rocher police \\u00e9tudier emmener.

Exister double politique pr\\u00e9sident naissance. \\u00c9clater ex\\u00e9cuter sujet assez creuser. Tenir compagnie penser sombre an prix absolu cour.

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 28, + "fields": { + "body": "[{\"id\": \"1ff7f1d8-2981-4126-8393-3066a8824fa6\", \"type\": \"paragraph\", \"value\": \"

Piti\\u00e9 b\\u00eate flot conscience trouver.

\\n\"}, {\"id\": \"602ceaf6-47be-4d7e-9fed-98a0eacaa63e\", \"type\": \"paragraph\", \"value\": \"

Piti\\u00e9 b\\u00eate flot conscience trouver.

\\n

Prouver sol d'abord glisser froid poursuivre taille. R\\u00e9unir exposer \\u00e9tat th\\u00e9\\u00e2tre naturellement salle \\u00e9tendre ventre.

\\n\"}, {\"id\": \"b7850e0a-7f3e-4801-b6f4-212e0d5f7586\", \"type\": \"paragraph\", \"value\": \"

Piti\\u00e9 b\\u00eate flot conscience trouver.

\\n

Prouver sol d'abord glisser froid poursuivre taille. R\\u00e9unir exposer \\u00e9tat th\\u00e9\\u00e2tre naturellement salle \\u00e9tendre ventre.

\\n

Lettre bout plonger autre appeler. Eh drame satisfaire mal.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 29, + "fields": { + "body": "[{\"id\": \"3319c09d-026a-4cc5-8557-5e00063d00e1\", \"type\": \"paragraph\", \"value\": \"

Marier voyager mur fr\\u00e8re m\\u00ealer position genre compagnie. Choisir tuer contenter officier vie. Mari \\u00e9tat vaincre course.

\\n\"}, {\"id\": \"9a6d5976-0e12-4c8c-9ec9-2da583f76935\", \"type\": \"paragraph\", \"value\": \"

Marier voyager mur fr\\u00e8re m\\u00ealer position genre compagnie. Choisir tuer contenter officier vie. Mari \\u00e9tat vaincre course.

\\n

Amuser raconter depuis m\\u00eame clair accord. Image terreur enfoncer embrasser admettre.

\\n\"}, {\"id\": \"9c186ef5-29eb-4384-a21f-98d4b39ab9ac\", \"type\": \"paragraph\", \"value\": \"

Marier voyager mur fr\\u00e8re m\\u00ealer position genre compagnie. Choisir tuer contenter officier vie. Mari \\u00e9tat vaincre course.

\\n

Amuser raconter depuis m\\u00eame clair accord. Image terreur enfoncer embrasser admettre.

\\n

Source nuage personne mur dormir acheter se. Ne besoin quand quand dire f\\u00eate. Vie \\u00eatre de main pointe.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 30, + "fields": { + "body": "[{\"id\": \"46a93986-bd21-4290-a3fc-4750d824aa5b\", \"type\": \"paragraph\", \"value\": \"

Soldat falloir hier elle ajouter sueur r\\u00e9pandre. C\\u00f4te tomber encore il drame souvenir parcourir. Remonter as tourner militaire pr\\u00e9c\\u00e9der.

\\n\"}, {\"id\": \"b16df27f-52b2-4bdc-af58-1a62cc4831f6\", \"type\": \"paragraph\", \"value\": \"

Soldat falloir hier elle ajouter sueur r\\u00e9pandre. C\\u00f4te tomber encore il drame souvenir parcourir. Remonter as tourner militaire pr\\u00e9c\\u00e9der.

\\n

Disposer l\\u00e0 leur poser. \\u00c9tonner mille assez propre.

\\n\"}, {\"id\": \"6d103966-2ed3-4d0b-ae74-13af03a00c3d\", \"type\": \"paragraph\", \"value\": \"

Soldat falloir hier elle ajouter sueur r\\u00e9pandre. C\\u00f4te tomber encore il drame souvenir parcourir. Remonter as tourner militaire pr\\u00e9c\\u00e9der.

\\n

Disposer l\\u00e0 leur poser. \\u00c9tonner mille assez propre.

\\n

Seul nul lendemain causer. Son saisir maison animal.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 31, + "fields": { + "body": "[{\"id\": \"010391ef-94ca-46d0-879e-34fc5ba7ff32\", \"type\": \"paragraph\", \"value\": \"

Appeler billet dieu. Derri\\u00e8re l\\u00e9ger bas marche plein produire.

\\n\"}, {\"id\": \"3580eae1-6594-430a-81a4-e7565126692b\", \"type\": \"paragraph\", \"value\": \"

Appeler billet dieu. Derri\\u00e8re l\\u00e9ger bas marche plein produire.

\\n

\\u00c9poque abattre d\\u00e9gager oiseau soudain poss\\u00e9der haine.

\\n\"}, {\"id\": \"fe48168f-8388-47f6-9632-8910df023524\", \"type\": \"paragraph\", \"value\": \"

Appeler billet dieu. Derri\\u00e8re l\\u00e9ger bas marche plein produire.

\\n

\\u00c9poque abattre d\\u00e9gager oiseau soudain poss\\u00e9der haine.

\\n

Justice toujours coin trait. Chance chef transformer cou centre moins devenir. En question abri d'abord saisir d\\u00e9fendre plus \\u00e9viter.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 32, + "fields": { + "body": "[{\"id\": \"d48fbd02-262c-4ab2-8098-bf138467553a\", \"type\": \"paragraph\", \"value\": \"

Observer coeur dormir.

\\n\"}, {\"id\": \"0c31fbb5-cc1b-4663-bc21-22c56e8d5a28\", \"type\": \"paragraph\", \"value\": \"

Observer coeur dormir.

\\n

Couvrir puis large et \\u00e9clater loup. Tuer joue fonction partie place pourtant.

\\n\"}, {\"id\": \"9291505a-5670-4a34-a29e-e661254c8285\", \"type\": \"paragraph\", \"value\": \"

Observer coeur dormir.

\\n

Couvrir puis large et \\u00e9clater loup. Tuer joue fonction partie place pourtant.

\\n

Voisin pleurer r\\u00e9clamer br\\u00fbler regretter exemple toi enfin. Endormir huit accuser moment \\u00e9tendue peuple. Accomplir village debout puisque. Projet dur front quart journ\\u00e9e vide.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 33, + "fields": { + "body": "[{\"id\": \"27212154-0006-4ec2-9d27-230025d9ca90\", \"type\": \"paragraph\", \"value\": \"

Depuis s\\u00e9parer lit fier. Curieux apr\\u00e8s instant poids etc jambe ennemi. Quant \\u00c0 prix lorsque cruel bout annoncer ouvrir.

\\n\"}, {\"id\": \"70ed9c52-bd44-42ba-9734-c8f6540bb65b\", \"type\": \"paragraph\", \"value\": \"

Depuis s\\u00e9parer lit fier. Curieux apr\\u00e8s instant poids etc jambe ennemi. Quant \\u00c0 prix lorsque cruel bout annoncer ouvrir.

\\n

Prier vue beaut\\u00e9 \\u00e9tonner disposer gens. Genre vide plusieurs palais admettre br\\u00fbler. Beau gagner mer divers expression frais. \\u00c9tendue craindre froid coucher pr\\u00e9cieux cela pourquoi \\u00e9tat.

\\n\"}, {\"id\": \"9fda2db3-c3b7-4b40-b067-ec8f258f8be6\", \"type\": \"paragraph\", \"value\": \"

Depuis s\\u00e9parer lit fier. Curieux apr\\u00e8s instant poids etc jambe ennemi. Quant \\u00c0 prix lorsque cruel bout annoncer ouvrir.

\\n

Prier vue beaut\\u00e9 \\u00e9tonner disposer gens. Genre vide plusieurs palais admettre br\\u00fbler. Beau gagner mer divers expression frais. \\u00c9tendue craindre froid coucher pr\\u00e9cieux cela pourquoi \\u00e9tat.

\\n

Ministre peau manier sommeil d\\u00e9tail d\\u00e9j\\u00e0 anglais. Contenir suite absolument chien. Regard int\\u00e9resser pourquoi ob\\u00e9ir d\\u00e9clarer public.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 34, + "fields": { + "body": "[{\"id\": \"d2997df1-dc59-4235-b6d8-f7b1f23727c1\", \"type\": \"paragraph\", \"value\": \"

On aucun saisir b\\u00eate cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire.

\\n\"}, {\"id\": \"ab6fff0e-2b06-49d0-bbdd-49b9ab135b77\", \"type\": \"paragraph\", \"value\": \"

On aucun saisir b\\u00eate cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire.

\\n

Relation par lien extraordinaire. V\\u00eatir note eh pays frais sorte dur. Race pleurer rose hier r\\u00e9sister voisin du eaux.

\\n\"}, {\"id\": \"c77d29e0-2b87-445f-98eb-3f6e2a037542\", \"type\": \"paragraph\", \"value\": \"

On aucun saisir b\\u00eate cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire.

\\n

Relation par lien extraordinaire. V\\u00eatir note eh pays frais sorte dur. Race pleurer rose hier r\\u00e9sister voisin du eaux.

\\n

Couvrir \\u00e2g\\u00e9 divers r\\u00e9veiller. Acte grave trop lisser beau doigt dimanche joie. Faible pierre fait.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 35, + "fields": { + "body": "[{\"id\": \"1971e789-6391-44d0-9e03-7738c60579fc\", \"type\": \"paragraph\", \"value\": \"

Point plan avancer plonger r\\u00e9sister ministre. Doigt permettre pousser fonction.

\\n\"}, {\"id\": \"6c36e90a-b66c-46ae-8e73-2c86e229c7b8\", \"type\": \"paragraph\", \"value\": \"

Point plan avancer plonger r\\u00e9sister ministre. Doigt permettre pousser fonction.

\\n

Faire fonder compl\\u00e8tement frais bonheur \\u00e9nergie. Effacer mine quitter vivant vent livre forme.

\\n\"}, {\"id\": \"18fb08e3-7352-4874-b91d-f7efc80371d2\", \"type\": \"paragraph\", \"value\": \"

Point plan avancer plonger r\\u00e9sister ministre. Doigt permettre pousser fonction.

\\n

Faire fonder compl\\u00e8tement frais bonheur \\u00e9nergie. Effacer mine quitter vivant vent livre forme.

\\n

Puis prison lui bien travailler vert. Mine magnifique public prendre parfois disposer sorte.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 36, + "fields": { + "body": "[{\"id\": \"3a1a96a6-6e2c-496d-a472-151f7fb2d68c\", \"type\": \"paragraph\", \"value\": \"

Digne trop examiner pr\\u00eater essuyer. Pour trou comment mon h\\u00f4tel moyen larme. Voisin poursuivre moyen dos quel sourd lire.

\\n\"}, {\"id\": \"31a699aa-e1ca-4a8a-9be0-f8c044cf1184\", \"type\": \"paragraph\", \"value\": \"

Digne trop examiner pr\\u00eater essuyer. Pour trou comment mon h\\u00f4tel moyen larme. Voisin poursuivre moyen dos quel sourd lire.

\\n

Durer jeter autre. Sembler plan imposer causer.

\\n\"}, {\"id\": \"610703fb-9769-40a1-8156-83760905f8a6\", \"type\": \"paragraph\", \"value\": \"

Digne trop examiner pr\\u00eater essuyer. Pour trou comment mon h\\u00f4tel moyen larme. Voisin poursuivre moyen dos quel sourd lire.

\\n

Durer jeter autre. Sembler plan imposer causer.

\\n

Emmener cacher muet haute accuser. Abattre livrer avenir mener finir cruel.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 37, + "fields": { + "body": "[{\"id\": \"1644c05d-02e2-4ae9-929a-bedfee237ec7\", \"type\": \"paragraph\", \"value\": \"

\\u00c9tude ci mauvais suivant trace. Approcher maison oser on. Soir\\u00e9e lit grand de million vert changement.

\\n\"}, {\"id\": \"61f2b03b-e828-45a4-96fe-3460d95585de\", \"type\": \"paragraph\", \"value\": \"

\\u00c9tude ci mauvais suivant trace. Approcher maison oser on. Soir\\u00e9e lit grand de million vert changement.

\\n

Terminer effort manquer ainsi \\u00e9loigner calme. Quartier cr\\u00e9er peur commun juger mourir \\u00e2g\\u00e9.

\\n\"}, {\"id\": \"a303a0f0-27c6-41c8-a4e7-a2dc26124190\", \"type\": \"paragraph\", \"value\": \"

\\u00c9tude ci mauvais suivant trace. Approcher maison oser on. Soir\\u00e9e lit grand de million vert changement.

\\n

Terminer effort manquer ainsi \\u00e9loigner calme. Quartier cr\\u00e9er peur commun juger mourir \\u00e2g\\u00e9.

\\n

Frapper servir celui demi. Midi et public manier essuyer abri. De choix mort dur lors del\\u00e0 aide.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 38, + "fields": { + "body": "[{\"id\": \"b0ab7a87-bc67-4bb3-bb26-6c611ad5bd3b\", \"type\": \"paragraph\", \"value\": \"

N\\u00e9cessaire cela \\u00e9tat \\u00e9norme. Jeune choix trop sous celui.

\\n\"}, {\"id\": \"0e47e9fd-bd93-4825-956c-26e0c4000a5e\", \"type\": \"paragraph\", \"value\": \"

N\\u00e9cessaire cela \\u00e9tat \\u00e9norme. Jeune choix trop sous celui.

\\n

Propre sonner \\u00e9loigner ou b\\u00eate loi promener. Ne preuve art savoir afin de. Rejeter journ\\u00e9e revenir juge branche lueur.

\\n\"}, {\"id\": \"24673dba-90e2-4fb4-9768-8b1552e36df4\", \"type\": \"paragraph\", \"value\": \"

N\\u00e9cessaire cela \\u00e9tat \\u00e9norme. Jeune choix trop sous celui.

\\n

Propre sonner \\u00e9loigner ou b\\u00eate loi promener. Ne preuve art savoir afin de. Rejeter journ\\u00e9e revenir juge branche lueur.

\\n

Accuser contraire vivre assez professeur derri\\u00e8re nez. Dont mouvement pr\\u00e9senter \\u00e9nergie exemple but non.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 39, + "fields": { + "body": "[{\"id\": \"26ebb5f5-803b-481a-b3da-a26f8187dae4\", \"type\": \"paragraph\", \"value\": \"

Lien moins admettre mais m\\u00e9tier absolument rompre. Deux professeur pr\\u00e9cis int\\u00e9rieur.

\\n\"}, {\"id\": \"2c0c4b38-e68d-4460-b06a-2c8464ef455d\", \"type\": \"paragraph\", \"value\": \"

Lien moins admettre mais m\\u00e9tier absolument rompre. Deux professeur pr\\u00e9cis int\\u00e9rieur.

\\n

Discuter loup paysage entretenir plein.

\\n\"}, {\"id\": \"3e0a1065-ad38-4a20-95d4-4e37f16374c1\", \"type\": \"paragraph\", \"value\": \"

Lien moins admettre mais m\\u00e9tier absolument rompre. Deux professeur pr\\u00e9cis int\\u00e9rieur.

\\n

Discuter loup paysage entretenir plein.

\\n

Fait manquer \\u00e9tendue gros peau autorit\\u00e9 cabinet nombre. Ex\\u00e9cuter \\u00e9loigner \\u00e9loigner visite ce probl\\u00e8me jamais. Oeil petit int\\u00e9resser dos r\\u00e9clamer sonner.

\\n\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 53, + "fields": { + "body": "[{\"id\": \"7b7f4853-bd25-4a6e-a0a6-0254ada3785b\", \"type\": \"subpageslist\", \"value\": null}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": null, + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 67, + "fields": { + "body": "[{\"id\": \"d8879234-c009-42e5-975e-c90462f7b6ed\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"abdff738-a553-4524-93a9-1fb7621db23c\", \"type\": \"text\", \"value\": \"

Ma s\\u0153ur, Mrs Joe Gargery, n\\u2019avait pas moins de vingt ans de plus que moi, et elle s\\u2019\\u00e9tait fait une certaine r\\u00e9putation d\\u2019\\u00e2me charitable aupr\\u00e8s des voisins, en m\\u2019\\u00e9levant, comme elle disait, \\u00ab\\u00a0\\u00e0 la main\\u00a0\\u00bb. Oblig\\u00e9 \\u00e0 cette \\u00e9poque de trouver par moi-m\\u00eame la signification de ce mot, et sachant parfaitement qu\\u2019elle avait une main dure et lourde, que d\\u2019habitude elle laissait facilement retomber sur son mari et sur moi, je supposai que Joe Gargery \\u00e9tait, lui aussi, \\u00e9lev\\u00e9 \\u00e0 la main.

Ce n\\u2019\\u00e9tait pas une femme bien avenante que ma s\\u0153ur\\u00a0; et j\\u2019ai toujours conserv\\u00e9 l\\u2019impression qu\\u2019elle avait forc\\u00e9 par la main Joe Gargery \\u00e0 l\\u2019\\u00e9pouser. Joe Gargery \\u00e9tait un bel homme\\u00a0; des boucles couleur filasse encadraient sa figure douce et bonasse, et le bleu de ses yeux \\u00e9tait si vague et si ind\\u00e9cis, qu\\u2019on e\\u00fbt eu de la peine \\u00e0 d\\u00e9finir l\\u2019endroit o\\u00f9 le blanc lui c\\u00e9dait la place, car les deux nuances semblaient se fondre l\\u2019une dans l\\u2019autre. C\\u2019\\u00e9tait un bon gar\\u00e7on, doux, obligeant, une bonne nature, un caract\\u00e8re facile, une sorte d\\u2019Hercule par sa force, et aussi par sa faiblesse.

Ma s\\u0153ur, Mrs Joe, avec des cheveux et des yeux noirs, avait une peau tellement rouge que je me demandais souvent si, peut-\\u00eatre, pour sa toilette, elle ne rempla\\u00e7ait pas le savon par une r\\u00e2pe \\u00e0 muscade. C\\u2019\\u00e9tait une femme grande et osseuse\\u00a0; elle ne quittait presque jamais un tablier de toile grossi\\u00e8re, attach\\u00e9 par derri\\u00e8re \\u00e0 l\\u2019aide de deux cordons, et une bavette imperm\\u00e9able, toujours parsem\\u00e9e d\\u2019\\u00e9pingles et d\\u2019aiguilles. Ce tablier \\u00e9tait la glorification de son m\\u00e9rite et un reproche perp\\u00e9tuellement suspendu sur la t\\u00eate de Joe. Je n\\u2019ai jamais pu deviner pour quelle raison elle le portait, ni pourquoi, si elle voulait absolument le porter, elle ne l\\u2019aurait pas chang\\u00e9, au moins une fois par jour.

La forge de Joe attenait \\u00e0 la maison, construite en bois, comme l\\u2019\\u00e9taient \\u00e0 cette \\u00e9poque plus que la plupart des maisons de notre pays. Quand je rentrai du cimeti\\u00e8re, la forge \\u00e9tait ferm\\u00e9e, et Joe \\u00e9tait assis tout seul dans la cuisine. Joe et moi, nous \\u00e9tions compagnons de souffrances, et comme tels nous nous faisions des confidences\\u00a0; aussi, \\u00e0 peine eus-je soulev\\u00e9 le loquet de la porte et l\\u2019eus-je aper\\u00e7u dans le coin de la chemin\\u00e9e, qu\\u2019il me dit\\u00a0:

\\u00ab\\u00a0Mrs Joe est sortie douze fois pour te chercher, mon petit Pip\\u00a0; et elle est maintenant dehors une treizi\\u00e8me fois pour compl\\u00e9ter la douzaine de boulanger.

\\u2014 Vraiment\\u00a0?

\\u2014 Oui, mon petit Pip, dit Joe\\u00a0; et ce qu\\u2019il y a de pire pour toi, c\\u2019est qu\\u2019elle a pris Tickler avec elle.\\u00a0\\u00bb

\\u00c0 cette terrible nouvelle, je me mis \\u00e0 tortiller l\\u2019unique bouton de mon gilet et, d\\u2019un air abattu, je regardai le feu. Tickler \\u00e9tait un jonc flexible, poli \\u00e0 son extr\\u00e9mit\\u00e9 par de fr\\u00e9quentes collisions avec mon pauvre corps.

\\u00ab\\u00a0Elle se levait sans cesse, dit Joe\\u00a0; elle parlait \\u00e0 Tickler, puis elle s\\u2019est pr\\u00e9cipit\\u00e9e dehors comme une furieuse. Oui, comme une furieuse\\u00a0\\u00bb, ajouta Joe en tisonnant le feu entre les barreaux de la grille avec le poker.

\\u2014 Y a-t-il longtemps qu\\u2019elle est sortie, Joe\\u00a0? dis-je, car je le traitais toujours comme un enfant, et le consid\\u00e9rais comme mon \\u00e9gal.

\\u2014 Hem\\u00a0! dit Joe en regardant le coucou hollandais, il y a bien cinq minutes qu\\u2019elle est partie en fureur\\u2026 mon petit Pip. Elle revient\\u00a0!\\u2026 Cache-toi derri\\u00e8re la porte, mon petit Pip, et rabats l\\u2019essuie-mains sur toi.\\u00a0\\u00bb

Je suivis ce conseil. Ma s\\u0153ur, Mrs Joe, entra en poussant la porte ouverte, et trouvant une certaine r\\u00e9sistance elle en devina aussit\\u00f4t la cause, et chargea Tickler de ses investigations. Elle finit, je lui servais souvent de projectile conjugal, par me jeter sur Joe, qui, heureux de cette circonstance, me fit passer sous la chemin\\u00e9e, et me prot\\u00e9gea tranquillement avec ses longues jambes.

\\u00ab\\u00a0D\\u2019o\\u00f9 viens-tu, petit singe\\u00a0? dit Mrs Joe en frappant du pied. Dis-moi bien vite ce que tu as fait pour me donner ainsi de l\\u2019inqui\\u00e9tude et du tracas, sans cela je saurai bien t\\u2019attraper dans ce coin, quand vous seriez cinquante Pips et cinq cents Gargerys.

\\u2014 Je suis seulement all\\u00e9 jusqu\\u2019au cimeti\\u00e8re, dis-je du fond de ma cachette en pleurant et en me grattant.

\\u2014 Au cimeti\\u00e8re\\u00a0? r\\u00e9p\\u00e9ta ma s\\u0153ur. Sans moi, il y a longtemps que tu y serais all\\u00e9 et que tu n\\u2019en serais pas revenu. Qui donc t\\u2019a \\u00e9lev\\u00e9\\u00a0?

\\u2014 C\\u2019est toi, dis-je.

\\u2014 Et pourquoi y es-tu all\\u00e9\\u00a0? Voil\\u00e0 ce que je voudrais savoir, s\\u2019\\u00e9cria ma s\\u0153ur.

\\u2014 Je ne sais pas, dis-je \\u00e0 voix basse.

\\u2014 Je ne sais pas\\u00a0! reprit ma s\\u0153ur, je ne le ferai plus jamais\\u00a0! Je connais cela. Je t\\u2019abandonnerai un de ces jours, moi qui n\\u2019ai jamais quitt\\u00e9 ce tablier depuis que tu es au monde. C\\u2019est d\\u00e9j\\u00e0 bien assez d\\u2019\\u00eatre la femme d\\u2019un forgeron, et d\\u2019un Gargery encore, sans \\u00eatre ta m\\u00e8re\\u00a0!\\u00a0\\u00bb

Mes pens\\u00e9es s\\u2019\\u00e9cart\\u00e8rent du sujet dont il \\u00e9tait question, car en regardant le feu d\\u2019un air inconsolable, je vis para\\u00eetre, dans les charbons vengeurs, le fugitif des marais, avec sa jambe ferr\\u00e9e, le myst\\u00e9rieux jeune homme, la lime, les vivres, et le terrible engagement que j\\u2019avais pris de commettre un larcin sous ce toit hospitalier.

\\u00ab\\u00a0Ah\\u00a0! dit Mrs Joe en remettant Tickler \\u00e0 sa place. Au cimeti\\u00e8re, c\\u2019est bien cela\\u00a0! C\\u2019est bien \\u00e0 vous qu\\u2019il appartient de parler de cimeti\\u00e8re. Pas un de nous, entre parenth\\u00e8ses, n\\u2019avait souffl\\u00e9 un mot de cela. Vous pouvez vous en vanter tous les deux, vous m\\u2019y conduirez un de ces jours, au cimeti\\u00e8re. Ah\\u00a0! quel j\\u2026 o\\u2026 l\\u2026 i c\\u2026 o\\u2026 u\\u2026 p\\u2026 l\\u2026 e vous ferez sans moi\\u00a0!\\u00a0\\u00bb

Pendant qu\\u2019elle s\\u2019occupait \\u00e0 pr\\u00e9parer le th\\u00e9, Joe tournait sur moi des yeux interrogateurs, comme pour me demander si je pr\\u00e9voyais quelle sorte de couple nous pourrions bien faire \\u00e0 nous deux, si le malheur pr\\u00e9dit arrivait. Puis il passa sa main gauche sur ses favoris, en suivant de ses gros yeux bleus les mouvements de Mrs Joe, comme il faisait toujours par les temps d\\u2019orage.

Ma s\\u0153ur avait adopt\\u00e9 un moyen de nous pr\\u00e9parer nos tartines de beurre, qui ne variait jamais. Elle appuyait d\\u2019abord vigoureusement et longuement avec sa main gauche, le pain sur la poitrine, o\\u00f9 il ne manquait pas de ramasser sur la bavette, tant\\u00f4t une \\u00e9pingle, tant\\u00f4t une aiguille, qui se retrouvait bient\\u00f4t dans la bouche de l\\u2019un de nous. Elle prenait ensuite un peu (tr\\u00e8s-peu de beurre) \\u00e0 la pointe d\\u2019un couteau, et l\\u2019\\u00e9talait sur le pain de la m\\u00eame mani\\u00e8re qu\\u2019un apothicaire pr\\u00e9pare un empl\\u00e2tre, se servant des deux c\\u00f4t\\u00e9s du couteau avec dext\\u00e9rit\\u00e9, et ayant soin de ramasser ce qui d\\u00e9passait le bord de la cro\\u00fbte. Puis elle donnait un dernier coup de couteau sur le bord de l\\u2019empl\\u00e2tre, et elle tranchait une \\u00e9paisse tartine de pain que, finalement, elle s\\u00e9parait en deux moiti\\u00e9s, l\\u2019une pour Joe, l\\u2019autre pour moi.

Ce jour-l\\u00e0, j\\u2019avais faim, et malgr\\u00e9 cela je n\\u2019osai pas manger ma tartine. Je sentais que j\\u2019avais \\u00e0 r\\u00e9server quelque chose pour ma terrible connaissance et son alli\\u00e9, plus terrible encore, le jeune homme myst\\u00e9rieux. Je savais que Mrs Joe dirigeait sa maison avec la plus stricte \\u00e9conomie, et que mes recherches dans le garde-manger pourraient bien \\u00eatre infructueuses. Je me d\\u00e9cidai donc \\u00e0 cacher ma tartine dans l\\u2019une des jambes de mon pantalon.

L\\u2019effort de r\\u00e9solution n\\u00e9cessaire \\u00e0 l\\u2019accomplissement de ce projet me paraissait terrible. Il produisait sur mon imagination le m\\u00eame effet que si j\\u2019eusse d\\u00fb me pr\\u00e9cipiter d\\u2019une haute maison, ou dans une eau tr\\u00e8s-profonde, et il me devenait d\\u2019autant plus difficile de m\\u2019y r\\u00e9soudre finalement, que Joe ignorait tout. Dans l\\u2019esp\\u00e8ce de franc-ma\\u00e7onnerie, d\\u00e9j\\u00e0 mentionn\\u00e9e par moi, qui nous unissait comme compagnons des m\\u00eames souffrances, et dans la camaraderie bienveillante de Joe pour moi, nous avions coutume de comparer nos tartines, \\u00e0 mesure que nous y faisions des br\\u00e8ches, en les exposant \\u00e0 notre mutuelle admiration, comme pour stimuler notre ardeur. Ce soir-l\\u00e0, Joe m\\u2019invita plusieurs fois \\u00e0 notre lutte amicale en me montrant les progr\\u00e8s que faisait la br\\u00e8che ouverte dans sa tartine\\u00a0; mais, chaque fois, il me trouva avec ma tasse de th\\u00e9 sur un genou et ma tartine intacte sur l\\u2019autre. Enfin, je consid\\u00e9rai que le sacrifice \\u00e9tait in\\u00e9vitable, je devais le faire de la mani\\u00e8re la moins extraordinaire et la plus compatible avec les circonstances. Profitant donc d\\u2019un moment o\\u00f9 Joe avait les yeux tourn\\u00e9s, je fourrai ma tartine dans une des jambes de mon pantalon.

Joe paraissait \\u00e9videmment mal \\u00e0 l\\u2019aise de ce qu\\u2019il supposait \\u00eatre un manque d\\u2019app\\u00e9tit, et il mordait tout pensif \\u00e0 m\\u00eame sa tartine des bouch\\u00e9es qu\\u2019il semblait avaler sans aucun plaisir. Il les tournait et retournait dans sa bouche plus longtemps que de coutume, et finissait par les avaler comme des pilules. Il allait saisir encore une fois, avec ses dents, le pain beurr\\u00e9 et avait d\\u00e9j\\u00e0 ouvert une bouche d\\u2019une dimension fort raisonnable, lorsque, ses yeux tombant sur moi, il s\\u2019aper\\u00e7ut que ma tartine avait disparu.

L\\u2019\\u00e9tonnement et la consternation avec lesquels Joe avait arr\\u00eat\\u00e9 le pain sur le seuil de sa bouche et me regardait, \\u00e9taient trop \\u00e9vidents pour \\u00e9chapper \\u00e0 l\\u2019observation de ma s\\u0153ur.

\\u2014 Qu\\u2019y a-t-il encore\\u00a0? dit-elle en posant sa tasse sur la table.

\\u2014 Oh\\u00a0! oh\\u00a0! murmurait Joe, en secouant la t\\u00eate d\\u2019un air de s\\u00e9rieuse remontrance, mon petit Pip, mon camarade, tu te feras du mal, \\u00e7a ne passera pas, tu n\\u2019as pas pu la m\\u00e2cher, mon petit Pip, mon ami\\u00a0!

\\u2014 Qu\\u2019est-ce qu\\u2019il y a encore, voyons\\u00a0? r\\u00e9p\\u00e9ta ma s\\u0153ur avec plus d\\u2019aigreur que la premi\\u00e8re fois.

\\u2014 Si tu peux en faire remonter quelque parcelle, en toussant, mon petit Pip, fais-le, mon ami\\u00a0! dit Joe. Certainement chacun mange comme il l\\u2019entend, mais encore, ta sant\\u00e9\\u00a0!\\u2026 ta sant\\u00e9\\u00a0!\\u2026\\u00a0\\u00bb

\\u00c0 ce moment, ma s\\u0153ur furieuse avait attrap\\u00e9 Joe par ses deux favoris et lui cognait la t\\u00eate contre le mur, pendant qu\\u2019assis dans mon coin je les consid\\u00e9rais d\\u2019un air vraiment piteux.

\\u00ab\\u00a0Maintenant, peut-\\u00eatre vas-tu me dire ce qu\\u2019il y a, gros niais que tu es\\u00a0!\\u00a0\\u00bb dit ma s\\u0153ur hors d\\u2019haleine.

Joe promena sur elle un regard d\\u00e9sesp\\u00e9r\\u00e9, prit une bouch\\u00e9e d\\u00e9sesp\\u00e9r\\u00e9e, puis il me regarda de nouveau\\u00a0:

\\u00ab\\u00a0Tu sais, mon petit Pip, dit-il d\\u2019un ton solennel et confidentiel, comme si nous eussions \\u00e9t\\u00e9 seuls, et en logeant sa derni\\u00e8re bouch\\u00e9e dans sa joue, tu sais que toi et moi sommes bons amis, et que je serais le dernier \\u00e0 faire aucun mauvais rapport contre toi\\u00a0; mais faire un pareil coup\\u2026\\u00a0\\u00bb

Il \\u00e9loigna sa chaise pour regarder le plancher entre lui et moi\\u00a0; puis il reprit\\u00a0:

\\u00ab\\u00a0Avaler un pareil morceau d\\u2019un seul coup\\u00a0!

\\u2014 Il a aval\\u00e9 tout son pain, n\\u2019est-ce pas\\u00a0? s\\u2019\\u00e9cria ma s\\u0153ur.

\\u2014 Tu sais, mon petit Pip, reprit Joe, en me regardant, sans faire la moindre attention \\u00e0 Mrs Joe, et ayant toujours sous la joue sa derni\\u00e8re bouch\\u00e9e, que j\\u2019ai aval\\u00e9 aussi, moi qui te parle\\u2026 et souvent encore\\u2026 quand j\\u2019avais ton \\u00e2ge, et j\\u2019ai vu bien des avaleurs, mais je n\\u2019ai jamais vu avaler comme toi, mon petit Pip, et je m\\u2019\\u00e9tonne que tu n\\u2019en sois pas mort\\u00a0; c\\u2019est par une permission du bon Dieu\\u00a0!\\u00a0\\u00bb

Ma s\\u0153ur s\\u2019\\u00e9lan\\u00e7a sur moi, me prit par les cheveux et m\\u2019adressa ces paroles terribles\\u00a0:

\\u00ab\\u00a0Arrive, mauvais garnement, qu\\u2019on te soigne\\u00a0!\\u00a0\\u00bb

Quelque brute m\\u00e9dicale avait, \\u00e0 cette \\u00e9poque, remis en vogue l\\u2019eau de goudron, comme un rem\\u00e8de tr\\u00e8s-efficace, et Mrs Joe en avait toujours dans son armoire une certaine provision, croyant qu\\u2019elle avait d\\u2019autant plus de vertu qu\\u2019elle \\u00e9tait plus d\\u00e9go\\u00fbtante. Dans de meilleurs temps, un peu de cet \\u00e9lixir m\\u2019avait \\u00e9t\\u00e9 administr\\u00e9 comme un excellent fortifiant\\u00a0; je craignis donc ce qui allait arriver, pressentant une nouvelle entrave \\u00e0 mes projets de sortie. Ce soir-l\\u00e0, l\\u2019urgence du cas demandait au moins une pinte de cette drogue. Mrs Joe me l\\u2019introduisit dans la gorge, pour mon plus grand bien, en me tenant la t\\u00eate sous son bras, comme un tire-bottes tient une chaussure. Joe en fut quitte pour une demi-pinte, qu\\u2019il dut avaler, bon gr\\u00e9, mal gr\\u00e9, pendant qu\\u2019il \\u00e9tait assis, m\\u00e2chant tranquillement et m\\u00e9ditant devant le feu, parce qu\\u2019il avait peut-\\u00eatre eu mal au c\\u0153ur. Jugeant d\\u2019apr\\u00e8s moi, je puis dire qu\\u2019il y aurait eu mal apr\\u00e8s, s\\u2019il n\\u2019y avait eu mal avant.

La conscience est une chose terrible, quand elle accuse, soit un homme, soit un enfant\\u00a0; mais quand ce secret fardeau se trouve li\\u00e9 \\u00e0 un autre fardeau, enfoui dans les jambes d\\u2019un pantalon, c\\u2019est (je puis l\\u2019avouer) une grande punition. La pens\\u00e9e que j\\u2019allais commettre un crime en volant Mrs Joe, l\\u2019id\\u00e9e que je volerais Joe ne me serait jamais venue, car je n\\u2019avais jamais pens\\u00e9 qu\\u2019il e\\u00fbt aucun droit sur les ustensiles du m\\u00e9nage\\u00a0; cette pens\\u00e9e, jointe \\u00e0 la n\\u00e9cessit\\u00e9 dans laquelle je me trouvais de tenir sans rel\\u00e2che ma main sur ma tartine, pendant que j\\u2019\\u00e9tais assis ou que j\\u2019allais \\u00e0 la cuisine chercher quelque chose ou faire quelques petites commissions, me rendait presque fou. Alors, quand le vent des marais venait ranimer et faire briller le feu de la chemin\\u00e9e, il me semblait entendre au dehors la voix de l\\u2019homme \\u00e0 la jambe ferr\\u00e9e, qui m\\u2019avait fait jurer le secret, me criant qu\\u2019il ne pouvait ni ne voulait je\\u00fbner jusqu\\u2019au lendemain, mais qu\\u2019il lui fallait manger tout de suite. D\\u2019autre fois, je pensais que le jeune homme, qu\\u2019il \\u00e9tait si difficile d\\u2019emp\\u00eacher de plonger ses mains dans mes entrailles, pourrait bien c\\u00e9der \\u00e0 une impatience constitutionnelle, ou se tromper d\\u2019heure et se croire des droits \\u00e0 mon c\\u0153ur et \\u00e0 mon foie ce soir m\\u00eame, au lieu de demain\\u00a0! S\\u2019il est jamais arriv\\u00e9 \\u00e0 quelqu\\u2019un de sentir ses cheveux se dresser sur sa t\\u00eate, ce doit \\u00eatre \\u00e0 moi. Mais peut-\\u00eatre cela n\\u2019est-il jamais arriv\\u00e9 \\u00e0 personne.

C\\u2019\\u00e9tait la veille de No\\u00ebl, et j\\u2019\\u00e9tais charg\\u00e9 de remuer, avec une tige en cuivre, la p\\u00e2te du pudding pour le lendemain, et cela de sept \\u00e0 huit heures, au coucou hollandais. J\\u2019essayai de m\\u2019acquitter de ce devoir sans me s\\u00e9parer de ma tartine, et cela me fit penser une fois de plus \\u00e0 l\\u2019homme charg\\u00e9 de fers, et j\\u2019\\u00e9prouvai alors une certaine tendance \\u00e0 sortir la malheureuse tartine de mon pantalon, mais la chose \\u00e9tait bien difficile. Heureusement, je parvins \\u00e0 me glisser jusqu\\u2019\\u00e0 ma petite chambre, o\\u00f9 je d\\u00e9posai cette partie de ma conscience.

\\u2014 \\u00c9coute\\u00a0! dis-je, quand j\\u2019eus fini avec le pudding, et que je revins prendre encore un peu de chaleur au coin de la chemin\\u00e9e avant qu\\u2019on ne m\\u2019envoy\\u00e2t coucher. Pourquoi tire-t-on ces grands coups de canon, Joe\\u00a0?

\\u2014 Ah\\u00a0! dit Joe, encore un for\\u00e7at d\\u2019\\u00e9vad\\u00e9\\u00a0!

\\u2014 Qu\\u2019est-ce que cela veut dire, Joe\\u00a0?\\u00a0\\u00bb

Mrs Joe, qui se chargeait toujours de donner des explications, r\\u00e9pondit avec aigreur\\u00a0:

\\u00ab\\u00a0\\u00c9chapp\\u00e9\\u00a0! \\u00e9chapp\\u00e9\\u00a0!\\u2026\\u00a0\\u00bb administrant ainsi la d\\u00e9finition comme elle administrait l\\u2019eau de goudron.

Tandis que Mrs Joe avait la t\\u00eate pench\\u00e9e sur son ouvrage d\\u2019aiguille, je t\\u00e2chai par des mouvements muets de mes l\\u00e8vres de faire entendre \\u00e0 Joe cette question\\u00a0:

\\u00ab\\u00a0Qu\\u2019est-ce c\\u2019est qu\\u2019un for\\u00e7at\\u00a0?\\u00a0\\u00bb

Joe me fit une r\\u00e9ponse grandement \\u00e9labor\\u00e9e, \\u00e0 en juger par les contorsions de sa bouche, mais dont je ne pus former que le seul mot\\u00a0: \\u00ab\\u00a0Pip\\u00a0!\\u2026\\u00a0\\u00bb

\\u00ab\\u00a0Un for\\u00e7at s\\u2019est \\u00e9vad\\u00e9 hier soir apr\\u00e8s le coup de canon du coucher du soleil, reprit Joe \\u00e0 haute voix, et on a tir\\u00e9 le canon pour en avertir\\u00a0; et maintenant on tire sans doute encore pour un autre.

\\u2014 Qu\\u2019est-ce qui tire\\u00a0? demandai-je.

\\u2014 Qu\\u2019est-ce que c\\u2019est qu\\u2019un gar\\u00e7on comme \\u00e7a\\u00a0? fit ma s\\u0153ur en fron\\u00e7ant le sourcil par-dessus son ouvrage. Quel questionneur \\u00e9ternel tu fais\\u2026 Ne fais pas de questions, et on ne te dira pas de mensonges.\\u00a0\\u00bb

Je pensais que ce n\\u2019\\u00e9tait pas tr\\u00e8s-poli pour elle-m\\u00eame de me laisser entendre qu\\u2019elle me dirait des mensonges, si je lui faisais des questions. Mais elle n\\u2019\\u00e9tait jamais polie avec moi, except\\u00e9 quand il y avait du monde.

\\u00c0 ce moment, Joe vint augmenter ma curiosit\\u00e9 au plus haut degr\\u00e9, en prenant beaucoup de peine pour ouvrir la bouche toute grande, et lui faire prendre la forme d\\u2019un mot qui, au mouvement de ses l\\u00e8vres, me parut \\u00eatre\\u00a0:

\\u00ab\\u00a0Boud\\u00e9\\u2026\\u00a0\\u00bb

Je regardai naturellement Mrs Joe et dis\\u00a0:

\\u00ab\\u00a0Elle\\u00a0?\\u00a0\\u00bb

Mais Joe ne parut rien entendre du tout, et il r\\u00e9p\\u00e9ta le mouvement avec plus d\\u2019\\u00e9nergie encore\\u00a0; je ne compris pas davantage.

\\u00ab\\u00a0Mistress Joe, dis-je comme derni\\u00e8re ressource, je voudrais bien savoir\\u2026 si cela ne te fait rien\\u2026 o\\u00f9 l\\u2019on tire le canon\\u00a0?

\\u2014 Que Dieu b\\u00e9nisse cet enfant\\u00a0! s\\u2019\\u00e9cria ma s\\u0153ur d\\u2019un ton qui faisait croire qu\\u2019elle pensait tout le contraire de ce qu\\u2019elle disait. Aux pontons\\u00a0!

\\u2014 Oh\\u00a0! dis-je en levant les yeux sur Joe, aux pontons\\u00a0!\\u00a0\\u00bb

Joe me lan\\u00e7a un regard de reproche qui disait\\u00a0:

\\u00ab\\u00a0Je te l\\u2019avais bien dit[1].

\\u2014 Et s\\u2019il te pla\\u00eet, qu\\u2019est-ce que les pontons\\u00a0? repris-je.

\\u2014 Voyez-vous, s\\u2019\\u00e9cria ma s\\u0153ur en dirigeant sur moi son aiguille et en secouant la t\\u00eate de mon c\\u00f4t\\u00e9, r\\u00e9pondez-lui une fois, et il vous fera de suite une douzaine de questions. Les pontons sont des vaisseaux qui servent de prison, et qu\\u2019on trouve en traversant tout droit les marais.

\\u2014 Je me demande qui on peut mettre dans ces prisons, et pourquoi on y met quelqu\\u2019un\\u00a0?\\u00a0\\u00bb dis-je d\\u2019une mani\\u00e8re g\\u00e9n\\u00e9rale et avec un d\\u00e9sespoir calme.

C\\u2019en \\u00e9tait trop pour Mrs Joe, qui se leva imm\\u00e9diatement.

\\u00ab\\u00a0Je vais te le dire, m\\u00e9chant vaurien, fit-elle. Je ne t\\u2019ai pas \\u00e9lev\\u00e9 pour que tu fasses mourir personne \\u00e0 petit feu\\u00a0; je serais \\u00e0 bl\\u00e2mer et non \\u00e0 louer si je l\\u2019avais fait. On met sur les pontons ceux qui ont tu\\u00e9, vol\\u00e9, fait des faux et toutes sortes de mauvaises actions, et ces gens-l\\u00e0 ont tous commenc\\u00e9 comme toi par faire des questions. Maintenant, va te coucher, et d\\u00e9p\\u00eachons\\u00a0!\\u00a0\\u00bb

On ne me donnait jamais de chandelle pour m\\u2019aller coucher, et en gagnant cette fois ma chambre dans l\\u2019obscurit\\u00e9, ma t\\u00eate tintait, car Mrs Joe avait tambourin\\u00e9 avec son d\\u00e9 sur mon cr\\u00e2ne, en disant ces derniers mots et je sentais avec \\u00e9pouvante que les pontons \\u00e9taient faits pour moi\\u00a0; j\\u2019\\u00e9tais sur le chemin, c\\u2019\\u00e9tait \\u00e9vident\\u00a0! J\\u2019avais commenc\\u00e9 \\u00e0 faire des questions, et j\\u2019\\u00e9tais sur le point de voler Mrs Joe.

Depuis cette \\u00e9poque, bien recul\\u00e9e maintenant, j\\u2019ai souvent pens\\u00e9 combien peu de gens savent \\u00e0 quel point on peut compter sur la discr\\u00e9tion des enfants frapp\\u00e9s de terreur. Cependant, rien n\\u2019est plus d\\u00e9raisonnable que la terreur. J\\u2019\\u00e9prouvais une terreur mortelle en pensant au jeune homme qui en voulait absolument \\u00e0 mon c\\u0153ur et \\u00e0 mes entrailles. J\\u2019\\u00e9prouvais une terreur mortelle au souvenir de mon interlocuteur \\u00e0 la jambe ferr\\u00e9e. J\\u2019\\u00e9prouvais une terreur mortelle de moi-m\\u00eame, depuis qu\\u2019on m\\u2019avait arrach\\u00e9 ce terrible serment\\u00a0; je n\\u2019avais aucun espoir d\\u2019\\u00eatre d\\u00e9livr\\u00e9 de cette terreur par ma toute-puissante s\\u0153ur, qui me rebutait \\u00e0 chaque tentative que je faisais\\u00a0; et je suis effray\\u00e9 rien qu\\u2019en pensant \\u00e0 ce qu\\u2019un ordre quelconque aurait pu m\\u2019amener \\u00e0 faire sous l\\u2019influence de cette terreur.

Si je dormis un peu cette nuit-l\\u00e0, ce fut pour me sentir entra\\u00een\\u00e9 vers les pontons par le courant de la rivi\\u00e8re. En passant pr\\u00e8s de la potence, je vis un fant\\u00f4me de pirate, qui me criait dans un porte-voix que je ferais mieux d\\u2019aborder et d\\u2019\\u00eatre pendu tout de suite que d\\u2019attendre. J\\u2019aurais eu peur de dormir, quand m\\u00eame j\\u2019en aurais eu l\\u2019envie, car je savais que c\\u2019\\u00e9tait \\u00e0 la premi\\u00e8re aube que je devais piller le garde-manger. Il ne fallait pas songer \\u00e0 agir la nuit, car je n\\u2019avais aucun moyen de me procurer de la lumi\\u00e8re, si ce n\\u2019est en battant le briquet, ou une pierre \\u00e0 fusil avec un morceau de fer, ce qui aurait produit un bruit semblable \\u00e0 celui du pirate agitant ses cha\\u00eenes.

D\\u00e8s que le grand rideau noir qui recouvrait ma petite fen\\u00eatre e\\u00fbt pris une l\\u00e9g\\u00e8re teinte grise, je descendis. Chacun de mes pas, sur le plancher, produisait un craquement qui me semblait crier\\u00a0: \\u00ab\\u00a0Au voleur\\u00a0!\\u2026 R\\u00e9veillez-vous, mistress Joe\\u00a0!\\u2026 R\\u00e9veillez-vous\\u00a0!\\u2026\\u00a0\\u00bb Arriv\\u00e9 au garde-manger qui, vu la saison, \\u00e9tait plus abondamment garni que de coutume, j\\u2019eus un moment de frayeur indescriptible \\u00e0 la vue d\\u2019un li\\u00e8vre pendu par les pattes. Il me sembla m\\u00eame qu\\u2019il fixait sur moi un \\u0153il beaucoup trop vif pour sa situation. Je n\\u2019avais pas le temps de rien v\\u00e9rifier, ni de choisir\\u00a0; en un mot, je n\\u2019avais le temps de rien faire. Je pris du pain, du fromage, une assiette de hachis, que je nouai dans mon mouchoir avec la fameuse tartine de la veille, un peu d\\u2019eau-de-vie dans une bouteille de gr\\u00e8s, que je transvasai dans une bouteille de verre que j\\u2019avais secr\\u00e8tement emport\\u00e9e dans ma chambre pour composer ce liquide enivrant appel\\u00e9 \\u00ab\\u00a0jus de r\\u00e9glisse\\u00a0\\u00bb, remplissant la bouteille de gr\\u00e8s avec de l\\u2019eau que je trouvai dans une cruche dans le buffet de la cuisine, un os, auquel il ne restait que fort peu de viande, et un magnifique p\\u00e2t\\u00e9 de porc. J\\u2019allais partir sans ce splendide morceau, quand j\\u2019eus l\\u2019id\\u00e9e de monter sur une planche pour voir ce que pouvait contenir ce plat de terre si soigneusement rel\\u00e9gu\\u00e9 dans le coin le plus obscur de l\\u2019armoire et que je d\\u00e9couvris le p\\u00e2t\\u00e9, je m\\u2019en emparai avec l\\u2019espoir qu\\u2019il n\\u2019\\u00e9tait pas destin\\u00e9 \\u00e0 \\u00eatre mang\\u00e9 de sit\\u00f4t, et qu\\u2019on ne s\\u2019apercevrait pas de sa disparition, de quelque temps au moins.

Une porte de la cuisine donnait acc\\u00e8s dans la forge\\u00a0; je tirai le verrou, j\\u2019ouvris cette porte, et je pris une lime parmi les outils de Joe. Puis, je remis toutes les fermetures dans l\\u2019\\u00e9tat o\\u00f9 je les avais trouv\\u00e9es\\u00a0; j\\u2019ouvris la porte par laquelle j\\u2019\\u00e9tais rentr\\u00e9 le soir pr\\u00e9c\\u00e9dent\\u00a0; je m\\u2019\\u00e9lan\\u00e7ai dans la rue, et pris ma course vers les marais brumeux.

\"}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"5a2ff3d3-019a-4781-bfab-1a1ef5ca1a91\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 68, + "fields": { + "body": "[{\"id\": \"a98dc2ae-3043-4d73-a2ad-e9cbe5f9945a\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"f252b5d7-e2fc-4a05-ad19-682a6d203c82\", \"type\": \"text\", \"value\": \"

C\\u2019\\u00e9tait une matin\\u00e9e de gel\\u00e9e blanche tr\\u00e8s-humide. J\\u2019avais trouv\\u00e9 l\\u2019ext\\u00e9rieur de la petite fen\\u00eatre de ma chambre tout mouill\\u00e9, comme si quelque lutin y avait pleur\\u00e9 toute la nuit, et qu\\u2019il lui e\\u00fbt servi de mouchoir de poche. Je retrouvai cette m\\u00eame humidit\\u00e9 sur les haies st\\u00e9riles et sur l\\u2019herbe dess\\u00e9ch\\u00e9e, suspendue comme de grossi\\u00e8res toiles d\\u2019araign\\u00e9e, de rameau en rameau, de brin en brin\\u00a0; les grilles, les murs \\u00e9taient dans le m\\u00eame \\u00e9tat, et le brouillard \\u00e9tait si \\u00e9pais, que je ne vis qu\\u2019en y touchant le poteau au bras de bois qui indique la route de notre village, indication qui ne servait \\u00e0 rien car on ne passait jamais par l\\u00e0. Je levai les yeux avec terreur sur le poteau, ma conscience oppress\\u00e9e en faisant un fant\\u00f4me, me montrant la rue des Pontons.

Le brouillard devenait encore plus \\u00e9pais, \\u00e0 mesure que j\\u2019approchais des marais, de sorte qu\\u2019au lieu d\\u2019aller vers les objets, il me semblait que c\\u2019\\u00e9taient les objets qui venaient vers moi. Cette sensation \\u00e9tait extr\\u00eamement d\\u00e9sagr\\u00e9able pour un esprit coupable. Les grilles et les foss\\u00e9s s\\u2019\\u00e9lan\\u00e7aient \\u00e0 ma poursuite, \\u00e0 travers le brouillard, et criaient tr\\u00e8s-distinctement\\u00a0: \\u00ab\\u00a0Arr\\u00eatez-le\\u00a0! Arr\\u00eatez-le\\u00a0!\\u2026 Il emporte un p\\u00e2t\\u00e9 qui n\\u2019est pas \\u00e0 lui\\u00a0!\\u2026\\u00a0\\u00bb Les bestiaux y mettaient une ardeur \\u00e9gale et \\u00e9carquillaient leurs gros yeux en me lan\\u00e7ant par leurs naseaux un effroyable\\u00a0: \\u00ab\\u00a0Hol\\u00e0\\u00a0! petit voleur\\u00a0!\\u2026 Au voleur\\u00a0! Au voleur\\u00a0!\\u2026\\u00a0\\u00bb Un b\\u0153uf noir, \\u00e0 cravate blanche, auquel ma conscience troubl\\u00e9e trouvait un certain air cl\\u00e9rical, fixait si obstin\\u00e9ment sur moi son \\u0153il accusateur, que je ne pus m\\u2019emp\\u00eacher de lui dire en passant\\u00a0:

\\u00ab\\u00a0Je n\\u2019ai pas pu faire autrement, monsieur\\u00a0! Ce n\\u2019est pas pour moi que je l\\u2019ai pris\\u00a0!\\u00a0\\u00bb

Sur ce, il baissa sa grosse t\\u00eate, souffla par ses naseaux un nuage de vapeur, et disparut apr\\u00e8s avoir lanc\\u00e9 une ruade majestueuse avec ses pieds de derri\\u00e8re et fait le moulinet avec sa queue.

Je m\\u2019avan\\u00e7ais toujours vers la rivi\\u00e8re. J\\u2019avais beau courir, je ne pouvais r\\u00e9chauffer mes pieds, auxquels l\\u2019humidit\\u00e9 froide semblait riv\\u00e9e comme la cha\\u00eene de fer \\u00e9tait riv\\u00e9e \\u00e0 la jambe de l\\u2019homme que j\\u2019allais retrouver. Je connaissais parfaitement bien le chemin de la Batterie, car j\\u2019y \\u00e9tais all\\u00e9 une fois, un dimanche, avec Joe, et je me souvenais, qu\\u2019assis sur un vieux canon, il m\\u2019avait dit que, lorsque je serais son apprenti et directement sous sa d\\u00e9pendance, nous viendrions l\\u00e0 passer de bons quarts d\\u2019heure. Quoi qu\\u2019il en soit, le brouillard m\\u2019avait fait prendre un peu trop \\u00e0 droite\\u00a0; en cons\\u00e9quence, je dus rebrousser chemin le long de la rivi\\u00e8re, sur le bord de laquelle il y avait de grosses pierres au milieu de la vase et des pieux, pour contenir la mar\\u00e9e. En me h\\u00e2tant de retrouver mon chemin, je venais de traverser un foss\\u00e9 que je savais n\\u2019\\u00eatre pas \\u00e9loign\\u00e9 de la Batterie, quand j\\u2019aper\\u00e7us l\\u2019homme assis devant moi. Il me tournait le dos, et avait les bras crois\\u00e9s et la t\\u00eate pench\\u00e9e en avant, sous le poids du sommeil.

Je pensais qu\\u2019il serait content de me voir arriver aussi inopin\\u00e9ment avec son d\\u00e9jeuner. Je m\\u2019approchai donc de lui et le touchai doucement \\u00e0 l\\u2019\\u00e9paule. Il bondit sur ses pieds, mais ce n\\u2019\\u00e9tait pas le m\\u00eame homme, c\\u2019en \\u00e9tait un autre\\u00a0!

Et pourtant cet homme \\u00e9tait, comme l\\u2019autre, habill\\u00e9 tout en gris\\u00a0; comme l\\u2019autre, il avait un fer \\u00e0 la jambe\\u00a0; comme l\\u2019autre, il boitait, il avait froid, il \\u00e9tait enrou\\u00e9\\u00a0; enfin c\\u2019\\u00e9tait exactement le m\\u00eame homme, si ce n\\u2019est qu\\u2019il n\\u2019avait pas le m\\u00eame visage et qu\\u2019il portait un chapeau bas de forme et \\u00e0 larges bords. Je vis tout cela en un moment, car je n\\u2019eus qu\\u2019un moment pour voir tout cela\\u00a0; il me lan\\u00e7a un gros juron \\u00e0 la t\\u00eate, puis il voulut me donner un coup de poing\\u00a0; mais si ind\\u00e9cis et si faible qu\\u2019il me manqua et faillit lui-m\\u00eame rouler \\u00e0 terre car ce mouvement le fit chanceler\\u00a0; alors, il s\\u2019enfon\\u00e7a dans le brouillard, en tr\\u00e9buchant deux fois et je le perdis de vue.

\\u00ab\\u00a0C\\u2019est le jeune homme\\u00a0!\\u00a0\\u00bb pensai-je en portant la main sur mon c\\u0153ur.

Et je crois que j\\u2019aurais aussi ressenti une douleur au foie, si j\\u2019avais su o\\u00f9 il \\u00e9tait plac\\u00e9.

J\\u2019arrivai bient\\u00f4t \\u00e0 la Batterie. J\\u2019y trouvai mon homme, le v\\u00e9ritable, s\\u2019\\u00e9treignant toujours et se promenant \\u00e7\\u00e0 et l\\u00e0 en boitant, comme s\\u2019il n\\u2019e\\u00fbt pas cess\\u00e9 un instant, toute la nuit, de s\\u2019\\u00e9treindre et de se promener en m\\u2019attendant. \\u00c0 coup s\\u00fbr, il avait terriblement froid, et je m\\u2019attendais presque \\u00e0 le voir tomb\\u00e9 inanim\\u00e9 et mourir de froid \\u00e0 mes pieds. Ses yeux annon\\u00e7aient aussi une faim si \\u00e9pouvantable que, quand je lui tendis la lime, je crois qu\\u2019il e\\u00fbt essay\\u00e9 de la manger, s\\u2019il n\\u2019e\\u00fbt aper\\u00e7u mon paquet. Cette fois, il ne me mit pas la t\\u00eate en bas, et me laissa tranquillement sur mes jambes, pendant que j\\u2019ouvrais le paquet et que je vidais mes poches.

\\u00ab\\u00a0Qu\\u2019y a-t-il dans cette bouteille\\u00a0? dit-il.

\\u2014 De l\\u2019eau-de-vie,\\u00a0\\u00bb r\\u00e9pondis-je.

Il avait d\\u00e9j\\u00e0 englouti une grande partie du hachis de la mani\\u00e8re la plus singuli\\u00e8re, plut\\u00f4t comme un homme qui a une h\\u00e2te extr\\u00eame de mettre quelque chose en s\\u00fbret\\u00e9, que comme un homme qui mange\\u00a0; mais il s\\u2019arr\\u00eata un moment pour boire un peu de liqueur. Pendant tout ce temps, il tremblait avec une telle violence, qu\\u2019il avait toute la peine du monde \\u00e0 ne pas briser entre ses dents le goulot de la bouteille.

\\u00ab\\u00a0Je crois que vous avez la fi\\u00e8vre, dis-je.

\\u2014 Tu pourrais bien avoir raison, mon gar\\u00e7on, r\\u00e9pondit-il.

\\u2014 Il ne fait pas bon ici, repris-je, vous avez dormi dans les marais, ils donnent la fi\\u00e8vre et des rhumatismes.

\\u2014 Je vais toujours manger mon d\\u00e9jeuner, dit-il, avant qu\\u2019on ne me mette \\u00e0 mort. J\\u2019en ferais autant, quand m\\u00eame je serais certain d\\u2019\\u00eatre repris et ramen\\u00e9 l\\u00e0-bas, aux pontons, apr\\u00e8s avoir mang\\u00e9\\u00a0; et je te parie que j\\u2019avalerai jusqu\\u2019au dernier morceau.\\u00a0\\u00bb

Il mangeait du hachis, du pain, du fromage et du p\\u00e2t\\u00e9, tout \\u00e0 la fois\\u00a0: jetant dans le brouillard qui nous entourait des yeux inquiets, et souvent arr\\u00eatant, oui, arr\\u00eatant jusqu\\u2019au jeu des m\\u00e2choires pour \\u00e9couter. Le moindre bruit, r\\u00e9el ou imaginaire, le murmure de l\\u2019eau, ou la respiration d\\u2019un animal le faisait soudain tressaillir, et il me disait tout \\u00e0 coup\\u00a0:

\\u00ab\\u00a0Tu ne me trahis pas, petit diable\\u00a0?\\u2026 Tu n\\u2019as amen\\u00e9 personne avec toi\\u00a0?

\\u2014 Non, monsieur\\u00a0!\\u2026 non\\u00a0!

\\u2014 Tu n\\u2019as dit \\u00e0 personne de te suivre\\u00a0?

\\u2014 Non\\u00a0!

\\u2014 Bien\\u00a0! disait-il, je te crois. Tu serais un fier limier, en v\\u00e9rit\\u00e9, si \\u00e0 ton \\u00e2ge tu aidais d\\u00e9j\\u00e0 \\u00e0 faire prendre une pauvre vermine comme moi, pr\\u00e8s de la mort, et traqu\\u00e9e de tous c\\u00f4t\\u00e9s, comme je le suis.\\u00a0\\u00bb

Il se fit dans sa gorge un bruit assez semblable \\u00e0 celui d\\u2019une pendule qui va sonner, puis il passa sa manche de toile grossi\\u00e8re sur ses yeux.

Touch\\u00e9 de sa d\\u00e9solation, et voyant qu\\u2019il revenait toujours au p\\u00e2t\\u00e9 de pr\\u00e9f\\u00e9rence, je m\\u2019enhardis assez pour lui dire\\u00a0:

\\u00ab\\u00a0Je suis bien aise que vous le trouviez bon.

\\u2014 Est-ce toi qui as parl\\u00e9\\u00a0?

\\u2014 Je dis que je suis bien aise que vous le trouviez bon.

\\u2014 Merci, mon gar\\u00e7on, je le trouve excellent.\\u00a0\\u00bb

Je m\\u2019\\u00e9tais souvent amus\\u00e9 \\u00e0 regarder manger un gros chien que nous avions \\u00e0 la maison, et je remarquai qu\\u2019il y avait une similitude frappante dans la mani\\u00e8re de manger de ce chien et celle de cet homme. Il donnait des coups de dent secs comme le chien\\u00a0; il avalait, ou plut\\u00f4t il happait d\\u2019\\u00e9normes bouch\\u00e9es, trop t\\u00f4t et trop vite, et regardait de c\\u00f4t\\u00e9 et d\\u2019autres en mangeant, comme s\\u2019il e\\u00fbt craint que, de toutes les directions, on ne v\\u00eent lui enlever son p\\u00e2t\\u00e9. Il \\u00e9tait cependant trop pr\\u00e9occup\\u00e9 pour en bien appr\\u00e9cier le m\\u00e9rite, et je pensais que si quelqu\\u2019un avait voulu partager son d\\u00eener, il se f\\u00fbt jet\\u00e9 sur ce quelqu\\u2019un pour lui donner un coup de dent, tout comme aurait pu le faire le chien, en pareille circonstance.

\\u00ab\\u00a0Je crains bien que vous ne lui laissiez rien, dis-je timidement, apr\\u00e8s un silence pendant lequel j\\u2019avais h\\u00e9sit\\u00e9 \\u00e0 faire cette observation\\u00a0: il n\\u2019en reste plus \\u00e0 l\\u2019endroit o\\u00f9 j\\u2019ai pris celui-ci.

\\u2014 Lui en laisser\\u00a0?\\u2026 \\u00c0 qui\\u00a0?\\u2026 dit mon ami, en s\\u2019arr\\u00eatant sur un morceau de cro\\u00fbte.

\\u2014 Au jeune homme. \\u00c0 celui dont vous m\\u2019avez parl\\u00e9. \\u00c0 celui qui se cache avec vous.

\\u2014 Ah\\u00a0! ah\\u00a0! reprit-il avec quelque chose comme un \\u00e9clat de rire\\u00a0; lui\\u00a0!\\u2026 oui\\u00a0!\\u2026 oui\\u00a0!\\u2026 Il n\\u2019a pas besoin de vivres.

\\u2014 Il semblait pourtant en avoir besoin,\\u00a0\\u00bb dis-je.

L\\u2019homme cessa de manger et me regarda d\\u2019un air surpris.

\\u00ab\\u00a0Il t\\u2019a sembl\\u00e9\\u00a0?\\u2026 Quand\\u00a0?\\u2026

\\u2014 Tout \\u00e0 l\\u2019heure.

\\u2014 O\\u00f9 cela\\u00a0?

\\u2014 L\\u00e0-bas\\u00a0!\\u2026 dis-je, en indiquant du doigt\\u00a0; l\\u00e0-bas, o\\u00f9 je l\\u2019ai trouv\\u00e9 endormi\\u00a0; je l\\u2019avais pris pour vous.\\u00a0\\u00bb

Il me prit au collet et me regarda d\\u2019une mani\\u00e8re telle, que je commen\\u00e7ai \\u00e0 croire qu\\u2019il \\u00e9tait revenu \\u00e0 sa premi\\u00e8re id\\u00e9e de me couper la gorge.

\\u00ab\\u00a0Il \\u00e9tait habill\\u00e9 tout comme vous, seulement, il avait un chapeau, dis-je en tremblant, et\\u2026 et\\u2026 (j\\u2019\\u00e9tais tr\\u00e8s-embarrass\\u00e9 pour lui dire ceci) et\\u2026 il avait les m\\u00eames raisons que vous pour m\\u2019emprunter une lime. N\\u2019avez-vous pas entendu le canon hier soir\\u00a0?

\\u2014 Alors on a tir\\u00e9\\u00a0! se dit-il \\u00e0 lui-m\\u00eame.

\\u2014 Je m\\u2019\\u00e9tonne que vous ne le sachiez pas, repris-je, car nous l\\u2019avons entendu de notre maison, qui est plus \\u00e9loign\\u00e9e que cet endroit\\u00a0; et, de plus, nous \\u00e9tions enferm\\u00e9s.

\\u2014 C\\u2019est que, dit-il, quand un homme est dans ma position, avec la t\\u00eate vide et l\\u2019estomac creux, \\u00e0 moiti\\u00e9 mort de froid et de faim, il n\\u2019entend pendant toute la nuit que le bruit du canon et des voix qui l\\u2019appellent\\u2026 \\u00c9coute\\u00a0! Il voit des soldats avec leurs habits rouges, \\u00e9clair\\u00e9s par les torches, qui s\\u2019avancent et vont l\\u2019entourer\\u00a0; il entend appeler son num\\u00e9ro, il entend r\\u00e9sonner les mousquets, il entend le commandement\\u00a0: en joue\\u00a0!\\u2026 Il entend tout cela, et il n\\u2019y a rien. Oui\\u2026 je les ai vus me poursuivre une partie de la nuit, s\\u2019avancer en ordre, ces damn\\u00e9s, en pi\\u00e9tinant, pi\\u00e9tinant\\u2026 j\\u2019en ai vu cent\\u2026 et comme ils tiraient\\u00a0!\\u2026 Oui, j\\u2019ai vu le brouillard se dissiper au canon, et, comme par enchantement, faire place au jour\\u00a0!\\u2026 Mais cet homme\\u00a0; il avait dit tout le reste comme s\\u2019il e\\u00fbt oubli\\u00e9 ma r\\u00e9ponse\\u00a0; as-tu remarqu\\u00e9 quelque chose de particulier en lui\\u00a0?

\\u2014 Il avait la face meurtrie, dis-je, en me souvenant que j\\u2019avais remarqu\\u00e9 cette particularit\\u00e9.

\\u2014 Ici, n\\u2019est-ce pas\\u00a0? s\\u2019\\u00e9cria l\\u2019homme, en frappant sa joue gauche, sans mis\\u00e9ricorde, avec le plat de la main.

\\u2014 Oui\\u2026 l\\u00e0\\u00a0!

\\u2014 O\\u00f9 est-il\\u00a0?\\u00a0\\u00bb

En disant ces mots, il d\\u00e9posa dans la poche de sa jaquette grise le peu de nourriture qui restait.

\\u00ab\\u00a0Montre-moi le chemin qu\\u2019il a pris, je le tuerai comme un chien\\u00a0! Maudit fer, qui m\\u2019emp\\u00eache de marcher\\u00a0! Passe-moi la lime, mon gar\\u00e7on.\\u00a0\\u00bb

Je lui indiquai la direction que l\\u2019autre avait prise, \\u00e0 travers le brouillard. Il regarda un instant, puis il s\\u2019assit sur le bord de l\\u2019herbe mouill\\u00e9e et commen\\u00e7a \\u00e0 limer le fer de sa jambe, comme un fou, sans s\\u2019inqui\\u00e9ter de moi, ni de sa jambe, qui avait une ancienne blessure qui saignait et qu\\u2019il traitait aussi brutalement que si elle e\\u00fbt \\u00e9t\\u00e9 aussi d\\u00e9pourvue de sensibilit\\u00e9 qu\\u2019une lime. Je recommen\\u00e7ais \\u00e0 avoir peur de lui, maintenant que je le voyais s\\u2019animer de cette fa\\u00e7on\\u00a0; de plus j\\u2019\\u00e9tais effray\\u00e9 de rester aussi longtemps dehors de la maison. Je lui dis donc qu\\u2019il me fallait partir\\u00a0; mais il n\\u2019y fit pas attention, et je pensai que ce que j\\u2019avais de mieux \\u00e0 faire \\u00e9tait de m\\u2019\\u00e9loigner. La derni\\u00e8re fois que je le vis, il avait toujours la t\\u00eate pench\\u00e9e sur son genou, il limait toujours ses fers et murmurait de temps \\u00e0 autre quelque impr\\u00e9cation d\\u2019impatience contre ses fers ou contre sa jambe. La derni\\u00e8re fois que je l\\u2019entendis, je m\\u2019arr\\u00eatai dans le brouillard pour \\u00e9couter et j\\u2019entendis le bruit de la lime qui allait toujours.

\"}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"cfae7023-25bb-4186-8203-f733194dad98\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 69, + "fields": { + "body": "[{\"id\": \"9300139d-69fa-468e-bf4e-0764cea9bf5b\", \"type\": \"paragraph\", \"value\": \"

Cette page restera en brouillon

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + }, + { + "model": "content_manager.contentpage", + "pk": 70, + "fields": { + "body": "[{\"id\": \"24a5023b-a062-497c-8cf2-724b8706c4f0\", \"type\": \"paragraph\", \"value\": \"

Page vide.

\"}]", + "header_with_title": false, + "header_image": null, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": "[]", + "header_cta_label": null, + "header_cta_link": null, + "source_url": null + } + } +] diff --git a/content_manager/management/commands/import_templates.py b/content_manager/management/commands/export_templates.py similarity index 53% rename from content_manager/management/commands/import_templates.py rename to content_manager/management/commands/export_templates.py index 34b0953f..751bf2c2 100644 --- a/content_manager/management/commands/import_templates.py +++ b/content_manager/management/commands/export_templates.py @@ -1,6 +1,6 @@ from django.core.management.base import BaseCommand -from content_manager.services.import_export import ImportExportPage +from content_manager.services.import_export import ImportExportImage, ImportExportPage SOURCE_URL = "https://sites-faciles.beta.numerique.gouv.fr/" @@ -8,12 +8,16 @@ class Command(BaseCommand): def handle(self, *args, **kwargs): """ - Import template pages + Export template pages """ page_ids = ["32", "37"] + image_ids = [] + for page_id in page_ids: page = ImportExportPage(SOURCE_URL, page_id) - # pprint(page.source_body) - print(page.image_ids) + image_ids += page.image_ids + + image_exporter = ImportExportImage(SOURCE_URL, image_ids) + image_exporter.download_images() diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py index fa32bfaf..5c68bd2d 100644 --- a/content_manager/services/import_export.py +++ b/content_manager/services/import_export.py @@ -1,15 +1,23 @@ +import json +import os +from urllib.request import urlretrieve + import requests +from django.conf import settings +from wagtail.images.models import Image + +IMAGES_FOLDER = settings.BASE_DIR / "static/template_images" class ImportExportPage: """ - Generic class for data import/export a ContentPage from a wagtail instance + Generic class for import/export of a ContentPage from a wagtail instance """ def __init__(self, source_site, source_page_id) -> None: self.source_site = source_site self.source_page_id = source_page_id - self.source_content = self.get_content_from_source() + self.source_content = self.get_content_from_source_page() self.source_body = remove_block_ids(self.source_content["body"]) @@ -21,7 +29,7 @@ def __init__(self, source_site, source_page_id) -> None: def source_page_api_url(self): return f"{self.source_site}api/v2/pages/{self.source_page_id}/" - def get_content_from_source(self): + def get_content_from_source_page(self): response = requests.get(self.source_page_api_url) return response.json() @@ -54,6 +62,64 @@ def locate_image_ids(self, json_object): self.locate_image_ids(item) +class ImportExportImage: + """ + Generic class for import/export of an Image from a wagtail instance + """ + + def __init__(self, source_site, image_ids) -> None: + self.image_ids = set(image_ids) + self.source_site = source_site + + # Create the folder for the files if it doesn't exist + os.makedirs(IMAGES_FOLDER, exist_ok=True) + + self.image_data = self.get_image_data() + + @property + def image_data_file(self): + return IMAGES_FOLDER / "image_data.json" + + def get_image_data(self) -> dict: + if os.path.isfile(self.image_data_file): + with open(self.image_data_file, "r") as json_file: + image_data = json.load(json_file) + else: + image_data = {} + + return image_data + + def source_image_api_url(self, image_id: int) -> str: + return f"{self.source_site}api/v2/images/{image_id}/" + + def get_content_from_source_image(self, image_id: int) -> dict: + response = requests.get(self.source_image_api_url(image_id)) + return response.json() + + def download_images(self) -> None: + for i in self.image_ids: + i = str(i) + image = self.get_content_from_source_image(i) + + if i not in self.image_data: + self.image_data[i] = {} + self.image_data[i]["meta"] = image["meta"] + + image_url = image["meta"]["download_url"] + image_name = image_url.split("?")[0].split("/")[-1] + + # No need to export the pictograms, as they should already be present + if "Pictogrammes_DSFR" in image_name: + pictogram_title = image_name.replace("__", " — ").replace("_", " ") + pictogram = Image.objects.filter(title=pictogram_title).first() + self.image_data[i]["local_id"] = pictogram.id + else: + urlretrieve(image_url, IMAGES_FOLDER / image_name) + + with open(self.image_data_file, "w") as json_file: + json.dump(self.image_data, json_file, indent=2) + + def remove_block_ids(json_object): """ Parse a page JSON representation and strip the block IDs diff --git a/static/template_images/Home.original.png b/static/template_images/Home.original.png new file mode 100644 index 0000000000000000000000000000000000000000..9624ff666c884fa24779e4cb63ac56a57c788ada GIT binary patch literal 92450 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]fQ9sAB=Bz>n(N<*cD{PECG+A<|G)d1)ACN z+^8PU*l?`wqkp$ru;I9nUrlc>B*Y47cz8k_4dkzZDR53U^|5RGce8<*E23h3IKj*J z2rw=tN|xoVhnkF2xU!|@D$KpKBxh1Z+K~w`S-@a0b&_1I;md7oOfNs$-Su}8=g*p& z`r}c4qk~yp$*su{$5}p7YRxb>11bD=0?Zn`c$~Lu{?pD!`2hFJR!vGu<~m*ClwdYA zzBd30T6XrC6&B3#o&s`h7&@bC`vvMdI<{Ow59MI?di*u%w?>{(*UUsX^mQpZhA3%dQy?eos~rpi}%^o=NT>@v-h@la{$- zFv2Yk0WUEpB23v`P>$C7Filr0RYmnAm)~VPuJg?+Ees<;L(^%X+AjL168i@wLq)Ms zwjEPbQvf+tnYx3^=$kR4#OM45$7?q}4(~A>(9%C%_AbF9sstuupDs<8St7Jb{LrnC z!l!nAcohtO3TK28p~8t!>C|U7Hfo{f7O)hR)MpL`1}g+w@?b2#nwgratS^wei2{;t zcbCeBa&dDh^cKxGnH#-t2(%n_^mQm$OP9GlFAX+81hl}TPeUBmnGC%gN=SHHpNlrp z!+`ePBR~y~SbGgzYG9@7M>#J>0?4 z>D7}E1GZD~qk&3LGP<4T5oS-xmz=2RLK9@sgAj7%M4J_+r7Ny+nz5hNYP;|}vracGrJt~@_h)Ale~G;y zGAbXm|BI0bFx{GqD)j5qb;#m==FSw|2+eY{CS~UqG{P9aZp<3Wl}7;acy$n8%1Dn9 zVpIQ?QUoJy0P3JU89FBqV0R zRNUh?QAq}!V2VOj0J7@w2-~)z{v+4Qe(vq}`j5)o%AVOjDb=Ux^L1`sTvA>R3J;(D z{(=A!?m<|1G9Osi8NRhltUBWS{QYjmbD~O1v#IGBgS8xxAaLzpd0vfv8R>Rm*VR>U z&p?e^hx0Y(|GK|cV$Kqp<>!~$PgvXB{7hZ_QTZ6}9=chQg!Bo`HvmbcZccIba7>w7 zq*P_82%)$9X-U9ArP6)F;LzsUjI7&#_z~Y1ZAT&!5uF%ai^g1YgX>i@Qd;tS={o+dqv2UXLV1BFC$s2+Vu1|I|}xqmz>A4W%i{HY!)>%~A~gI^&bl z6{QnHOD-E3E4)b@d}~5}t0m}XvCwUY;{E{-BaL1f9pUeVtaaSs=IP?GUE4xVIJdaI zeyjGbqATrZ8>|kG8jeL@p$;ioR~M3jJhjRx<@%7ddY>U2)NOmmsC`z7Krlr-ys|G` zkGsn-ob%m`B;_6-klNbAY37^kL}xf5om=}oCr_eJtLpl#VR9`VUm%A2i65=^-EaH( z@vk~KPzU(|{d z2LXiF(VBaAex&(DqB3*xc>Ch;C1;Om8OMnU0*Lp*Y1F?F0*Xx=&~0Xt*{0$3TYP(# z7Uks3-D8U><5je@wqr*GEH3f;D_Yvv-5y*V8NgQ8XqyoE;HksP1!dqQ$$tb5duD2bB=6)?{(m`AI2OgBCV9sO*QG)iu!ZHCw3jzF7jz!_QZ+rU>r?cLpf7K`{h3w#@ zq(qFO0-kU3eeAOEtLlx9=+~s`$Tmk0T}f)fdq!pJ<`a6DMBvHCw~f`r^XDJ~KjA;9E|aDl2Y z`9)hfDXH~!F*i3tejc8i{>}M-Me*|W8<%5CEnrc*d;T+y8Ew{r?7oTJZK@hrUQT#t zH#$4#ePwAjw4Z%8H}|(q(^Kb1pH|N3n$bN4E(M^XYPRli@B;h7)HB!5py>o}yzKi= z3Tgav<5DVS@Sd!&vX_@*caFKc8zFc;P|_FB`MOImC8dnMeq5DjtulwY$(_sZENs6q zSLg4~cV!%Urrxsh z^hB5Kms!@@3oW;|*)6sNodHz5)IMERN(xFwp}?W8#Q0n|5p66O4i5u@WPRRW*g*A; z;Bdy~lBxp_p89TayvCDg4-eJ)B(MjbRw~Ht`_)GO@*zlv-?+8fRq`I5BRYEep&+`~ z?HwHvH=U3Z-vTIUw2E$wV?1qElL?9ZBR^WJab{$SMubnRDff8W+b0a6Q+l&@_cH71 zXE7@yQ#|Z}?(W(59!Dl53@|(aVb4Xk0JCxl7!jU!9vb80(>X~6x=iS~k$k<`Zx{jd zD&xr4!e~g8_-QyEyH$aS)`?;CZ$_r43mc(lpL!i7gZ#fJ$MOqZQvuPy=S5F1Y8lCL zZE1zP1A5!eNhq+@=iThwHhyIXVt#A#Ulz&w2HrZ$qReMqdcgnz3M(4l(!a zlCoQ!xvNkrddvrxAEnA*r(e9r$URzI#QPM0wzFMZ9&V3R+T5ar6(1Z(5&QdtZ?M%%?z7 zBh$KHO-mwfrJB{w)ST}PB7MRY?Sg)={+b7h0T&u&ZqS)L1&1N2ASBCRx zxEB`(r={BQYt@3+tg=tn4s*mJgsZkEUfn9E7|zvnNgpY4usUNO zU!f@Bf^HE*3Xl|-({ALRs4&QBCSO=%s z$K{9LDGqyy5z(&#NwJFNPNa|+#$ydmGo2KNjT3m|P4FLr2>boa(LD|;Y zT=ov8jJ!%}^4M{Pq3HVk9(K<0ED8^^Ac?Iaik~b@mAdKabesF@_36$2J$GZ1k<9Sk zvk=l#m+nR^3bWyudKq2rJjaG=HXNH*!@czPk9K|>A1l0`T$I_Go5nESGF*R%lGqz1 zasqLNd*yGa@9vQ7Td~fma zZ02GT=;QPCKeR9K55-=r9>4Iszwb8rfSCdf6|YIZspGeaBu78s9~1 zrk>v!^IgDc5skHX1nW$=W~!EtN2T`l1z~Ed<)XR$)%3k4cE=yeP=aJzsU4qKHJn>U zwk;%79TbgQcV;Fk3LvyF0}kfqu2##_u|F5?9YQ(GCtWl9iPgFF$+I&}4aP*q#|>-O zl`||3fuC6S;$>Fx%)v>rjuDzrK=F;x&Iu&Y){!8Vn%YS>2Thp~K+ecjdiNh8>x=L}1EkEP`d(870 zqi@94tQNj^X>cJ&YuraLrhS9MipOK1j(^HZx+%MFS@o}sONXVkv>-heRarOFxjh~( z4Rzs2Vxmn;P=041B>P8HCoC#PPb)6N$~_?wp{lRHwr<2gZdBdetjb-Upv@>s-&Wv& z(|VaR{pgXAUd>2sNm2dYTJ(`7KJoC)+=V55FBsFoPX@P*Ue2n6EuE$9%F1#JEVQ8e zBg4mjkBCsienk22NJ+?Ds)VBd2LJU3sxZfl%=oC*AH-cO#%5Xz*8pRrwzgmWOK@b=Z89>&+9&*R zFC$m%hx++EZ{r+2al=rv?Ufsw8>AYz07ZO-VXZrg&SFMl%WUdgHJSECh;GVD?#TOl zE<{_0-b@r1O#@gb;{N;44c;ZWT7P} z%iiG%#VmdB0uZ07-FebA9~q}tU$C3sS^$VQjiHRk_nAP?*4pgTu}%!wKyM_+xK<^v z6f|B@SXgOuK)nPr!va%Rmjw#>qIFM(+)WWg`dwJ*I~rh-0^c7X zc7(&5aJxNRrQ6}ob)ZLP|B+#5#h~e&H#^>@A!Jab$RmE zfhi4Oq5_>Za2qYo;+<#_m8aQQts{No9k)9!u4qyfCQWB)bzd~JGB>5`YvDq-C=PE( zfBkEN%gE`T7go?zoSpvU3?j7EUMOv9s*PGnL3`rUnA({w4FZA|&nHMm1be43B?2CG z=^O8BDo9kr(XG>SAF)>c9c>vuVM}OH1e6o8NYxIs&G@j%&$z70+_c1Q9a!&#{d-;K z33Fwa?t2ge!;=$kZg&5e$pB%v7U$a8Dy@si}RjH@|gh+()JW(hK%Bd>D2GOLU zjU_z!do5n{cM+TGdko5jms=|;w0X?Wj5xM3Ae%HH8n1-P2>zoNr0JQga79rb9uEOC zt+-2nz*!C@vG1%SX2$XIx5v-Cy#BW-uO3smy~DjrwMTWAS|&ZVm+Rf?anR~9>$5<0 zqE4<>c+-G>D#-XBT}q8ZqMnu)*xUzW!uR2&Je|sCp>Hqz%=IYw#bK^0@E!^bd#p`4 zn`pcvBP5FVgm1?929m}%O=YF1&b$SrN4K64?_S2nrcPnO8N!sUntFjB7>!xW%anlh zr{4sI4XTv?RTb#Crm4@-^~f%{PW6J1^>6l?d<}B~ko~v!a)Z-FS4%m>6SpZLcb!g0 zISDi#2rz~LjMXzF8Xy25Yzkn3*RP)edRO5x%l(j*2(M);ip&dmM{0m}>K)z#tJhZq5)qkKJaN!V9v zF4COL)&%LLm|o}wvoi)eCu-aKYT;;FDL)%$7xZ#F?Nn|vbM2Amqh^_+bU%Op!SV6b zPoJ3cbYj6Rgu9k>wY46LI9z1&)Ke3a;1m_3>W;x*g#+WYh4Z~F@ZRooX8<2iJ_%09 zb7=gf?zrL-1hFp=zZ5x{nX<@gpxg?=072jm!k+}Ks0h)+;qWMUerME+P9rCgXq(6J zRyjuUiwpNm`nqN1;se+*n@bnLo`p{?@^}lQ?b8({k9Np5H#XQgIKXKpNA6Y&0l}4? z^vJZjI%eU-4#7qRbO1ce%}r)|M<*UZiNlm3jZM}LA>Om6NBDCw<6N^dBeS+M>?|zJ zyB;<+N!DW(pEfoeXXoZLBFjt^W_-?oV+frNWPMj|*w7#M+4f2gtCGBwu8tD(E?PPp za)?I8X{s1=b*mq$=Rdj{6zo^{`t|GSxxNkzI&b`rqVB4cKZV3O@=E=j+d?5yQ|EG}xcG zP>}V{Q-vMVn(6uZy_1_;TiNC1>gML=LpoZS{TJ4vEX$0+(9a7_-^orBFzwCPHXW{V zYV-eTErh<0!KP z#2L+KtHYJPt^ds_J0>jp*3k{l`R@#ne?FX;P;;Yk0!YyDQC(5_xw%%LbeS{551v-d(M_5k|HimF~kc4lcsLt7!h9Y4NmHg+xtE?j0o*|rQo9Gu4UX>Vf$ zrdKO3n1ee$<zEgT@$n_wPPuSdzg&?W)jS z)5wmIj*m50brUII`@hdEc5|}-l%**hzw8!XX=|vlTF;c|L<#KHf?E)SzwW=BpN-O9 zmWTBR!}~Jk4vzseW-t&trlZ9`0J(kINg7Y-gJ)3BRe{2pYASSd>txqz4J;22HH`oL zQul9b6F8GY`DK=00zNySGA(VS>RN9vKLjVd|NFAvUtiX#qmNzN0`Gek{5fM(39b`V z?O9h3<&{{@w*U4)C@ZT`b6xA`MpEI?8vwOSC{bkL%Nd7xaM1&FquF>>Y#AF;$O`Zw0B2y%-v4m|-jMfA zl1J;x8$CxaO@^?QI5hn@5Mny{)id^a@phC5(DmofBem!WAYp$6>}p)RsA_Q{hk6xE z-%GF0RXCA`_#8B=;*S#k+klSt=O-m1`r`zk#-^&`Adxix_Y!R3H;;oQk1G3HC|j5N z1O!ud{MDDH)z)KgQT6)ZEYsRq2sp=W3#Dzd#ckH} zW#F1A`RO%D>8W|LNE9>iByk6ZHpJF>nqMmrhdG<30Jt1!b|M? z5J8CO8f)DQiQQhxes znLxU_GK*e=@D!Y;g=FGjTQZGPJLMub6FG&M!F91I1OWj7Fwkzw*YD@m<&mFC_Bz8_|Dx#TE+Y%KB$S9s`DLTPPLe=IQROvhF| zccOKxmhweME5ZGoCgilt&35bK7~XZnme;4v&2>juEq(jsucoK>Rp~rr?CR;-(y7IL znO^&?Ny;wTcLw;TR*47+uabiss^TAY5=FPqiC%%&_Mhl62vy|LFw5@IVf}-$GHFMg z)|$TEDkic~409_#ha=a3C-?sKoAr`6<%tQ21_mjED?J*tCT828>P?s_SbbnMomthX z)KRJ&ue2*CXt4TgNab}zv+S08(e+iY$~f-Wzrf6r5L@kbnih}PDR@sZJ#%o#JnIwU zxm6N!*2lW6)G;f^@_wU%i_%K}bXzDkk)vExT^l{qf$NTJ4Npx;5vaKi343^aPy*4o z47B4#MSnk?F;*7gw{guV}0D|2k`s{li{(c9SZrqT;@u&6!V}-a;q2gIvE=Rn@e%gQ2|e zW?*1I__A3B^leuM-`PP8Yv*7mZS_03QRO06msivaEz=%CZ?HXAUi9o-9O>QrT6Tzl zf1jHbp0zjry1L4E@lz1{*t=KSAc}f6KJD$$uS=W;Eu4j&ry252`$AY86oi9c7p3{Y zD$5nE+SQe~=3<`#&b1sW6Z#4J@!#wqncbW)^sR$LQJhc!2oGnyWZLd7Q~)@9gX-Lh zw8d^>!k8LY#W5>&2fyV~$})85*QUE}WwPm6CTbVsNx}0eBwYN_R`=LVs~;YOr5V`X zKisa$Buma~WlYr6#`X1)v2$RP*VZ1A^BcsT@({@MXTRdjO~e(#T$AhCIy%=uDMoj& zB^8WY9EfttK6?CKE;#GAY?vRSCF!j$ZLuQFOMDQJ^MRcqT_LUE_%dQt&WCkj1}Pb1 zz37S=)fE&ntEz5$zO*jC7mZxLt6B1VWWM@lQh~=yGfO5{^5D0Zcx7cjDh%9~wvzcK zrucTrUKrT*4?alNspzdT(7$Q8diEeFP4IcLetBl#iXoY54vJ{ppMCI1b`6v{+mz+i; z@iC?B>;%sCjB4k)QxkfDYd3jNh z?&jtys_wA1!YLqN4W?2A`$#d9#W7H@>qlbYnIqL@qc1?k^BVi9?X|`F;bVo>8-?ei zE}Yg+RA@_!f{0y;qHJ&illsBp@0qMp$JaFzqG~!i1~3#9s`m_m2!C0(RpInJ+QzB| zUu);j-a~jZTw-H+zVB}KW9y5ntCIMiWX)_hf3OAWkwXiRSbwDivv~fmT-@BH?0T;o z3&F4b@2()Gn-*IcIn-c-9-zFhR$O~Fo&A0-vFgrbw!)e|X)u?NRWu=@MS`xRzVll& zv9^KTiBAGCco%;+Mj!{yit1ZlB+fx^V|bv3syr7&Fd!fgR65TtZDLgxOX~z9 z(+D{x{egckqbuq9A!s+@uRhYJ49ELc7C>PZS*=!>Hz@2fqgFynYPtstBbE6lr#>UQVOPo)q>-CL=fmn66vPtE<}@=FF&F0t5rVh#egI7?hJQFy9?arpZcb<&W!YkcpM zio6Y%`^LsTt-j23(izOvbQ0E-6HyVegukSsroLklZb4C-jd^WKx&I}ZvT1JC*layY zV6E1TEg#dL+n0x`QkIt9QMetG_~iOOefZ3r)sF7S2F>rb|2t^SZT0E(f1WvQTB349 zZ8-TfH8|v*S|^6yt?EAYXg)tpeM#Q1^^IZP)yZcx4NcM~v!LNJkLGzR=`V1YnpG_S z&Ac2-7y_rsq0!mF_fR?&VdF!qtgD9mB#4g+pVn&dn-Y^>n6WWoE>b9mT(ldHXzcy# zX|IWbP@^NzR+DQ>n-k3OoFaxAdxHgTpz{s)q1=9I2g}*Li&{-u1}c9Q$EEn(vuM;} z9ou{@sM)@WT2{&n*O-5d+%Nw*}4TV*pzH9ITZ>RZ--J{P<+ysIShqNR`Y$qhP)x3n2_%4*rosCl%? z$R>Mtw4b(pijsVNb?-MVq>f zlzA%ntQ6S1-#d7;ZlP#rh)W*N%1ykU3+5@N+~)n(YW)Z5GZk%r;m|oS$xwOXIdO4( zL#qHl7$o+8MNH*Z>VeK4{8*9lJO_Z6CL(Ctv#Qa|ogS_5I#|A3S}0!2=f2$FU_slw zWjV@nd__n6@Q;jiYF{Wz-q7lm>^FIyTM@zZqNZ=k2*_D-6TPvCInDk|Kb+24-#Eq> z1DfA^QpAMK7S<~vfB|$xke+)8ce#S~bGYk3mA=!8>sHbGs0v^@B0Bn0SN!lD?hjF! z_fdm`WvJpl(^};#WD2d_iJNXD8-oQ@mg{pbjpmk1GG|1c%-a_`UaU}*xCgbOA98Vy zC)d=F=KL6%wMU^W;@R2JN>zysUqVnx;^`nmd<9e*4af2DzJ;o+lSXn#E&0mUuhdqwV>|+0kYZ2rw70{#=bT` zzi?|s+`OzaNVkCFDttES@O?17yLP}x+F_}@HruZ7S!ypu99Z~zCk4JP|#VWyR ze@I89O9(Bg-|V(?PEJQw)8?KOh^g9jgMD#0m|{>Hz0~4jvNbo73kaWc14AESPMfh8 zwXZ7Aetri9b!FeQX+cr{Y0*@f;~KF70W$U0%DKkG*6%9Iod^N-xj2C>8Y}^*Bl7Z(Az)^bvu;K?rhw@= zeZOA>%5sOBuxz`ZOvZBht>U5r-ytIlcTYCJXiU8q9rx$6_f(7#xhNC@Q-4&)R(=W0 zj<)W4s>rH@%lLn!dI35+`DxCa^-XS0k2*Tpmg0)Lw&WxedSCdnJC2 zH0R&Bi68C5EhRNIA@F$b7WGCrY&`m@fe3QT$_n-ZHzlaHlg>m-LOzmii+O|nyvLgRa<0UC{F%hwu;*>Up+ z=Yv^Ucf3@@Gw0@%1_u*WJv`zmg(`HEBBQKhkli;5)nITa3XPTz>$UzfQpC^??@=oK zIGW+2v$=e;#1tRt!yW&OM2GjjhQ)S3vS(!r!*5VltW+#x%M!%AEkWm%+yhak*mfR%lrJkY1ti~bZ~ATE;v(~2#VmNWpT7)) zDGazyl0bq_LZVP_28(RBHmpS9UQA-=2=P6@0bwxg1p21)KrS3bw3q;JnZ*U880didWxRBXZRM53c^hwmRmF7Laa=kg0QKzsdI)HLbg62DS*U#XNBy*sLk za@{H|>bBVr)6%Pl8gdxF(z;%D0xa=qfFIzW52oIAgO|)JKv@864R}vt#-05e_8hRc zx?NboV};nncVF_Vb_E6p5<(+%I;KW;0EzJxv2EZ06Zi@lb?Np8+Q6+ALw^-YVIR-{ z;Qw@x6rMZ(+7PCm^v=>J!K}jVm#^UF27sNL*=GHD_QL94hesI8pMbx$bLQp=Wr;C0 z5z^MiULEeMKrKqR)}CKZzIg5|v&Z4OL{9NmQ7bVF=EMZk)ri4|@Tbmv6HJV)StsIsF~D^p_~};q|?sZ(RwJbad#I1IO3* zRQaEWyY+*k0w9inaYIS!7jBUrn4Vg-8)#vn7armA6uUnJ!>5xYEALOOJ51H%cK*S= z2b>|a$1<-$%nVT4T6bkFM9@W3)A{d>C2lK~C4e8qM!uD1h9-9bg&J!b0Mo0p!)$^@ z$}H7ufk<{0lc^rAa~E}9%^bAai=3>>!-6n%=; zEwWKx9txl@1E9-<+I*B40}>}~y!xo8!b0QdOY&pnVXa-S>iU!fFIYIqDGR3_8Qz6_OO!!AH`YoqSh}z;N;Oh4#oX2umR9y|BhzK!FPE{dx0@GYDPX956qH*XladrJ9v0 zb-H`Khb9r7NkP|eK{==uReo9+h{MwSBa`vxt}$&1n2}`k%VBYmjjpf?s`hu*L=B%$ z+RmI`(E01UrMjwWrk=-UUj%b*Yxosscfcz|k=IICj0nB~bHRW|43P{(AvXY^FJEMQ zbyB9x)YUb>;00uDv!c3+Fjuo8+kmhmUU1&B0}y4m)e3X{0ae(0Up(u_VfBl(C|O0Q z(Z`rE^wXbQ{HFZxGq|t&nhr8~J9dz^V>-kqpX^PYq8bb9%w(>+gQW z-;BxUN~IkJL%6b1m6J1Zagmk@6=#Uh93`Zr%%i#J7t|^S3t9d>W43NGT@?3WJog7E zVx>PqK!j~x18=*32>w`~Kl|w-QxY(D3d-;Qr>EBsF$`iZZ~*~RaF(<=V&uEKs9xLo z-4^Smfl>`oF#TKPK}zPiaEvQgOHAy~W~`b)Tve|-PPf2=4h&2Ks>V%ukP z8hu53lgz;FxPLUzpnm}6fB_`?;`<(85-_iTP7itdO-pk$#&L7`2~$Cjv;5$o=|Eqf z@PhrnW>8k?M!qWrD@YDrGUy-WFD^}%up>YpM@Cblz_^}Zlr=U^U0m$$n6+QT+l+9u z&uhl@8(Rs#rkNz;;=H#K>H0#NMSAFkz6WXhdsDT=+{sGJr$w%2(y2KwBY+E*D6vx^ zwxm0acKGh?+`iQYkvX=W3`WhZSH3yd^`r1(nlj6zP*YDY##NwBiRQ1s*mnpwORB zwn%2dUNN(ccY4je0D*;~^c+kJf$V-XE#zy$#` zY4*(iI}s;q)OK6Cm2PHz(ZP$R_Qy$SpI`T94^lA2d8)Y%l+pHiUWB00jno!J!)6aGF3ATytNBdHPo~fDvn3>-*i-1^S zYJ~Mck(zI>sL##pzn*2=5(+#BjJcbI5OY%b0LGuZ?LXlCfVWp^3CbNpap@-$O2Au`(ey%%J}@z2jFptt~6=+D1Gw;1d}p~fVX z7sp+1eZCYV9TTE2^F^i}c#%MtMwiRqT|`xkAytykMva zAM4M%!n(SKfL1Sl4P6g=cBLEXbSHYMJ@1dP|tYRjFM7&j{iQ8r+AD4 z1b5nGL}E+h6QkG5RA7e9?K=gKDdMHdhS@@b`X=Go7Wyeb;{n#>0QvEN(*$?8r~gbr z!L(`KZ=}%4%Geq2a_q1cC|&y&_rMm6bEPED2!;<4nCfjJ{PNq?*{?8RiLF4(%1;mt z4+&C?t6aD zy)`(pTO_$wb87h!;3zQdy;Wdb=QRugQ3e}?y4E^(n%mOS#VJt|rafC;e)I}+GdR5b zz{0hofQV`2X0)a6n!S3V>P?t>eFpFd@UHyEg6tJyGgcDqgToNCnC#hUtC{pdH%Vu z@V)W&;BdVqY#6jP*uYXQM>wkyVcCB$pPdbcH3P6h>^Nf;8I^;9p$CwelA0Q5Ldopw zu2xSK_C|i!{Yn=R-)`E5Z5V!tn_T-)JzguJf8mGdHJ#Fj z)_{6~-z|fGY0Mo|j8}pe3MVWF;ulg=!kC5NgJmtgQ5rc z=JfNM6zG|>SB<~kP~W_X*%}e^zcO%^@V}z+b{(Qz9ORhX6D+G?2swK0uQfsZd3?p* zxTE%vDl%#;hluHp&QRW?%*%9c8O3h!fTRc7dU{y_0i2+aGxL@Mjp44=;E*UPs=ET( z`Ch>6p6T$=Ak705fZJB4$*fjJEPpEZSZnueWEu!rRaKyuI&3@>c-RT{*hYg9H(g+C ztAcZkvbuk{6b!blSWV_YZj?e9s*nga1hv_-de~8=!?7_GTdxBjEX6mo=0f<*GPHy+ zu96jvIr`blU`PE=%v7G03WLi~PJrYe<0W)cla2OZ*?hNn<2$DH_L_ehYj|37f99hw z83%i-@3o=eFN-cMDYr#h>XiP2l^EsMN8o&XkMAlNFgp6WZ4Ud>{g@NJ-2`e#e}7C# zd`tczi={r&7dVq~u+XUXMNL(!*$*AFfqV9vyssXWi-MDFXX`nEc`5F?0j^kaDPBSrC=KQUm6WHCgEXI@%k7V%W61?CamMGRYD*@D z>@S)dy&hb^&^tTPAWB&+)akW@asmw*JhIh{Z#iq1$0LGc!vlRA5|o#a^NV|vM+m%O zg&%nUtpIVbo1d>uvVIDjqgfAwTH0VQ-nkOA?gue@oiH`My53!S9WLt6kSlg-u!HEM zP}29NYO!g6_W*IishQ0kw}~Bgoi2lm?Lpb8N*W;#8Ah!L zJC?>k;|}tB{CuyjmN^0Abj8(u$}&^Mv5XFkYOoN<(x@0;lfq1X&y!~HbBwY64 zhNPS4SLmgnJJG zWL%&?Gg(`EARUiS{n8R|^A87B|GofDFVHS?b^L${Pb2RXb5<_)YqkhQ=9wMz3hvlm zh7Rc-Prx0JPSio-1sVaxins_88Z2NYaNEXVOHr=meG(#t06Guca-11WX7dqi_%&F{ zt+u^s^wt=b4OsGq_p5HCz1u+LhO0LZYLdzke3cog-3^SZd)2gT5sSg!B;Xtash+~ zwi;-A0BqdMZnfj7J6H(S7mkq3q4Ifj0}$fW*5u4l{nkFS?5T702Pc3(FGNy2?033o zPlnYD-i7M5xEUMuMRR+4GP@ncje2v zmO>LYQ6}0Z_=Z$W=%+tOLH7*emdW3}`N6pbG@_Fe8V(KEnk|aYK=?Bo2oJC-?Spr%5P( z$J}LeQ@ZxnU?6G5S}%dh^uU4aBqdloWK8hdzj_6;n5Vr}=CSiIcnsBIgt93Q$NqSH!Z*%2s)Jn)+tD%FWKU12bmXl}fLnOQ0f9DlE|Z*4sme z@d}3x+Isn`BE}2zkMKbKtBTPEg*@)isX|jL2W>N2pwd6GKm;09TnX6-`cOb?GvD4k z7rwF3J=yH$xHfYfO6`|cE>^M5%;4Z~jVGIlb8|Y}Sy;t-M~ynT7cI^EsVW?tFjO4A zu^=WkNwyuxm*)>hH1UiNP`yIzl$XU4aWN%LItrS+#tQg?X=7EsH2UC64NPiy-^wkU zD(q%y>_e%qp`UImT-Tvjc8W_!OIo!=h1MS^%tPcBJ%3E+CiNV?F9uZhSK*U(5KXeO z_qlDvd}#VR&i+<$g*rCN7;efh*Yj%f8< zw4(x1Tr=~*YG?a=A;&&S>dz}rDWRIS{V$i4-epr7KZfbt$IfC3Bry%g{ zcpw7d2nC<6#V%GcGbPC02_a{s6^#0OU%Ui7W#S~CELO5oDWxC>4wI5*u zSY$i8%JrdE&IXTAR{}6tbLAr*_oOMVIWQ&w7Nfq7S$9brRkc;lbwKu+Ywt9b?L*@r zKyU#h+?5?!(2u)oPq<~_8m6WKEXuDA(i*yMliLUZTaHyERzra z2DM+GU6FcxS!>Dniw$u<>XYx6rHy#Y^c*(@VmU}XZ9HEkVVe?)*+X%Cwna>mFTRP7 zIs+>XdLb}mT&(R;&m1oPX#@HtfK}+PE3$ynfXQLP!$5-T(50MdHR0oFD$W#jS$t*E zmgx&lAt%szpr1=vS@DN!>^N~BC1SI^QAn3`43LJ+tE(b9RJ6D=zb!M=Eza?a2UcD3SdX3izV-9D4|b&}eA<`*)!m~= zBuF*pMe_|u3)a?Gbk|a1QK}enSTXtGO2rL~uXE<4rDfZb<~oD5QId~*Ezk64@#MD*I<|w2x7(Tj&S<&~;?t=nA4hMenkom)_{-vhrA!u=1{| zpKh+XiQ5)%esrsAN0hxnk)r(3t(SC)c4LmlFmwE?&VRFLRa+)?5(GSLr?ZMzmrwjv z#O3y5yR@7f%UPWBToz}%9}n8Q<^eP90dEVG8E4YzE?PP4cF$Nc8;Y@h0t{V}ng!@( zKxD}rG5%D`i9{R=od0cB(L>O+ZZ8MA=w4U`-&m0uuCc_|z{tRiaGx+^bEOmq;2`V4 z@IU0|q%(79AwpYGLKDb8Fc!dKTj1hCdWo%nR8LzOp0x?o9X|eqB7!onDnx{0US3zl zl2bT>cytPU2PF*Z`OR!)H`2ebscdDtO&G+B?>Vc;`PF5B0U10HXxx4P$gqbvt}N9g zHn?~^2?lyt1uUHYx+A-vK1s&2N$q~t<4*%TM1Pks-k51#wPu{KH(E86lSAZH9d26F z9>E0}VL69l{}}(hgaR1 zS;hFi=$!zn4!H3jQqdzK<)+LNpc_4@o&`B4bYw(wWpXQ$@xVgYP?~ll^I?Vp+jzHZ ziwP%&h(4o2xM!&sqOVw+&myJckA(cr;;(pnB@T?ol-;nn&M4&s(j6sX)oEHuE{$+1 zKgppgXN8f9H^(?xzeiv9PRmLJFJmB&&Q%>Cesy~afL=pu7XVvx)L>{HG3oL1_;{t$ z!eYsKtK}fn#Cj*b62^G9Gt04T>@iX*W4+;VH}=g{gwAd!ja2e-lGc6V#ad*FKK=G8 zv;^h2Z{;P2jVve3>qJW?7Y)dknc2i^Cf^&gC6+szG%iHLtv!~hdgj>WUC&E}erOeITq&g>Y5__Go+}2SCV#eyIR#QQ)%;?X11&(Hx5lX z!avka2=-8xNJE!;hmt7q+>;sj`|DzQ`ZjtICwB^5hXwp2TOV@_@aPDAT7K!^^z*eASYsV2 zWC7}}Wi4{)m!!+mN3kPjMnelC<-i()hMr{>x2$8BP7eUp;u}znFvJb4@1OdB8i^agc4b;$EFOS7$v0{A)M5tL)zZubXgMF-Q}rv`)1 zh|OQJy`{+f(iy}e@IdwCrH`jcCAUTFOv?6l=$8~5Jv=9^1R9)VzIFb8V>nx4S*z6e zMlx2r_(@jmhb>1uq~q5%3bR-|5~n5-hv`k*nGQRmsK!*;&rd-Apkj2u08p4&Z~jy) ztF(PKS`4`bRMC24@|{zNO5hIx^k}ZfKu-v6%DBGQDgS7C;I+?yLS#DlyadobyakYH z2i}sYR@PraCl6nNkJgHe`1~^EYsNs;ft(`}clO{j@PH%{hkDEd-f!;v@ zj|`xG6*B_L^HCcAoxmX?uy&*oqm1?_xhO696E?xo@`jlNP7TQv9f>E$1ly3-9UlNydx54 zb&7}stNSk{E3$`O_tAjvopsx^v1CUuAdUNoMIHysztWdf{Bbr3s#DdW9MOZ{ez!dA zy79#_PLdC3PO1oOKiyBT6UFZaRQ}QIUe&sRuuI(|#`e5gcig3n{#^-2+<#$?gi{u( zO+DtziEZ1SRh!)6>vcG?$f4fT;lHQHMd%{Q{+0M;ap4uig$RezK7!VRD2ZhKqoIW$ zVg)ZXyX-W3Ql;O=0R6zu+)*4{BpbBJL)9k8n(zuQw!O#e+f@>M^&HPHhZ82kM4Sw8+h+638%U6csP0EA@EBr$=c9Q#*in zISqG~2Wdw7=&|ae7MwO&>_r>%a)$S-wt_;pTLYO!Z)@4z-E#93u^nh|c3tlq=`S#D z>&l}egv9c;AUrbh71t{x^A&%|Z8nX_j|=1vTdwtEcwJq}H1p zO2Vr&RsfHonp5K;;QAEd|FZt_lOP71?;N{&LgNC(t?hVIA)TFitoOgvAB^efdfyK* zv*dhHNVO$TnU0T~IZ$FM4q<(&CAJ;>MEL`WP%rtbs>DZk9=&gBlJDsinf>;sonE<# zklu@O#QHcp5u0&g&v=8 zMcnGYZIQV8#2^ka==RM$Fycav=JER?86dxdWI!(2iMTp(;G8(Zxndy9)0%l4+~XF+ zv?{xIdC~*)q|(R0j{L1eRzwgy7V_>`X)X>@s?f6R!y5zkRmvR6p~>{jyW8d7uRR?x z2ze3_m*A&U1nByO+p6V~hrEVEuali*+W?XAkXOvmulB`z?tz zXeM*%h@E3@7Xg}Ps#WNOSIgrGXsUVm6tm>=#C9~UXNm{1^6EdPv(wjy`IYBSj$r!7 z8#~^f7*2o_6FC3mLi~@xz>uPt;i7puKv$d^S0o3pq#fCnE&hL5TWwsnwiJya;je=9$r%n*wI54}}aU*|@)wvo!GTfx7&CM?IF6 zo%u6fYcipOB^_rjfLSR(JTP*#kQ+5u%)jvBZZe(hN|wv);5?E;%T z(zlrm6|J0g)6@GCL0|S4+|V+3EO?g9<AmLW7`utP)9l>q3}N^|yYK(a$D9gu^T1}3Jk*i;8*vY$9rdd= z-h7qX8a14O8{NL?wPtXy=cbY0(iYf2G*lh*pq&HEh;zGb)#kJI(&5Z;a{#%S$=^3G zLMFnhCbVib0qhCTtE0aD%%y9Go)R1{X=JA-Y zRp|WaO=CYF7B);*OkMF$OUG8LC!F+tMs@> zCdx1*Spf#hANFgt?4>#pdgBxa$U9{D^ObfZn!F|CVUjbv5xA;FFM}@`;zQ85VC{=fJcXy;es4PP2&-s`$9T)4N#m_x}J(hbuS zgrS7DS&_T`2XpTQD!H>^0$kkG9qvwQ6IG#Kha$V14w& z!=e4Pb8HNnxSzSUv`m!a?|nimJ9vrldr3>KYY%nGU6(aFfHu+T2?yCEO<$_#PxKZ8 zM_ucQ*bmyvVC^<0FPR>?VtTXOqRTHcLoDg`SAt~$VHkUFhZKnE5ti*PJ*g`vJ|uPR ztq#D)rU!;i*t<{zdN&k-!=Q=`Mh(uN76LoY)xutYY$uiBg>wr7B8fsg#eKZwsS{U= zM|=Oxy;6vuX#jA6gT6B3&l+RzK|)A&s=xfF%y#K*8&a?&J@aA_fm>25B6JkE(GUY# z`?0&x%Yn2;NLTifOH0lLlCBqtm!9S^>niSmx73~(!bi#q&j@ zJbl9Cd%sp?c23;xDt>x~#H`^ToYij2gE-Y5RqfXhB5o3zaZQLsO@-Ju54D_60UIw} z8;tppt2+n09o3+2AL=becRj ztBwkM2CNnAW)LVcrsJ$s6&jmirdch}-V^5OVN{?Fl>mO!cwBVzWK8%^_taoCELD>4 z@wJD+3w=n8F|KjS%`6ci2OQ)4MrP(mvt!ZdU=zrwo-!K1NuDe|R=^|Jk?Hv~Pe@w! z1e-NgE!H6l7fj}nwEVRTv1-foxbGN=xDT!Yk`5f}v8PY3Cly@Mzy>&8F?xT|g7>tZ zo$2DHN185`|9;FT^WUMLMZt%b#4n1#$^ptrp!I3pCf~Lzw%r|TN^}pHV!>x-?xe;} z>uB{wtw3!*X7J#lwBYP@&#G(9-PVoPo*8-u1~1j7+Nt=5OsX<2(#wXM2BC)&&|by(ufjqe9B%M7qs1ama3$MX$* zbuJw9+B!f9xnBP z<3IA`VFUjjH}sUPh&+VsTSvZ93qn1UEB6_*^*d%&(6yLPu=dN3!hrOQ5+rDZ zw(F=&9C9z=%Ynj9^VcHUCH-*YED{2NPtgR=6Cl|ORziHi_x&Cgc}lvv3Jb2BxV z4qf3p(=iB)LdPDHn~%V>9IcLg*9#J0mT%WUTbhmS(xaDCw$_hz;W+a|77yAc)nyGZ zZMlsQfcx`5`u=Z6ax8ix5~Un6{yOj~|eHyWPR8m0VnvHtOQZ zK`13&sU)|G4Tb02sA&AN=s#C%ONgHUQVWe-o}QB=q>ds_Sk80{AKO#&@!pe6zwcH> zhsWEfde?G=cV++DAzsado$dp{TY2zQfR*$m-sItffQQt)2nPF2kq&&m<{39-+&aJy zY~O?3A=&v^1xm#8DS%jGv9l4bu1nwmvkQo1J?*(d8G;SF7u_+>W}cYVbv?Rc1-n?* z=abRbvh9{nRrl>I=W;RO>3K4X{X6{p{OwR0<_E=+YIUZ9eTV8n#S$$Zr1_YCm_-_R8F^$y42~f zboT{TU^hP8=scXT5LDh^gG_~5d5r*_l?I(vTs&44Iwz4+RnxglIdtF&$u>8mZt3|t1dmzCm&C6iwF?_S*f zS)KYt5~KdE_uoDl+AS%H>&Pd}vx8Y5H9MmqdYS=7>SP(T@n2PNa@=xRYP5f5qu4s3 zkqg%qJm$$4(93Kkb`!!Id_PEY?cRoJB{M3=c2z%aOKr#dwU4SMEN18!x|3Ee)eDo`5bd6J^e_v&xJ6$@Ma5- z)Ow5r8#+~(-~8rs<)*K8L1txXDWa3cy=Ad&^1WbA+%4%@8v&8OCXh(q7tSy5*N#fb zZND;BeyH3yo-n!G`TI#Jf(_Y~Yc@sX-Ug@Ub&}IP%_ynQv8mJ`SLSCP_ZPs4e#td@K}+`*cdgHpbC=Sxddf;$ zy^w3x=>+SmC*VK@G9nG4wBAJ^N~k~C9818h6k2P#L*P9A_zf>#K1q$t+>&QG6vX=5KH737Jw z&oMN2LMJ>vOcUJQZ@%lc>eKfiIBEo&`SdaiDN>|o!46SARd*dBOex1cn+rNqwZ|Bb zT_2)(l~jd&)EK)n^ zzKi>3qhbZ^zu1nOEZH7OO`AuJSjw2SQa?!21*DN4V)`pE_%q0tk`(bLT#Rp6Z3 zBJkSiZ8&5;T({~=8i=b!%Ka-hdSH2=9~g|16z`fF$b0b6|Am+a;;|Z?4zL`+Z`KNV z!h+5&PqfYK1+o$@fHeXP3u>ATQ6T+6?dZy^fhn53G4U*i-*FA~&RFAxX!ayo8Y!Fu zokEjOBDr;6O~G?eB_6?#b7<_;k$m7YwI#Mrbye z%2h2(Jx~;P0m$ev`p{{+R++sQRVZC|@g#G}Ho1PQ(;Z1CookS-mtM=^ zwd0t%=s7K(QFU_aM_#?fh@rGwl~%lDeFx-7&q$F{s{dHoktm+LOsP^RuIXxJK zg=c*jg8NZ7_B+8Zc#pceeS1?+Ynr1I78fJs&E0fUWyLIn-6K15_oH9mk3SPz-mQFwsr~R91Mo z+BuzuHgiSHSR<{B*)|>`u;4~0%ru&xYf~-{0Ou_rf&f$|tL{fD?|Rc2!JbuvA3cSs z_xA)EF%Cr<%ffVS$nY4uJ#;5OrM#1{C+9)g6n#Z$R-PYY|I$EqrGB^FVTU65_nn(S zNZF4K9SP)HeeN}zX^1uw8-j;qOj|{@@Vpp*65)Xw7jVx|68B7#=d(N1O;?s6y}9-b zO=&ln9NsALTu-260R=j0!Ap4^U0v~%lYxa{OWeBXjHrP1uh_D)#R0CPLBb?g2;J$T zO-y%6MSHcd8!Mmsio`l6e&~p0w=Rd3ubQq$cvTy0DHS=~=DYA4iy?kiPGck0VKQl` zg)_R@ac2L3#oV@hs~0#xi_FegA_o8Q7kvpgduNK!$b;}V@Wfy?MIffXKpW7XTx#QF zeX!2RY&5mgD3DGkr_uU5#ys{u#M(TOmzQvk@~8)f59f+*)Q$}RR|4ux28Yq{U+M+M zMv;GSf1ndB;TX(1|84wQz{qUePGV-NekuQ`$s$?5$((#IrHUl0kDMhO?WxMbisHVL zkH9wpIejyo>{8hz&((3J3I_`rNyF8ffoO+g2Ww%liE^iTbnnLq`s?@e|1P%Nwu}Xe zRy_R9n>FEcYe0mFvXL@0D?5Ls?hBU>90x`5mP1P#Wz%h>-KUtGw@WX+dA{CD1^kbY z9w|BBGcDA1NO$R)&VXoK8AEYf7~d9juw9r?(Qt)HYdqLX=t}w{yKjlyD`R2QcF6h> zbVmNn$3^&PuJUb(Ch>i9F*+vsAiGzQF4qmC2Vr z!k+Kd31YdqlI~GaVaCzBV3q07c@ib@HFOFa+)HZ?`Rj4h(bQnZVC7!6>nc;>LvL;u z!^CNMss)wWGuc*=bMp%*4-OpgDS~#)9!dSpzyLBuF&c{o@o;;0nps2Ft#|vPCs$8l zQqE+QHZl4iF-Qx#FDmQ&q9+vYejph9#pB?d)ZVI~i@FNI2-BUL4Jz8-d+TZS6+ell-B)prhu#WK$?*rnW+f z@?#asOeB9}<%c?E9G%KsZ721Tki`a1$o%toD(7#H_4)T+=xN7UD~h58rrWN3e7>h_ zdwuS}x;qMGs0MyAfVgT0bKvtmFWOY>v9527;FC{MvFOWwHNUKQt{pCcmHd+4hhyfg z+G&V7+AzpLD)0t!!D*b=*3&4tlhI;nF-1AwOfr`R6J0jDk1W&n0khBLeO?rjWx zE1btA`);N(%qhPLwX)+ds1$)UCQ=6I&wW?(hoY?;5G{jq3|-PZKOq?KHb1z0+?EOq z_w5d_RUxm{=C1P^iYq<#J76?|McWgFSMMCcz3MAOSVTv0Vu?UcOjb7qv!MD#^eV13?8UmjDn!O}8QWEDVY1rg^@IkaJZ=kv-u!$v%$8^k1=a zp7&5gE7Qj8k#yey@4{%Uy%=c*13kjL0uq{J}uN}?3{HmZ{!;-^^~ z*pI&;XGZdY%whsKzv1n_YXoh(FH)m%ot@>WgW1{^p}r4v)F5cI6IV z3nVDZ$_`Thq|%LYWpuq>^Av7D3ta-;e#+?iCu4Rn*nyB$0*Fqy%yp|!Wi7&<}(Ai}DQq~3a z{jrdH49_3J)9tWe;Cdc)b=5PaQM1?vmN6>YUqB*_#v~Zlt6CgAg^*HF-AJkX$0;Bt{2hDM5 zFvQZv;|?(G#s}b8gHks5H5=F=4xO2X5NFMvG~t2M^dAvJ4Y1znIAtsN$0gVo(4EOU ziL$sfbis*jFAVQFKi-turg+^ih=N6_HC*J5tWai^Q4-;2z2sx($GT ze7#r>{XmD9Q(t^bME2(ZOO<|t0oC+eU~9KcZV?s}_7tZ(7*wP;NWShilO+SGAg0XY?m&AE?UD{pKqKqh`i)7(SKg5yJc^r)Vi zU_a_I>+L8?Ey(R<;~T z!HC7mGB?u>QCCg9)QX>-;BAiqxFKBbn5o%}sLs;7uFK{Eyf1LBFt7k5BNZ6Gpd!dX z%^ZU0TITK=2v@-JA7*EQ8*Rki*?^gvpWhLgujv@Mf9tF8 zP^s;Es(jtUj9fiZxxN#5t1wlAV&W9-$+ueOupq0J%}jf`lb`PQAz84tp@q$A-$Fcq zXQ@PsAPtLY4J`WVq%X&lrh%u$Wd4cD z>Z;^9>D`nJUyN6zT3{GQ$wv`>zvp+j?ln!9fW1?J)w826bKmP0fL9 zP5U?fGM=JD5#JKsr>8W64cul41xL*|FMWllk4RhO`NGjME-g|LyA)ASlUNv}*%0{M z=SE(SyO1k8#DmNmh~3GBI@#FKk(uLMzwKa@Vvl)`Lf3zPsq}nK})T) z8CT0?aoMi-D5}4__nPNKhQiKGz1IG3R;lS|?Awuc9Co!hIQgoN%`j1Vw@XtWl=g~Y zGtlB-VtM{tKQ(h_fF6)?kz&&VFS|l8AvWZNiS_xDkhFZ13HT%vs1GZU_KRGI(z8E; zG^s+w8-0T~l|PLO7!%qMIN^-s2@|?=SjepOoj$%ntxZ{TFl$dA#(MjL%oKAY!oO#5 zFmi40ei)-yLTRzYXG6$94gc7e%Ea_Z&o#RS|uA#L~G`xBOwePoAnsMxwyD?zX|ulR-@Z%&8;d=0W6o5G(<+J*CL$RKw@uqFa`0 z7C5`W?5_?1UMM_h#)vCo$K}1o!KmF088Y-pJiM4nS!G(KNu<6V6|=g=f=V}6)O%=3 zHB%$lTk9n7c`cZR;9y%f7Uq07do|M~fVKcrHXjf$S3DNaTzk0{oK0@6RDk@Q!@Zw=Gi;8P+x%v&&12>&@r>=#4%Gj4QVD9So z`5cX`z5Sc@NGpTK9R3&yThAT1uBM!ej`W=o#3AG9P9+hajg7+Gy@s;lLhfRHG0gI! z&!Jm6^MhvbDnEZw)RnEC+l0X%1pZZlOduIbWsDB*S@aFSB{Ew@GLaYt=U2r(|2KK? zHRFs;RWh}@&zqGmPN{cBW$&5zAIxd-;MFg9Zx4_$M6-h{{}E5*sv&36Q6<%y1Qa9Y z5&axUcjy-z5a-Sx`1JYJf<&Kw`5dQze6>}Z5$KT5fKPsQAP7ndSa;){G;Cl4@!o{e zUEf*_TlAIYy{NZZnLs1#6?ilE^-~7MX$`Nl;$?<9t&<>NuF80E6VpD0@kWUN#*j8#g_D53W%G(teo7BGJ+=8T7gD z@4&}fXoTkG2~&$K9XnHz)RiyK{N{qp!ty39iXX}zdE9`Sb{hR9JzGOVVd)#YX{50+ zCgIYcUK7Q6{Q_C4usDK@-}mNmrwsLGhs;#BW$7S(+gR^~o}TqzkJr~fYDq=y2ng6M z@mjzs4M7la*0Ixnijtv@-T|XU?gmcpKoMBfd%QPS<4K$)IR~>msQy?m5guo=esFn$ zn!8ni*$xX870O=g4Z@Bl+vmRa4Zl>D-qL*A=DExnOCEc8%jG8$MGi%3;oO!N@AXL* zYP(3U&--0Z7e?tB?eFf`YUnEdt9Ur+(gmB2hzIz7zl*^qEIjswz3mTcn5t8C86IU4 zEA|Fo3&gSQJbIPt+;N)_mcy}`z9N|58$r277;pp?cy$;xJmB;{XvU_zl!Y1Ue|d%f4@r;h z4*Sr8Jn&Fov2c$bzpJic(*>3m@X~Rg?WURpK*4_BKpiLm#lK{SYOMnepX77;xM=I- zRMJr14JO~ZHiWP)4$L^zu^J5li@7`+)7R6fo+z-jLa2sG>zG*2{8Kio#3?x0`PH10cHg$Vm5bXuy3C${(<1Acx_i8@#>3;IN5EYfW=YB&LKN}{bc!RKR zV0L+y2fua0an0`L%dnHb^YR?K(8)BA`G;)PqHLZ?U`s9C^q{W>n;Oj4d3Ryr5s!jd zEesa|9V&PY<{i#o_PF zX^F^A8yF4%>i3^njFzp*!H!%2LVH>8{elA8Mucscj+6@S14v4PH!reXZ%Do9<=+Ev zEvZQny*hJ1tyDKjN{Sjad%eA8i#jl2%ym>I?K=JFv^vJR5vERl+PO271>9$k`N1Oa zi~fBqNyI^`enhJzYNv_zKugo)Q^A+>`i5`%p%<;sKui z<)G#1DvbdLiqDS56ULz-67?A4NBO@C_fEiQKf#lEHf7$IcYk}PIldN?gFQD~km92@G$}pyStQCXjjv-`DqohiocO?1Jaw3m!^CbD zkAl(PF37I|ggA2@-oPiR;zmJ2Fg5am7zF2C6 z6HxA>Cni?j*P$Dv4zbfX<_?U`ks|AWA<+!;Wj)A@!0ia=3li!lvPPo+L^D2Ohm2-I z*mqqFhnB_{-v<-M&@n?*)a8q8#o$4tI>Tl~-SOby0YgM)Mr8DZMDmV5&8bvWDnJOZ zw0?49J+0s8zC^`!wBBgH^HX=W>$)6_O@5Hsm--GhRUSE%k(Y04$Vo!>OHE$4@?4kQ zZfBRw|B13}(7YWjWPIj`I$Ex36dQUu~72 z(d>Aj8di(>$!3=){O(}{;N3CO8zFFk+;QL*(8o}C#!tTM?Bd1Kb8A1Qah)fF6 zxZ2xSTvzn?Mr6Xzsn)Hs)waJ+i}6OrBS&O4X-4m&-lP#kh3vuA4X!0%j;Osf>|kmG zM|QZrGmy2k2J_Nsy{Bz@t*?U{{2q_iy%EEZ_hfhxRK|8l1HfET2;#aVyYDUcyXKv- zk%n=C;Gii-m-MICTZ5WyjtmbQP644Qc9T*-+E})UT_2*{!<^x?Kqo!szM*n8h2Jqx zw>g#7IY!P)CST02=*?*T5tY80O8ox!*A8k#7UhkUE z8B|QTum4Cw^?7NY&{tbdg2hMu#7ij(XQgLI4a-hf8(-bLcWXs<6Kj}Lk)DFcUUiI} z|FBvr6>mpmu*NjS#Ek4_)ZI!OtQ7w|Qp|=BHRZ^u@?5nEuG62&9Lgt&3J#EtW(VjS zXn6SRi}n&<%Z>I}D-oCIhFo2}?lZHyu&_F@=&y<_-gGuSyJ!Dw=yWTcdzSHE%7Mdy zw_hebZ-`6Z;F8JW=pcO{NPe7}ny_zp{j*~IRV@Qs+-d!ik0;}1FT9jEBgoLH%rai0 zcyryZ_2y=t=8d*kL!oKngFc~>@gSVaJ)QB-_aC18OXm02g*P9Ol;UKtr>mnJ;`i%w zzt}mn@vLiqB+Um~(%mMV!WIP`Ev<_Ka?FR{bqt944iD#XUPNg&-|gmWx9syq;Ll zYPomY-*{DdaB*?x#Z3E^8zOP_fk^kuXa*)$4@SOjPA@S%z~zO7F>**GIoQP8JN3KC zne_`?6{+GQ9bUOO`Uh7ejPLA)_9c{^`tj036X8srA{e8K?Fptc$A<$cd(MSn0^oL(D0qF%ePshSIUhNv6 z`RKg#^IXI1Q-&B*`^c4*i!Up?ERsGoHy3}vxo6Dy`Mua+XA)eF#0n$!vK?c;P060P zl#~1URu_}^T^+CUhkt*4xKSawIW9bz=s!S8tBMW1Kks<_&p!g#(2q7H5y4W+@5F3$ z-`r+Uns&VzD?8S#7NT${Deo{>*Kr1aT~%LoK0Y%!((}UGG*^B37gBOMN;orWgQsh0 z+J>&Mh&!`^eok7l<#$?@-9nKts0_RjvcfTVfU}53G^OrkKdD@Ro-#O`5 zF?{8Z&W)aF8XlN8S&U@Eaa0V?CaW|o)K!eI|AiZQ-Ep}h*UtRrfl7l*zB!)A7YS8E zEoHr^2BD7x+Z_>F?>jT=)-|^i`psIVQl>BCS$R|J1cNXIh`XO2YWnVq;>;>+Q}^-x zQL(zAv8flAJTgsZsc9@Ru@(KtIjd*#ei+re8hO%_IKRBCPYDSb5qtHP!%Zf#dkfDE zukW%DMD*+YLR>DK96pTRe)Xx`S+@Er+vT!%`K@XUG*}t|C9c3IQzd<`Cw$-g-jQB% zsc32KQ%X9>PFpM5*6_&tY4eF=DND_Mq~Z!G_Jw(EwP`!4vwtBo4@IAlyc=tAO!gw* zfBQq`=^C32ToWtoBE-A(2 zqy)RSCd#{3#lNiVbfc|MyugRvUK#TuOGn3r@Iv?NK|$l)g3(T}X?;(bqkHw+=Y^1h$hO(|^mDx=eb2@ZNQ*ct zckI{8)_G*VyRYl(yMFDwg)fUb&1$;J?jUqewvT4Hf#d!9zCgtTXWS#lb<)GjZ+H`I zN#7=!-oxduQ{5M0;ltn>(}HHjbtHwF+pvDmGm>rcE7Tf(vNBM=7;P`~OKEOhB&$|m zQ%!!~VoOo<%Sm>F+oR&5!Ntg(rkhm}ui5qem_9GPq9b0Q3;R&mVf3**)iKDK7^nJ^ znfuQ_M5mq`4oK%tDoVhwm}tB=JvXt2EN3^i#~1#KfBl$wkKgoWo1)foeAU%@|AC2| zUGjL>S+_@7I)h6`x_d&uJ_(2KNsW->Ac;xQ>ERNrEmcPh{@a00i;Yne$ zI)Ac0K{oAfb(1OTU9Addxrn8W4Xy^O&U>0~VO^=#mUJ7XF}~cOXl{AS|NdP%#8unk zpSH${eB$2bDkAhwcRjG@Ev?+3#Jz9^NqU+6y>z;dPe^6|c>?N_^39tw0i48F2w zzs`B`iDTi>iwlYs%ih1LRNwWDj#}g?rRP%K3o;z7>$gHXOWssE_Eu(pjtdj)YX*P0 znYqj}RcgNZ`DQ;?-wR$}5iG>7(>%91si>G%z51-9b$(sRPxy1><(9j{ju$;0hn`+( ze#oiay}amRb3pofki!s3V&$3jAXY4C5xa&a8m;y)f8&X%I(_(^QFhQzexIw$Y=3+% zzOi((EH%ISYml%KBT@Kum-RmO3hy9Z-52e@RymvR`W59ova7A%)i&=DeVlmYDIxWw z$hnrW;$g|SPQ{&dyS1NoSjz)x19wk2KkuoIQ<)^$yoZam`P087&*AOnr_U=aMj_Xe zU##CtyT*PLT?)lER7OwSMFjQz?DO{&>4UNReiuEcejmEcokKavN*3IUE$)AX^i4m< z_hsYWrk)pA6&Zf8dJ47C%3RFDcJlp~YT8 zHRh|7;mKpi?hKVqO<6v<%9%^(N&Ha{+wFM_x=;LAxYb`C9(hiVL$=k5ybZ$P0eCzc zyw^>Z9&_95eGTY)R`cg|blMV=j11*%!ouxj3`ZguxMOI!3^*P9_j&!8Bpn)ES86BDbjw6zLaHR18gm*h_|`&%;5 zzE8X@F8Jcf!XbDd?!&pOq9SqLjmfngNpx3s?jsPw$601%?1)xP9}5){14`Xop00HB zHtu|*^vCAi7N2>=xTPj@HVda4Y9toz{*6mqQ02aFh=}Q!7tg+~xG~Q0p)oR-T?`!i zo2vpn+@*3-5~u-ftNh-8$^)YIMA>uXQ|Nee3dL6O3f3txmDqK2PLfD3V9y`W^Z4 z!^77)Y|INZ649++Iy`Ces%kK0<@25VIF=h3@9w~Q`F?%0Cd}mbbNNxtG!3UCipgKj z+)5}3-AY?Nv_EZC;*YNdh_kV=NzYjvFzXhJ&Z4_}C$EN`?x=QOGfydrJ;Z*s_5OFE zXeXMBi|P+#cy4iZ&c}N7iN8-suz+h#dqSC$&W^q>kk0UZm2l!}sK+^Fqj8#FuhO37 zec{Mjjq-&%=Z0`>eE}|jhfUI^C@e8W?!!gQ08h2OWnO?q;Y`zC9?|I2fMwtnz|~1W z-FsTWa)YJh1=+ODc_dspxMdb`QBwU%pfY z2(Y=f?=GbIkpZ1*1h)HieMeH*S?1)=Rsuo?`GVetlkZ ze+|M+=hNxwx1;ZH+@r-Zmo4)D(p9p&_`N0Nh#u19MO}cKXWz~>in!)k_xV*uG!k}d zi_e`OyjPQz3J*3Wsonk!72!+_ieqKp>JP@PsMknyM*4B=N!&d1hKRqqPiU2~NPKmQ zBRf`{*VT0@5vHT1z;kb2D01oF`Ll15sSc{`x7E=D&$_-WZ<$+&@gB`|7?Vvp5NaON zw)#AFXokVePcFTbFd!C;u{jrnA2AHv*zkZFIlBBPF=O_|gNMo=rj_{rfj)u^H_WYc z9ZT(Fm;$A3&*AQIeQzk|x@Blf`YV7{{KOwK^USh}iu6%Y2H%&*W#M=GaU<_Kp1iws z??K0)-g|iCnYmjZ-n^-0V08U|Y`t|@RbAIFj7TG$N=i$Ibc!@c2-4l%DJ39EBOqPU z-Q9w8NJuwqN?_9+n{RSI?{&WSe$M&Rytvj}bByt;v4{^_Px&Jvgd)H%cMe2CqN02q z`HGF|61t3WcCqL`79E@-j?a0i+&MIXg0jkY-X-#dppAlG5d%!Io+1&;`khwk3>N}^ z={eF&l19yKz7z^{WOsfq>6-HM(IX=ZOb`xtpfaI(iqf5Vnd023t#te86zvXH6a(Tw ze4^MsK22mb?(3~vLp7%26P$T3aoke~3Goz_^e0-nN6iM8+wuvaURpGq>KgwYr%?EH$ldwd zg50)8P$CFwEgQj`bJS4Ar$CS4);$`UPBf{csDej(xxV~_AKl^Jn9 zX1fht(cfxsI5cF2lR$FYf*%qB|b=JK&Sef+~;V|Bz~VKXe%G zG^T&(svc!Hbq;p|?~toY=MVYlXeRir!-(wQ<5=2%x+L|ex0B8r@@3i_Oz0hW!NmR;iEUgv&l z+>l>ujsF?>Ew#bRr@O{(=ckk0I$}3gj$(U)%f45JWjkbEx$ZPK<@H4`(bFod9 z#Q*YPU>LCK{9G<^{vr7XAzRvw&zsk;&z``|&kt*%*RswOYT{`qrfaC%aO&^7G)V<( zd-P`K9_SN#Eza;JTr6rbd(hwMSIqoq^A(knrog4P$Lm?>%~b6WMJTCzop(BGJ8ia+ zkActyif_1#gy-L-c>$D6HW~plX({sF{{CO+Gj>&5WedVFr+%b*x0;Ri$@~G?lJ0rb z(N9+Uak8*@c+ldob5WdzM+jIZM(yT;1RXffJrKHHEyl+J$c&w`qqaMVy=D6U# zxotQBq)p4xu-V}E^w4YL*XkfA9s#l*+b<9IXL~1Vv&Fv?>kbyD;+=e|yuU#vjYUJ< zmt<*04)_G}QzNP8ezZsa>J)vDE_8@%ci`;`SGgiVH$RrntDwQRrjCIhUh(1GDsLll z$wFIO5p3z!ULYSuKr!YIAumaeo8Ct6QAj~yX2w&o!5Pp&w#zzdVZsihbl7@5Rjm{q3$in{t76(0|>rn8!P|L^00> zE7N}yL#W(N&iXSust;GdEMP;WqOMNZ7&>c974?Mho++eLNysRnjulTgyQh8U0t`5@ zz-#H-zkjD|NgBqIeoz#3OTZfTY1{<( z7P_VoA#*%L&4)y)Zrb8>z7|PKi=|n4O;KlDEV4zo`z4*D&Xeb@u(OIvEtYPNdFVlI zwx7Us8!R?=lgEA~B64AKMkKw-9gofT^fp_p#l$3FBgy1gNH;}yyh;_@%7JyUBpA1^ zSJI=M600wC@wLbq=usiB08zkmJ{?1J)IQwtf_JXP8e&GgC9@e-Vm`H z>8lB&t&#_{oj*#(sn>B1FW=KRz>l13AUQ!7wRSaap5a=d{x1Mx>UfyxkBAuDHS|k2 zBzI43;)PyfK`aYy$>A$WeIx5Pf&7wqq2Gp=tm_hbQApfdNWer(C?8sCxo%3c5T&Nc zqKxEHEI>N-Y9YMbZr3%#;G}Iq_(=vQ4NDC>yRy}FEBo?T*V6Zk zwP0ESrPOitr|j8zLdtnhH|?cU^~wrf=`d!(()R#oO@ zq%q77gL}$LC>#4JZGdiReME)3L>&?ta=~^a8|a_{`MYgGqI#~3L)qWFiaAX<*NKx& z98Zdmn84!x`CY0IVtB{Es1Qp4CvXn36?d+6o|K09LzE>E;x& z0hEK}X{XI{3JD=9QVZqyK*CLWhPPUbW?x2>1Q@Et_V-6S{v97(2Yh6;#30jXx@J8j ze8I6vm#iAX6d!gyP}+70$?NSd0eLZXlJxiLUv{)00Z;;cQ}|CV~yh|e3UimVp0=&C@pX; zb{*A>T+gzIHJ~}sXzTR@xp4%4hZBU|_kD)9$Ja~yxKP2A0fT)6<3)B;lN`QyUWlLf zOFmq)c!CZw5%%b(Ea<-OX1w{Voek zarV^Og-cCt%7;y!ZVbCjuuGtx@L4*3ZnkZ*8z6m>hqKxhARp7C*Jf0)_tUt=4B~pFBWBak< zsMQlP!Vh-*Ja_>A%g*b3SUmw=rWdwoNi#Apn;txz?)^A=qx->rtiUW+A|1An8z)pm zKQ(pqhHv`<79bR$em7oER^xwi8Da}4O2`dUQ0$;KcF9+G0mT0W7_mVwW}AFoSh#$(PH6%)+s#JA zhV)){JX~_aO{5nCrc!;6wNaO7%{7Av5**MY^G5-qaQ+eFu@A`)QEKaqu3tI5+-=A) z=_qwCoqj(HB?lKQVEY&GixhF2y&pTJfMx?TexmN%EjUtgMYdM(5wkZI+mfDbsRtJ~+ZzOh{2;e_5gU{J&x3OYFv1VLtkYudQvA@)y6JoMad7 zKsB8V-4|}Z`TrF0gr3O0uIi@zF*qt z%@!>4S{ZxhcY04ga&aP*I9u{e;pU4c#o=l~MDnw|?5M=W=mcp;4L24=SWh2zv(S?z zU+*9Os~+S2!%yIpi_~TtIh^!XGj$pJBDLzMZUIU3ILrc&EFJZIy%X6Z6w^JhKUefg zc-;oSecP3frt8FslSygiaJW5Vovzmb0v)WvF?x%DQ2bth%?l6a zb)$J#bVO=Sg)`UDkez%>#Wvyc`}&R+fB%5(In+Mz1G6$yKGI*G|C7J+Io=Yvl~ zfc8d!bCMn0V!J!f>9j8`n(}Qk+YFF2J5XP;z9@`N^Ag=cgXdqs{miLiu;G|rD+KtS zR=_2iOpr|qN503rL<|r)?uQ4sl0Qw?ZTFjSvVZ&uO#&1I7)^JeWI-e9MV=HEZYDVu z;kZ=(UQLt}H$H$-vX=Gz4N3mA;EM`48rk$;NNH2aQ1mjy)~3mJ_AgfHJ2+SGJ+7*p-Z~ROo8+Y^{mGR_QJYe5 z;7%D06>0C-Zt3yprqLjZ1fg{jy_L6L-eI0xi?c7*pu+t`{)L)(7%(POo;XQ$IRBdJ zdJir)nk^G6m}ce&#_wTjFkX7C>r$DEf}zxZgG(zj^IGq)ZxIYTFb|5v+PnC2JerB} zmomAu|3`;F3GDxLM_S*em?zE`tDDzm($-pb=s6f)Psmb9yq#J~&H|@dW(J4g6y8Hh zA*@~0?*RQ~l97{-e1N5L(cl7L3AVus!BHU@8;_#(!14RF$ zqeK71iK}z$5Ub0QSzISoD^|JPqXJW8rKgrEzw^hFz9JV~kKxm`&s1f&?9zmSY{v-j zMrY@3NDa5R`hH%j$RdbSk#LVCxRuF)@^DwDAHA*4y0_6|xjpQ` z`JO)C4}34SiaxIJTmmp9*ct``kqe@Y4w6yPOK&F*n@CXmB*BYNl5U&4aK!3!KR^x; z9(~oz2mAeH7~wR*Fs<&zpc|%%4~OHz@cLIqIIkE@@D;+Jy5#I}Y#|MtM?jd+@#f6; z$NP-Gu8Nc-KMfwo6>Ov{DV+wEvD9&z8ur7_;V#4%j*1M;%tu@E*KH z;QPm|sZ-H7E(iM9J1()lw;cNSg|$9hGOPVboM3Iil|_`;QhxU@dFfe_mkp zAxz4G-Ui26B2A)HODqi7%!r+`GN`Oh^weH@@4?b&=U-A>(Hd=eTEXOG^ntx}xt7v_ z@2SnTZEYstUdvLKK@1j$-neQ>N-i`n;XMKoK)~*}l37}R!~s}u^*WV3*%e&>F~I)F zC%)hS=gawF7&w3J9=z3x4ztC?mhAeDmb_5fVA4cL>HWbF=Sw45TuV6FT8VM!f z@4b4__4lYQ{`6sv2 zpZU*M>r=%#)AoJ$_DLlH>QSpn`1Wjc1;4L<$Gd+Uy|YsJmOnWzfdv`P!*A0G-&U11 z;Q^ZJk`$RjPozj-hbx^c^EH|6AtxK2#RLY!lGVRRr)ZNQvyBw{xBP@OtUH)4lgg;C z6cv6EB`xxGZRscxXh-Sn)p1QS$zq$%kzv_o?-lzk*En^O7!uxjlNR)tC99MHSYi0}?@FnMBV!nctVr%}U%KvhX z-~4v?0QD6Rx*o|iK%!pVzX3d|l+E7U=OHOH9z**f);ryMohv)!uQ@9Z?DmTfuNHkA zSj-#t#Z7Z~8X)s^sl=}L^nPb$5A@TSh@W57&btkE$Yo$5avb+z8H?23ND7P4@LA2# zz!P4Q`#Wrgi5jW@CO}_cDC&o!t9QPVfMDsoo1VT3+6(mV_4|Rtfrnr^i%smlBe6$C?maL z)iYbUp|uJ>g8dTLx8>YeKDTQ4QTnzDOuhYo9n#j=eV!uKgnhzV_7rJp;)l41CR#jx zPH%66r z35xhQAUu_eK8q|(n|A?F4+u`pSO$_6u!&JzPcO7FgVX~sabMp$D!Qb-U||V*CCN

Uu%MU;`X;})In84d8rhP9`lGAs$Fbz^zNn`*=lp5xS6$oHw1}kx|{~C0*}6JPE7c-q79jy>yaQ z>5BjpRgHt9PvSOFK2Shni-A6*VH4})CKDRe-a<62nx>hf?@k>t7D zVmdrmp9QyTR(XxkthjoCwLfHq(PMiP;2>1L!uvWctjKEUbS*8sHhqaa>Ee5ri@EE7 z2T{JfO0gI60y-O{&fxE{KkMY$AckV0a4N>$7VyUI3)DU9FevQXcT~%2O5QcWJ-(-| z-DrBbT#g~^(E zYC2l>pi7AuDC48>E3%-e%SlcF5)DiZm_cu9atZD8C1yhR{~7<1opeYGr1bPq(|!Zb zOq^A4lN$TBDQ5$FUlF)$(ZI~I3P3y`ulR8JhZeMJ9EtGrpmgNgLiDtQ4n&M*bt*HUEtaw&!t*BZS>@!IsN$e}25?2% zV!Lo>;*a$dXmexMQ|sIsgYjf+rKuwdx#@CqM6pvsK=>M)HWyd@WA&Q5?GunBP!qY5 zU9&9>G>CN2wcLb1xm7%1BRXU#c|UWwr0Tpz@uj#cm_j4f%LatXi^Z{U~2I4hMT?~ehKSt-O zTOsbOF|}s&K*{BLs%UxtNH6-bSX3e~NJtGvE%aa#D|1BNH|YrB*54*cvW0zzvp z9LpzSsv1iFuPWLazd+oyfUbrzj6wx%79x0!yDl|j_s6JDm9;ePZ^r61JMf`=#;F|V z=zsfG)tE&)Pq!8b3Z5d*!t-eM7>p=+QW8Roj};}FDqX+;`1*C)pr)mv+dI|JuL^}r zZ7t}&z9!(&d)_&5l}_u)CN_X+0}!E!Hm;$RWZ;ngQFx6kEnk4-2EO6Ypd!r@7LW|I zp&vQsXTZe+)O~H=$f;44Zw6643rbg3l8wIVAKHr&;QC1#5qyuP2Mju3PysL_9A^M1 zK|q?UYOh#2(4X~>G`^3s``U?MQQ?6mW;N(*KEps>Qm0l5-FJ?p+s9LYb8n%Sh~WWb zjVA8}E?~K3<{z#jwS6pVpNZZ$P{3PMKr)r?@jte$Hv1iQ>ai!+!hI4Hy%Qw9PklfX z3(;9=9|n$^$4M2SNj>!}^+v_NHtKZFr=X4jjXE?=yxMKPfHa8p>SzE7uN}5AArKeS zpDwoSbD*f)&N=d}BthoF_T80_eo_wMp>edn$ecvdfC1_QQ=hE2nYl<-_(i$s-Rr^j zyTrzca|O8=_05iuyF-zvCefP|s%$1=U+(uFVt@OLge3j~M_we^_U4Ia-nHzk3| zrgv=YH2@4$X2LT6aZ3Ti4!{dYK~k>soWLViX`w{Krx+O(HEe^u0JVSgRULC7vy~Kh z-(7uc+^;eb?Fqt4=(1dlW&b^E$sE|@%xha8MmzI~%%L8qujq!pgebKflYL=jq=BAr z3{0z8wPy(0+DLd|wRCZ-o*1wb&gn?ha;>SzPaD3`__kt=ckC&bi>M2UUEmeL3ts#E zn^HhfI%~#8BFo!13n{hSpoh@SZ%}hoH`a!i#pUny{Rydi`>~;dYbDU$r2AlI!o2w@ zdRHH__aYX8n`??uutQrMPtkN`K1hs1C^cAKMofiY8lE{|ZN*}kt|?lK2CQ85`z;>B z$UK1}SfC3V92Uy|BFhAU8f}jXv&8meoDTyR3vG59q z20GkZ^}<7=3Untsr?LMnWAvMDjSQqYn3(vHpQyPcMWdXLm6v>qlwFRupdN#-61No^ zS4>npSL1pU<@gE_(4n`Q8XAFOt4QEX<;rJLLb9@60aOjfPfTfoJ3n%O(*PI#2o9@> z`@12o+vP=n5dqUfgz)DafF)2tm5Ar|PZ0rv{0VKZbtI#AS{1WpuKI5%_y`n%SpeuB zP*`PiZ7GFmAeff_p$4CR%@NqrKJ_8CZ%{s+-o*Vp3+emn2+mq_4-b1i!mb_-2q^`v z2?{<#uVV#XYz^`xyK>wP??Ur&e+HZ2k*0W*k^K7da3?tIupHWC7oW7?Lj)HB{|c`- zCtBW(`qSm`J-(>z=5gn3e!$Eo)H~Pk>Eom;fp&<0nXKmkh8!?U13UyoX*|S*j`5|? zm8tgjY?D3bCad5V)xqoj1ytB5Y=0m0^pLY=hUei(J?7`(_ zwQSIJv=3d*X?98mK56ZrMAM2?sKXm$Gs>8R|KGWYB2IVu(od^C=T-k(Lv!-t$ZOAA zKTMDI7vgXDrsIh+qF2kA4F;=-QbN}SlEc+P+=God`aZd?y=P=rOoHZsTeW|YxaO=U zp_9s=!=qKEzm;KY!}V(~{mYCXi&h~)_v9JJxWbRe_PC^nOc@9aqY?$QHqzMK^mt+N z;7$Xz5qL!bO2s=M=_@0;lt*)O^Y}-KeyPGZ9GM~$vCYQ~YOyA>_|l4HcC=Cj8vvED z&bQ3Ac$tXYf1~LR%J! zzQ)iVCOqsdZATgznc{Q&ft)_t8i;j(M)fdA(x2JPAYd-)X@CUzBgN8n=`UBxOA-wX zcTZ$TXGk^F8dyN!z;(Ua|fIfN#3mwtUjnT?4N+zc!rocshxbFFaj?=`hLg{}BI zI=tFhF6Iv_#-nfHG#m833O?*Q{JbAmX}vcP?d|S(U<%C1Nou0o|J5vx@jB0}5du2& z422&WVsL2A5dEM(iAQ_#a-R0lVIPN1E!nB}gV?g&R!2yngRcm6fV=%6#cC8AU!{F& zg22p+pnsWHQIdx@`F4}CwCF=>8JK_We-UbRGk94GnW=)M^OyQtU}~6e9haoKFtiB^ z5)}iRRFo#4BHFJ}WNDNNn$yC861hqx`PBYur_BadshZWLx zcG0F;^%Y99Y^h~be>unDS!~#_QNnLKe7&WIPqfP(QLOnXW|D#cV1i~rrwc$I zsBugDjuP++fQccS$@?!qGwvSQ)2d5@<*5c`c9=k82j6wW;#xp_7?>(JpE(uXKTIa?Gt=o7l{GdM8*%AhJ=^NU$+jiVO^@-ZwC|2 z;85`K??WuwR^X~YCZaCmW%j9}RKL0JG>hJyB64_AFoz)G$+G*0p{ke?o@OF-`vW$* zkGULYVmUmZ)5aGBrH=bL%qs_s2I!`U!}w((uEq5by=D?O!OFLnPWxB=eNW(OUK-t- zX4?w+bHzqi$;V&)?1f`)(ChW}XhYX2#ai3SlRXmUi%gBf3vU?qpy<;*b`Ue0r7eQC zhCc+~Irx$n+no3rNQJp3-RC?6_m^KnPPhr|TW~tRU@-0)+Jp%G7ulbLg_vk2xGO}! zvsLm5el2(bybcN-mpr<~ldI<^;tHc9CL-{Q&&=CJ$3d4Ej_g{uhnN`D1T-L;# z(gEh3I3{Y!1q$_L$>B+k<7qe7_xBf$=%rFAd`Iia*;m=)?9p`yb#EYcT3pnPtnh_0 z4-RGkiwKVD<)rCER@uns|50u_I><*xKA_J?KK;kA!)(v?T+qXsFv?DDg5U6VL_(RL zRDdSL?->43aFwQT%PHMQ*msZiOapu|fX^~QtR;2$)YMpz>+L-w&cCad$m8Ie=H<~# zc<=`4K_se{k}pP0&l8y#5wZmRDBujG41#1jky?+3e1I*c9_2*bfklhe|Ay+MfX#S& z`nvRz_kHD)HE+yZ*RgyuhXbH6uI*wEOiXHm@BO?oZV4@vVW`18$Wfvp0{QJEP^s{&k7y=b{dwC{aHcTKkC<&h)*% z|JM$`Tl?2~tdf5=-@m@=`XuV=gY3|L?mq8+3R|fW@2+|lz*Aj>4O}VA=IuBB*mLK8 za6cDy5!#QRFSb62; zwS@^7;|D9Iz8R81^te{kB(+Jet|@&IgS{J0%C#i>KKBFQjegj@UoZDaYCX1m-G`r< zCgq+U>d-AB>qj29nAoJEgEJ(Vmmc3C5mkKrl5zB_q|pWV@vEX!6~r_54l4{I0u2gB z2PNh=qjr{b;!f@ExZ%w_&ruYzC}WmUhDOqMUvhnxz!&w9x7&&qvcA{qfsr zvBZa5ArJSr$P_Uf`4-p}Eo=(T-; zpL&M&!68S6`$_t)#aNNwmyu!vW602G)@qC0M4$gX>#*NMR5E=B+hp4k{%wn~IbGlY zuSHQ%*-M6lq<=SmjUaH!k=I^hi%ETT2rHW;JVvlO4@X~Tcu#+GC|As@nA>ltIQwSB zxR{b+*oSv8<#|ng{z{oO&wwb%WTmzT;En@_xEY6I=4-P~CA@u0@1SbBs^i?Qah-JBG%iZN31?RC_C(*9$=)Px26(8UwC2EjAR~{E zky4S=iFG1Lpz%;vzX?~;^oKk6?ExwBFCChtWg<8i&TE7Xt`-wp1o_fC^-*W4mbQse zGB=yw-t>;mHSNqROtU5a2+M6fXfpqgfj&nhv}B}7UK40Pzo%5W2{yho7-2m-&(xVMcz1M7ME@7z%4W)0amgO>YkUBw=S$BIbma zxUgdL8cfmx!t~Oj&*7ZN>k1enDMoBh?e^21ZuR(Hq=n0Zv2CM0;Dk>^bn$7B44?DH~n46AGry3|5GNYMCui z*TCSsRGuc)EYotutfHU0nJqC((IymDapxucc(L7g8&;p@zfZd=7hL-&>TgH7B5+JC zbk6@aLJS?QAu+))$B3l-b~)nSR|Cv&m;N%b>_d&vdLiO4^lypM+*UKV|Hg5p&S+hy zW4g@&s}~sS7BPD+N%s{@aG#Fy1|k;pBS;nW;|Tjj#1n8>0$Yl8PHN zBaQy0f(Rl=Ae%5g!5PB4jM8bnM2l7p&Uw8W>1`InCtl!9&j%6pZU5+Ym{j+{yINul|0cos~+y-Bk~!C%gZ)K>%)yH23k z0a6Sukk6JA+OIhq>h4vL^8F{(k2rqDl9+gOH>ky!zv9oJyhMIvCJqjQ_;D6P;;E+)7@SDIk7?xCh_m@7*sAz+D4lmu!7iiq$$LV7Q$So- zW^h(3)|4nt4TlR5l~D{a#ijUK45puIY$u}BMnE$iy4Yat=s5QdhJG^+RMjPDG1<`S z3uu(brpZD&&1KoZ%9ShH|B`JfH#knWHmV&?^(qXc^(`?q>Pvs!RhY9Mwjd3ov2px* zBLZ}6QB82RX-o;-v1X~zZz_kryIJ?aK;syu8O?&ahjG_FoYGSY%Cqb}l{^ z9PQWSJkr^CWP6Tk^0?)|k3{?|B|<`mE}x5|roNt@8aZQ>2w!g*Q@SqKW&Jc5BwiA1 z<)eO%e*R)gW#{Du>@-$akJ5Y-ffZl@vkX%)Yna%3Y1jX78!fiCBl!7agH+pKaE9Ll zNSu97bO`9ARfpJP5s!tD<$^l{u%WeXgY?NrQ zaLbL3)QTOlx59@i;)y}gaZ6f0dQS?a&eX)Wo{{{N+!(+0VOGck;{j~2a#1yFJo~NQ z>Sb5bia|tU$=iogSCIKuCskG*4Zf;bcGErHnWF0BZfFLPZA5>t%pO12i_=T4bkQDB zw|27g0jTVZ?_ZzwR12PJ%!;)R?WU z@6Wkski@z03DYiOZ>>Qm>mE|$(u=|#=LX~L9!RpLC70Kv9i6>)g@-mi{hu{=r5}I- zOHU_C^w9w6&1nr=D}Hn!MgWIWN@@uWg~_7@*(L#|Eg$M(uGsCmuJ)Q)ZVsY_AGUOW z3JA1b3BIR+ISp;TnYr#?zvKhwe#A}EDA8k+1#B4%7QHrSA>A`;)r8rakWh1Ui+HRn zSIdj16nvY@UarKMMR|Ym2lbDF^5w^ZgdUZ~zX8?=w;$DgT3cT0gs387{b;#098LmG zZT!A+T9aILmgY3obcYPApzUAas}F&|u4Q$|7^!%O{#qLYimWdLvlE|bJvL{;%SfZ1OWZP)I;OUv(@;Hjtn3p zz+D1nJ2tKG8KJKg&(NX8aaZxLmnbU=h0w!_#Ix#UfN^V1jpwy%$7%4CyhNAyCM{M=KQ``Y6itgkDiEGkJ?FqXcK<-x(Mg;3sBIhJc-4B75}M~m76)cY%^;gBdc z#m_v&bmnI_KqTAwoWL0%{z~Llh9yw+qxhY7jX=m~qG)*H%15{YdTY3IQb)VLB@ZMu z*0v1TH{)LdD;Z|<*B2*w3e^tb9q~SW?75MYANs);g=a&;6H2RP%MZ7M@nQ}tS4N$Q zx&pmmzGkLU)xDpbDLDG&VE^m4AUbxG?V#L`kx|t*6>LB4QcnusmO1U9{qJy6DaXO$ zw`jp>w)W|!=YzwYJ-g%ic(I%~qqv>B$#Mjpxl~ifFIeBvRi{Y(!LyN^y~PTqg<@#^n|nee(L*6;bhOj zo2d6rsgE|!T-CSco=?dYx0Kp)+4Pmapm$gdE+0ZMk`38NX?sz zdUzuvvJbFx0{@G;+Gk-9hAJLVtRkO72(2foQD20HRLJhRqpv%#TEF#1lEU+0R5J91 zlxf{vY_D|R!nSFaFQxI0+PG84+e-}!y1WncrQxA0@OqN}%Rvj+AKetqV_(mi8=qF4 z^yo*Gu5-AXgiim1S}tMScidFXHl@7X1^954ruXSwWMtw94)Q~Waw=a!vr3l$8Utly zwjF%i3^NU%I-D%ZTDN&J1axLV=co)Dv1Jbpg^w+_Q%FZKH{(Iwv4F{MP(+>o;0?g$ zpy3R;ajZFUN*fD|CpHD!{Kr&V#R3$et;Xb>DbtC8VqQQSkI(QT1-+rZ?GeDU0aY*o zr9`3d{5A+gOJu#ua(eXnaVCcmd0yi){jM57DOzvX{1ytPh{?+h^<0dRlH)j%h4JUi zeHzO!%3%l=WHnD|ec&f~8oGl)b?fbLWA=gtBwbnFvkKFhkt6dDig=!X8qtgeCaj0y zWVN~}9l51F=B#C8mr}&(@^bvD{gCzgptsbAe*e4)QQCev^270+Ta%QE>gi&2x{bKj z`zAdTIrhTXh8Wwx=Po;p*CbEjT8Vs)qWhG(`VFq=qj{H8daex?yLZ?;eYVi)ahe$` zC>$1lbmL zOz$NDBZUN*ErW!$4q0nCmeYpKC?72Qj?qjs;apavSf_mEh%X6a|Q3>hd$7T8oHd&4A zZGW=U(VNXEVUhKuNV5G5r8-4QVnRtRx(QB=W=FOSkrO^oFH$1^BQ~qV7VjF0+k>b` z%lj!e#fyt&9}A<_-#WtCg)@SYfPhZmHcnCgqGqqbW5w`M95{*mv$RiZv|Yr>ps88!@ZCzTRT(s@M$uXn(Q4$Otemk^#bcc55JaC6o~w9I{m- zzpK@(n^SEw&Z(Ih9@P|C-oji*ZYQvo4lElLY{)tf!vVqDz6t9!40cm$jgL2k?#)Bz+#)4tdJk#6T9MCuBJbbQdgpwQ9d&y%N_*wnMrGH* z`8u>h1V+_6u;v`u^_MivX#-%NYJ)q@L_N?%u{LFFkB6(pJO!QVIv^f+m%~&#q0!B#Xpv0 zTtwR@-@r1a4~rn$W9;JutdtWUmzI#Lygi733~9s(4dKU9pfSfZYGQXv?fjkfUZt+jf+?wT~S!Mc9@Clb4q6K)0-SB)?T+!-H(V=lQyxv9a%b z{LJHAZpU8wG$KK&@7%|&iGts&FX#?bB_5yr?4iw+#K*OIvO0MwT?JhV_S{(Ow!%~r z=cUW06OKC!|v!zP6)$%|UyNO-B(X$wWE2 zw~D9l5PtqIRi|{J-DC>-$4ABw-E|{6b?2S>93u8mCbTmAGh>r1y zJz_xX1_nTc3@i)Uh^oX91q21R{bS=Y^%ipAieO;!MtbCcnxrJ31WK;R_1I1WWd9i~ z4FR!mp_@XIg$9q+p8;{}@^;|%gMlh3%~nC%gjXe%Ii}&MPyBZbj5+WX}S97P1$6oDb9Dj58+)vQtSws93s{|UFl2F_kjV7zA z6}5X;$SzmoPrIr-m)vu~`)`lEABHRuEisF_DHG=Td7d9f zDln(X)VEB63Sno5g-ObX3P4U*0cguW20=A|A6h7wJ*EACU}_8n20>t^li;>=g&Rb}`BHUm><; z_uJb&u4W!GvPVxYsUQ!+Kd5R5Hx#e4Tew4%A#B;%WX;*kh1LwciM;8-Bc@{%C38D&p-0o4;MRKnv3eU7>nI1MXdt+GS(G~vMDjLup z3Rh}ZFY##sa1Dr08*X^KocbK}TZDJBN6Y77jlRCv$mN;6R~F@X>g1D^h+I6Mrb_8Io1^5DbKGp!TOS49;V*AGodY44; z)ts6{IEW{eNtpnoX3Y}3!qyG%EfjZjEq-(z_;?F|SP4dY_EZnC61`~fhI+z~02Tq? zN(Xxn=pyXxY`8kDSrCC;_w{SU0vD8kPp#T<tGNw_>*bW;%vX`eU<&8_%Ic=mGxz(lQa3r#GgN&0$TCRD9AicKVf@jT z9?>n0Lz=(>j|-F*Vl?ABF08KA8;{b3`lsEy0aH1fd~V_#ZeaHf>E7p*+OFMWgkLiHt`zg%e!*|Dep%)t6i@N2 z;!tCTvjE*!x*nA*NcRV2R*gM?J$)=uAuZBRWpT<48yWNL2k@DId@~$_D)Q@820eFQ zkX!~_1OOx^Z%DPV0C57iXmA2)5PX(g|0D-nhwr*b`p!saa*ph$?V6C@`@QM)N?Z-c%h!QF(l8N08piH#eV@ zvL5+IYaWcpYqT6|>YjX=JFE8yQFPhU*R8kI@53d0eT7ciPj(8l^|B5aXIQ55cy#;+ z1eY@URJESnsp`XfNNDCEvuxnK`(G%T4ujGUl||W>MON)sXXg)r0)JSL{=HX#^VMv= zj@xam;+6=lvzC;9->DJ6bilC!G`rj`Nr5E6UQ4xQw?x*2B-FU!fmE3^v!oG$+J?io zfbVV8702LfIyZQ}Z|0KEI46bBM1cR#!ULY z0Pp~Uw%H8*-FuJeNnoRf69d|DhOavUu<8P{)!1U1euR6IR1Y|&ZkvMB*2Xq4fISA( zMWR9bIPS>wb;oyeo2wge3jFg;@}tH2hH>^U?Jz;4tsh-(5{|dkb{s#M=qKR8$pCx< zP6jv*z}3#SBpLmUC`~c?b&Uk8%XS*rPpJHyp!bE9-wkWnLY5uiW-NGD-|s9j%(YGi z5V6b_JN)^P+sspDNYW}470zihu16%JH z2%WfZ0z0VwXNTB0R>BAP66sXi2vaw+WSODG(;H*fHHX9=RL-Vw0Y5LwCYh2hQYt1# z^0_NKgOWtemVcX}QIZ#70lxiAy23GiAdtmL7=_1AnUnMF@?ffGGAs@qPbMCFc3oCo zV+NXmZS(u1P#o~B?f@%>zrXJwQIopOtH*%9zkJ#K3oP&FEZkqT(1z^>7T*G30ro2Z zdiXdKSfBw4U*k4YdEEY%6aCS++`oCprv83j`{nyuu+ycj9UB;L;NhakNMdV6!k;GK zYApheB!chYu!3l5WNsA%8|obS6(if*tG>q( zfp|*xi2EFO&GvrQY7lf<(uh(G@9IA)N$kB})W#&E0ngPqrg2?1m?jVGLf(s|my; zZe6Ip4CJwkMs!SNcG0iI`|NuGTa}3jK77>)d!N9!*8L|W$Rk^1N0Dq%EXT$)Ee3Nm zIl7W$Pd{CLFbH#SD4)G1&2O%4!2h=d(@)c(9K>SaSQ_R#z{K2LPaid;A3fEnAW=)% z|M^+81y#Ab%d`>({j8F05%Wb0}WmadrW< z1Xzu)vQs77^KqE~#|R|U)yuDh-K%I$dU3Kur|=@r$M*`tn9aFuv~sJ{Y!bsPV;TY5 z>-lW__q;-gyG{+y=3y!}OM87uso8n*OSk zn(si@-FlBL+61{Mw?5VkB~z-1f0K%pUmQg{!8g-;0Kc@p@Q&r5~rKGAjAE4BOi z7!(zGVFFEw9az>@3^Ls?w2?|=ZT~SFt?j71Jkbh6=W|=p!N*CedB5z-fU@!TAljC! z;=$iR8jbLBz6SUM~b zZ&|=mb@B3FzCWs`eD-*L?k;%D4(jU_EA8HM-ScCuFVZ`m@5b3!9?6%)t?w160|;-{ z_z)X%ftybd<^eikPwx##5jWcK`hOQc{0jaZ~3OvsvujYCR?I0E*3t@73FNJaF4!4z%V z&TcFBb`ykzm+C>O0)`HPl5G+)7m!ovIkS1iy6S3Ivllx6W1Y6uH>0vUO3B?!P|a1Y zCTGbhKVXFu@8;OU`k()aI|BtM* zjH+_&+BPC8g3=`|DBVhzAR*md(%q?mq|zWDU9tcbX;^d#3P=cogmj0bh=d^U&E%k|Hs#P%wQl6_liUuzxuciMk*o%w9& zWj3rz_4q7G^@RmPjGFEAp`PhivJAF_)M@8pFH!d)@}0>9mnNdl@B3zrd{Pp%Yj z?!HuSuBKZ}WMtf8zx4NgdZXQz?*iK6GU7I1@8h&qld2ewhvbCT-n?5jg}r&+@+gd{ zk2+H%n(?Bq3rCaaYF8JA2!jxK8b0dJ?%;M5=di-cleKIpFfG}s%TM{pYhf5e3&kSj zhT*CNA8Cqa@%9!~Z(3?{@tG3?SH-Z?AuR#En1W_XO~JB*;-*WbBV!Z}jQ7mfdl;hX zi-F8Dy&WWfd(*(T(GC4M4D{%W7UP1NzXlwP4@OVmV6-DbQtQi>c|<4;Ot_bQs-j&# zp1BtCz8Ujcsu=IX(7L(s)eK*1(jt+aWqTS+nZC}kxy+b^ky&bN%WA(ikCDTshQxd} z=eMZXZ^i(|UM*JQ+|yPK_(R#@MsRRyVkE$_S++2z7%-go_@Gk!=CUAvaN7&hj;z&P)?&jk4CE-(1^%)~h{-ej>QFiZc+zG0B^-7_bMuf{nV6maJ8^n#SQCI&_1a<+9-N%TcgZID$ur-feMl_Z& zEFZ$P6xmfuG&y!@w+j;b-?Bt~9*XPOY-637@ zi#c?P(Mwjc8{FVEYpiz}L?8Ns@k9Hal7jMt0ruZ&91&fM%woW7(?w3BR_xj9NsFM& z{~jOSS%^0|YdPBaY(NwD>!fVv%u(dV*N~lOJ%cCx&U3BKGZn=MHhN>f=-6jl8;Qml z+H$7c=`f6d^xf{$t(j(_4uoqSHyO#~@CGl66$aNo{4S8KzbjL0iHL1`88qJHKQD5b zc#@QXPG(1g52QVA&QE#L@+tOrOD^)Y1VC2-F%+b zvS{MIFVAjRGh19H-zpo7c<}DPz==|zoQ$30_IB#xXxR|A^A-V>>*nr*C=tFfOl94} zG*`5HMp?8!c`9yH9m-7{|W?ua- zJ9gY!YHZVahOh7|FJvn5&wfcC2USXbXtY>-^viM{fLe^oP7js!7yT>f*fWL~AP55m z!*+E7u~>UX@Aj+ZZaH5CiNBMn&(@++S~9iS-G5t`Qd;do#^fRta>AUCves-QZ`(SG zMgi@z14BWu{Ba?8rMb-gv-*=1H3J&AHFeZI;~{IDrYmT3f_HGl$dt(* z`7J$2^Vv#GrBV47M*dy3i}o#!KmPh8Ph)Knj=!20)kHZ)yjPS|eDdNjs>SwV$ zJt(=fyHPo@v)KeBOF}>hT##V7e;?ba;;vekbJI;^VLT@Q4ld9mZpkv5dE>r*j;Zc_S&Mx$3B`+dLcS!#g!_aVV^YfzzS`R!mG z0T;icx%n}906bZqbuj#Q4$E1#f0D14Pt^rTCmGtyk+-NMmgkOFBk9Gg()-c8Ak%ZfG0QmEIq08XQ*$K{uY=|G z+i_@42S{JAy{$R`7SKD_^=SK!%C+wvW=D|%wv0<3#Agk^Eb4oFaJ62=3@kv{i}WdN zthdnqZl3!H_iV>T2W9<}04_&Gk*IrT?_;aDP6t|*Z-f-LD22?P>;=4F|BU`_4fjlX z$PMZc3oa7v#ohq*$ctkpA9kFnJK&p-*xHcP8+)M@OaZ6|%x{R;aeq@D_GGs2Ej@_X z+FO1&JczOGPj%&Tqd(pfzfn?{BL6$Kl}j6(VdgZl^O~rQv*i_wd)Tj231rQy*f`CG zXDoQ^v0C@bIEfYmPR~9^W-A>0fL-bsd3m_G&Hl6PPcFIsKEeY=isb8!dtfHAflnJe zosWIHfa)zr;GA~93d&o?ld_S{Q6WcL!Hl~IUOn-O$!Ts$O`v!{vKCOU@U{aCKy`GV z^$R2^JKk7^<>|Xc^AN5b9}me=SEVjO4?Y;w{XwIiH$07%Eh{m3)tTi9C$sQM$!P@h zZhV)b$G#5(p)xx67Bfld{L@~uB?t|X5js17dvr|EPO%BPJr=gOx!hO@R5ASwtC#-s zbnTU=22pArW6f`beoFr~?V^=`Yi~(o{{4plhdiF`NUg1fplx1#i@f>M)%y~7y-_a! z#$!@mL4;@a;levZ4azFEBBS1LV@Af-_{iFiXIr&~=BBg{T)S!sF8%G=;-OFbBKdS9 zeD1(<{E9z!%E+-B{Uc$a1JlE84vCYZqOHWZeAT)6Z~9`1_Z&ZDf(0cQmeJ@UI+`&1b?@akRRRMfV*7aq#fr z8hb^2u#~AYdIcKwBR>(t(kPT#1xG?&#e*r%kX%*6^ZdMVRY9SlhBLr9{=&x z+zAM(?=6NRs$B{m@@%1TL5Azw-NPP4;z-@{U;7@(qfFWY&g_mgrhnzzbK9r#*5f`0yivW8DY(ip+-{ zh}cJB*LE(gl{Fg2=rLiKinD5|aPQUf`iB2;$gG(Y55S{Ne&Bms>>ScISpnRMt0)Jz%_XCy?PGB7q414n`g}YzgdBH9)Ed z8qtwA~(TOaSMw zb$!ZR~QssVHEUreId0B!h31=wMR$>O&46Zpl|}`4ZWT7%so9q&6+z znAQ6?mxxJ%b*Xi;b}Y=^etBf);T9XWDG%NQwiZfJ{fL$pZb)K-yFEko-NW_- zf_7&2LH&{f1;a4V$-!t#ilJsHJ#lZ&YT^`7q!0qW9sA(Vg!tC8u-8(xaP69+Ox%p# zUpla>{~H2=BnRZ+hy{Qj5M|XX)>%p>{^6d>_V^ewe737@7y1Jx2|>8mH2b&Ko%)0o zYO~h)W%cL4(+F;R8BuuWiW z;bQ$#@z~Rgx|WnpMY{7>kpzKl%2hZMfIAQDz%^>pZDxrNDEzKk*Rt!r4Ordr|EBn)E3D`az1*Dy{LkG&-w9!_l~nE{1s%eZp4Clu*It`|}9_ z!DvQM#1Vj#%EOxmT6|NKt7kQ*Ox7UdD#U95RI#=UnFiEA1W+Vx-$ZEWe_uv7h3q?R zWctO6VI3)J5mKEtrfH{lfC%jtbBoAkoEIY7P*TIRkn#1Yxbe#*_br6!Dy^CcO3`(M z0z7iFw(Aaai&x5~syJ>3T~=K`vH)pTrYQlH_lt&*DL4Ix@J( z!BaMn2R}ZdP`%ZBZJ*r3^J+!q_3N(_WcKZ6b6z}c=#bZ>D0jIg289GIWFYi@ee1p~McphkjN z>4McM*t17UQnWiQTJy*3T-imY)!PIoBpY48uZTR0?NC3VMtfKBdf)xWA&hWKGI5gZ@%GcbmV9&m zz}tlw*>~D`dA68ie`VgrWlM?D_T!kce%>65r9=AUB0=cgzlS>?FSJKBOeHw}wtc&Q z{aHJ5w*-O%K!S!74E)!G^us(scP9NUIDHcZ-FkX2U9oR?TQSBYiH>tMdYEmjH_EpM>Eho8ttyqo4!q=f6mtf68 zWaE{*ODMxQtXyX_t8~Ys+5%r0{5!!&`X1O2jn@nPpV#;0*V&|{=7!Q6vB0H97cXpC zT74j`Z<<+e&{XE%qAEGhM{fV#f9@{!_T(kfxp?~EaF5NepBLOl)#o1CR05{p0h(ZQiaGoxXDeIyg`hyLT@d*o zxvH&6`B1Il8>Q){K;nLxAwgTCMZK+-pfb*94h>P`Dm})?)vPS~1+uPEgWvhs;I*7^ zDRXJgro>B$i&e5hwVZn_-`gn4C#QS8*b8K+Ql6|4GEM1c4)OttJY(?jh9*nsDt#}( zBN3pJhflp{xO0nQHZ@VCrPFVAuN4iATQalFZV0>eqI~kc?$3_2m_`=jt8YR*{&{A2 z%I*e3JIPfXj<2}9jp^{?rRQ*PU&rBl3A|0ltcG61B@!K>rX;zU zrK0d!K(Lee^H=QUmXGlZY7?qh7MLx$2o1bnZb%*Rl+#qvxf-OswqrLaO3nTm?#D`4QcDJ_UW;Xs3mfA#hXnrk)pO7f|fo%ow7|l;AoUG{h9j7nc{PES@in7I3>{YVk z&mV*6E+(_O{buhL;|V;A$MrLlq7K&Ml&zb#{V*{5S7wxi73duMP1Uw3Un>iA)=v|f zwZ@h0OivC-O>{({18k)!Op(E8w41UrfZmd2h~xg!uKaKfgWJV_B(#Jk2KJ)C)X5YN z7*aLv?{{}RV8D_q(IDp>X4ysO&cf_@*dC^ixYFhL++(wFy#pQZDb>p5ehlq6&Fx-W zaGSsdkqZk~z`=g`GEP(l>XV1>wL`#yK_0}e7s=Upi$3Gl;4T4D0O^F_t)c^akIjnd z?f$P?eFyY}xw^-vFG2QF)A;gq9zf%@wL2Of6q{48+y-TYpN?~LSWmgq*3l02xO{o5 z{ph-rAWR_#ulAOve9~r)<=$P4exy>dcIGa2iWRuDJqfpA@LX}^(yhxP*3H?ukv>_ig=L~4s}z<<5LOL!i}9W9i%^` zE}>R~97lft_ai3j?AEIg>^@w)M8)J#*Cy4!~WxT2L_g~mC({!6>Cl>o2){U59PLc4R& zdgwrv1;+#+@y%S)JKQcRuc{8aTXg+6mtpDmn=1HdF3Ixu^}2+4^9P5w1;r`p*30PE z2uUA7=G)r>XJ~2vJ0B`0C5V{Zzfe3 zQTzeS)5eNxTu1zciuOtSkb-d{Ani#k;UtqmQkg&*A-96K6xw|q?Za`ugNVfdikHbq z=sqMyTIDvh!l(2Ucjl$Ccho<;xmY~op=F#Efo`8uqKcMcnb$D1nY`445W64|%ET@j zuhz$Iz?k)*H}hHArhVmsfO3{s&UlUb7EMuairiAgBs-?C4Df|J0E7cMT`)8ozL@;! zGSTpQP-<+RH_ht<<_qJUp9y43iYR`c@oUZaubVzSJ<9KZ9=I5jRD7M{y8C*i?kB?$ zF^g5sczQPDm+YLJ1k%Tv`>F0h0V1Op7^ancHw0`61x+ul{!;g53#qq_69rr!SEk1! zZgfB6OK<4lHxLwj238cs)+aZYd5Du`D${f5C&*|hY#RK*95 zF&lN#66egY!(guY?k3eZzKNua;!n$xt@K~yc-#fE>IlFURD1287Y$3xNqWLz+OjV< zMKOA+Q3o%K$MZ3FE*$u%O#C9t%(Vab64VkK^Ih(0T^=LaO{8zNh z+YG+3MD^qhDNoDEi9RUg!47xZJO(J^h?io>E7rS)^@_!pwRg;0aDs_a#5YDiN|oolX?D_>Fo%;X9bqU7{?0^ z3D?{hhkihlogDOclTBGMA&t$@$K7Qt!e%wLnD+7ImL!UASGyzYdm;w69HJ;WBJSIB z`s9(3tDLS$1h#3a$?`9gS?H=#MhC=Lji!G73PxchJLKR90)@Wfpjg%5;AX{4fuVp? z^H);vJU#in_#T{{5@lmdETe9jLNb4lPjHsO$Rh&Z8t5+9u2IUkyK5;MmMBgsFAXod z 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�xNRD<1_gwbp56fx?_JoDS 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 G_x}NJM{jHZ literal 0 HcmV?d00001 diff --git a/static/template_images/undraw_building_websites_i78t_1.png b/static/template_images/undraw_building_websites_i78t_1.png new file mode 100644 index 0000000000000000000000000000000000000000..64a9f6dbf74aaa8a05e37c15d367a46c9adfbc34 GIT binary patch literal 41716 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 z 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 AmjD0& literal 0 HcmV?d00001 From 754092bb5cb3588256db9b25c91c9ae93dfc8c46 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 30 Sep 2024 19:00:37 +0200 Subject: [PATCH 04/17] Image import --- content_manager/fixtures/sample.json | 19 - content_manager/fixtures/sample_2.json | 19 - content_manager/fixtures/sample_3.json | 2879 ----------------- ..._templates.py => export_page_templates.py} | 13 +- .../commands/import_page_templates.py | 19 + .../page_templates}/image_data.json | 35 +- .../page_templates/img}/Home.original.png | Bin .../img}/undraw_Website_builder_re_ii6e.png | Bin .../img}/undraw_building_websites_i78t_1.png | Bin .../page_templates/pages_data.json | 905 ++++++ content_manager/services/import_export.py | 94 +- 11 files changed, 1040 insertions(+), 2943 deletions(-) delete mode 100644 content_manager/fixtures/sample.json delete mode 100644 content_manager/fixtures/sample_2.json delete mode 100644 content_manager/fixtures/sample_3.json rename content_manager/management/commands/{export_templates.py => export_page_templates.py} (51%) create mode 100644 content_manager/management/commands/import_page_templates.py rename {static/template_images => content_manager/page_templates}/image_data.json (53%) rename {static/template_images => content_manager/page_templates/img}/Home.original.png (100%) rename {static/template_images => content_manager/page_templates/img}/undraw_Website_builder_re_ii6e.png (100%) rename {static/template_images => content_manager/page_templates/img}/undraw_building_websites_i78t_1.png (100%) create mode 100644 content_manager/page_templates/pages_data.json diff --git a/content_manager/fixtures/sample.json b/content_manager/fixtures/sample.json deleted file mode 100644 index f90f1fae..00000000 --- a/content_manager/fixtures/sample.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "model": "content_manager.contentpage", - "pk": 3, - "fields": { - "body": "[{\"id\": \"f042a295-04f9-43b7-b324-963104917b99\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"4d596a74-a9ad-400d-bc43-8e5bc87cfde6\", \"type\": \"text\", \"value\": \"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

\"}, {\"id\": \"c279336b-c2bd-42cf-a674-97e334a48151\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 63, \"title\": \"\", \"width\": \"\", \"caption\": \"L\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"beaf3105-5af7-424a-aa1c-fbecdb9f3cd2\", \"type\": \"text\", \"value\": \"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

\"}], \"bg_color_class\": \"grey\", \"sidemenu_title\": \"Menu lat\\u00e9ral\", \"sidemenu_content\": [{\"id\": \"ad019dcc-5f4b-4a68-9ef8-1f4e80f407f7\", \"type\": \"html\", \"value\": \"\"}]}}, {\"id\": \"c4a8bd8e-1ca3-44bc-8a9c-ce3c1feceefe\", \"type\": \"events_recent_entries\", \"value\": {\"title\": \"\\u00c9v\\u00e9nements r\\u00e9cents\", \"index_page\": 59, \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": false, \"author_filter\": null, \"entries_count\": 4, \"source_filter\": null, \"category_filter\": null}}, {\"id\": \"511da050-4920-401b-bc62-8ca53ad3bd4d\", \"type\": \"blog_recent_entries\", \"value\": {\"blog\": 6, \"title\": \"Actus\", \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": true, \"author_filter\": null, \"entries_count\": 3, \"source_filter\": 3, \"category_filter\": 3}}, {\"id\": \"7ea494aa-89a9-4965-8a37-bc277d70a27e\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 63, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Les boutons d\\u2019appel \\u00e0 action des cartes peuvent maintenant \\u00e9galement avoir des ic\\u00f4nes

\", \"heading_tag\": \"h2\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [{\"id\": \"6f0b342c-18d3-4ba4-a049-c605603d5db4\", \"type\": \"buttons\", \"value\": [{\"id\": \"e038ee8e-14bc-4a2c-a63c-7d8a0bbcd688\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 1\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-attachment-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"dfff96cd-faa2-4d94-8551-929c8ef79da6\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 2\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-bookmark-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"3478ae00-f351-485c-987a-907e0e645644\", \"type\": \"callout\", \"value\": {\"text\": \"\", \"color\": \"\", \"title\": \"De m\\u00eame pour ceux des mises en avant\", \"button\": {\"page\": null, \"text\": \"Bouton\", \"document\": 1, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-slideshow-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"fr-icon-community-line\", \"heading_tag\": \"h3\"}}, {\"id\": \"d1cba9b0-6018-4332-8d24-e85e92a65906\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"c747b7b2-9a0f-4880-b5c9-fbd535ed7dec\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Les appels \\u00e0 action peuvent maintenant avoir plusieurs boutons.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a2a37bed-e000-49b7-89a7-dc692d51e398\", \"type\": \"buttons\", \"value\": [{\"id\": \"a9996262-af55-40f9-9502-e799a492fb67\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton primaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hospital-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"b85b1d60-62a0-49f6-9f7b-99bee906f288\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton secondaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hotel-fill\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]}}], \"bg_image\": null, \"bg_color_class\": \"blue-france\"}}, {\"id\": \"2b6a6f07-0bfb-40a0-bf10-a1e732ad2f2f\", \"type\": \"paragraph\", \"value\": \"

En particulier, vous devrez :

  • Configurer le site dans Configuration > Configuration du site
  • Remplacer le contenu de la page de mentions l\\u00e9gales
  • Remplacer le contenu de cette page d\\u2019accueil.
\"}]", - "header_with_title": true, - "header_image": 63, - "header_color_class": "blue-france", - "header_large": false, - "header_darken": true, - "header_cta_text": "

Appel à action de l’en-tête :

  • C'est maintenant du texte riche
  • Il peut donc contenir du gras, de l’italique ou des listes à puces.
", - "header_cta_buttons": "[{\"id\": \"3d5d2c50-6b94-4ace-9138-374e11b84315\", \"type\": \"buttons\", \"value\": [{\"id\": \"086183f4-405f-43d6-9537-5a9470f7759a\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton principal\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-award-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"53228443-09d5-4fdd-86ed-2c4194f7bbce\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"En savoir plus\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-add-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - } -] diff --git a/content_manager/fixtures/sample_2.json b/content_manager/fixtures/sample_2.json deleted file mode 100644 index f90f1fae..00000000 --- a/content_manager/fixtures/sample_2.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "model": "content_manager.contentpage", - "pk": 3, - "fields": { - "body": "[{\"id\": \"f042a295-04f9-43b7-b324-963104917b99\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"4d596a74-a9ad-400d-bc43-8e5bc87cfde6\", \"type\": \"text\", \"value\": \"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

\"}, {\"id\": \"c279336b-c2bd-42cf-a674-97e334a48151\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 63, \"title\": \"\", \"width\": \"\", \"caption\": \"L\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"beaf3105-5af7-424a-aa1c-fbecdb9f3cd2\", \"type\": \"text\", \"value\": \"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

\"}], \"bg_color_class\": \"grey\", \"sidemenu_title\": \"Menu lat\\u00e9ral\", \"sidemenu_content\": [{\"id\": \"ad019dcc-5f4b-4a68-9ef8-1f4e80f407f7\", \"type\": \"html\", \"value\": \"
\"}]}}, {\"id\": \"c4a8bd8e-1ca3-44bc-8a9c-ce3c1feceefe\", \"type\": \"events_recent_entries\", \"value\": {\"title\": \"\\u00c9v\\u00e9nements r\\u00e9cents\", \"index_page\": 59, \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": false, \"author_filter\": null, \"entries_count\": 4, \"source_filter\": null, \"category_filter\": null}}, {\"id\": \"511da050-4920-401b-bc62-8ca53ad3bd4d\", \"type\": \"blog_recent_entries\", \"value\": {\"blog\": 6, \"title\": \"Actus\", \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": true, \"author_filter\": null, \"entries_count\": 3, \"source_filter\": 3, \"category_filter\": 3}}, {\"id\": \"7ea494aa-89a9-4965-8a37-bc277d70a27e\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 63, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Les boutons d\\u2019appel \\u00e0 action des cartes peuvent maintenant \\u00e9galement avoir des ic\\u00f4nes

\", \"heading_tag\": \"h2\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [{\"id\": \"6f0b342c-18d3-4ba4-a049-c605603d5db4\", \"type\": \"buttons\", \"value\": [{\"id\": \"e038ee8e-14bc-4a2c-a63c-7d8a0bbcd688\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 1\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-attachment-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"dfff96cd-faa2-4d94-8551-929c8ef79da6\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 2\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-bookmark-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"3478ae00-f351-485c-987a-907e0e645644\", \"type\": \"callout\", \"value\": {\"text\": \"\", \"color\": \"\", \"title\": \"De m\\u00eame pour ceux des mises en avant\", \"button\": {\"page\": null, \"text\": \"Bouton\", \"document\": 1, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-slideshow-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"fr-icon-community-line\", \"heading_tag\": \"h3\"}}, {\"id\": \"d1cba9b0-6018-4332-8d24-e85e92a65906\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"c747b7b2-9a0f-4880-b5c9-fbd535ed7dec\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Les appels \\u00e0 action peuvent maintenant avoir plusieurs boutons.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a2a37bed-e000-49b7-89a7-dc692d51e398\", \"type\": \"buttons\", \"value\": [{\"id\": \"a9996262-af55-40f9-9502-e799a492fb67\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton primaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hospital-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"b85b1d60-62a0-49f6-9f7b-99bee906f288\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton secondaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hotel-fill\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]}}], \"bg_image\": null, \"bg_color_class\": \"blue-france\"}}, {\"id\": \"2b6a6f07-0bfb-40a0-bf10-a1e732ad2f2f\", \"type\": \"paragraph\", \"value\": \"

En particulier, vous devrez :

  • Configurer le site dans Configuration > Configuration du site
  • Remplacer le contenu de la page de mentions l\\u00e9gales
  • Remplacer le contenu de cette page d\\u2019accueil.
\"}]", - "header_with_title": true, - "header_image": 63, - "header_color_class": "blue-france", - "header_large": false, - "header_darken": true, - "header_cta_text": "

Appel à action de l’en-tête :

  • C'est maintenant du texte riche
  • Il peut donc contenir du gras, de l’italique ou des listes à puces.
", - "header_cta_buttons": "[{\"id\": \"3d5d2c50-6b94-4ace-9138-374e11b84315\", \"type\": \"buttons\", \"value\": [{\"id\": \"086183f4-405f-43d6-9537-5a9470f7759a\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton principal\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-award-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"53228443-09d5-4fdd-86ed-2c4194f7bbce\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"En savoir plus\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-add-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - } -] diff --git a/content_manager/fixtures/sample_3.json b/content_manager/fixtures/sample_3.json deleted file mode 100644 index f14a7579..00000000 --- a/content_manager/fixtures/sample_3.json +++ /dev/null @@ -1,2879 +0,0 @@ -[ - { - "model": "wagtailcore.page", - "pk": 1, - "fields": { - "path": "0001", - "depth": 1, - "numchild": 1, - "translation_key": "d41bc552-dd67-40c1-ab0c-370787bf03f5", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Root", - "draft_title": "Root", - "slug": "root", - "content_type": [ - "wagtailcore", - "page" - ], - "url_path": "/", - "owner": null, - "seo_title": "", - "show_in_menus": false, - "search_description": "", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 3, - "fields": { - "path": "00010002", - "depth": 2, - "numchild": 12, - "translation_key": "36c1a45d-083c-4086-8ffd-93de57c0fad2", - "locale": 1, - "latest_revision": 141, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-01T14:35:53.089Z", - "last_published_at": "2024-09-24T09:35:24.924Z", - "live_revision": 141, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Accueil", - "draft_title": "Accueil", - "slug": "home", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Bienvenue ! Vous venez de créer un site utilisant le gestionnaire de contenus de l’État. Vous pouvez maintenant vous connecter […]", - "latest_revision_created_at": "2024-09-24T09:35:24.876Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 4, - "fields": { - "path": "000100020001", - "depth": 3, - "numchild": 0, - "translation_key": "f248da7d-eacc-4cba-8fd3-e38bf34e05ab", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Mentions légales", - "draft_title": "Mentions légales", - "slug": "mentions-legales", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/mentions-legales/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "D’après la documentation du système de design , le pied de page doit contenir a minima les quatre liens suivants […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 5, - "fields": { - "path": "000100020002", - "depth": 3, - "numchild": 0, - "translation_key": "047b6bdd-921a-428c-9ec1-49a3775428ba", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Déclaration d’accessibilité", - "draft_title": "Déclaration d’accessibilité", - "slug": "accessibilite", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/accessibilite/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 6, - "fields": { - "path": "000100020003", - "depth": 3, - "numchild": 4, - "translation_key": "af40e946-c3e9-4bd8-a7fe-8cd0cd1cc4a6", - "locale": 1, - "latest_revision": 49, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-04T07:50:22.826Z", - "last_published_at": "2024-07-09T16:41:15.003Z", - "live_revision": 49, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Actualités", - "draft_title": "Actualités", - "slug": "actualités", - "content_type": [ - "blog", - "blogindexpage" - ], - "url_path": "/home/actualités/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Bienvenue ! Vous trouverez ici nos dernières actualités […]", - "latest_revision_created_at": "2024-07-09T16:41:14.967Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 7, - "fields": { - "path": "000100020004", - "depth": 3, - "numchild": 32, - "translation_key": "61c2be39-673d-43cd-b5a4-33ecd457884f", - "locale": 1, - "latest_revision": 36, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-08T14:42:22.950Z", - "last_published_at": "2024-07-08T14:42:22.950Z", - "live_revision": 36, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Publications", - "draft_title": "Publications", - "slug": "publications", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Veuillez trouver ici une liste de publications […]", - "latest_revision_created_at": "2024-07-08T14:42:22.917Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 8, - "fields": { - "path": "0001000200040001", - "depth": 4, - "numchild": 0, - "translation_key": "059b3495-1599-422d-889c-598b50972f7b", - "locale": 1, - "latest_revision": 67, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-16T16:27:24.500Z", - "last_published_at": "2024-07-16T16:27:24.500Z", - "live_revision": 67, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Intégration superset", - "draft_title": "Intégration superset", - "slug": "page-1-1", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-1/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Roman désert français plaisir boire détail tombe. Mur bande perdu course. Roman désert français plaisir boire détail tombe. Mur bande […]", - "latest_revision_created_at": "2024-07-16T16:27:24.429Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 9, - "fields": { - "path": "0001000200040002", - "depth": 4, - "numchild": 2, - "translation_key": "b1226d7b-961e-4186-95ce-715f24a64ab0", - "locale": 1, - "latest_revision": 93, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-08-26T09:33:57.473Z", - "last_published_at": "2024-08-26T13:07:12.901Z", - "live_revision": 93, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page avec barre latérale", - "draft_title": "Page avec barre latérale", - "slug": "page-1-2", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-2/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Mêler possible accomplir besoin militaire. Garde apparence chaud craindre parfois. Commencer même armer attention vide soulever pitié. Mêler possible accomplir […]", - "latest_revision_created_at": "2024-08-26T13:07:12.858Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 10, - "fields": { - "path": "0001000200040003", - "depth": 4, - "numchild": 0, - "translation_key": "eec22d02-df0a-4b54-b500-afb03a46083b", - "locale": 1, - "latest_revision": 110, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-08-26T15:39:23.329Z", - "last_published_at": "2024-08-27T17:09:22.413Z", - "live_revision": 110, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Liste de cartes et tuiles", - "draft_title": "Liste de cartes et tuiles", - "slug": "page-1-3", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-3/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Retrouver joue chance que. Enfant printemps vous. Bureau choisir à exister accomplir protéger fait. Retrouver joue chance que. Enfant printemps […]", - "latest_revision_created_at": "2024-08-27T17:09:22.343Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 11, - "fields": { - "path": "0001000200040004", - "depth": 4, - "numchild": 0, - "translation_key": "924f050d-c53a-419c-abc6-c5a4282300a8", - "locale": 1, - "latest_revision": 122, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-08-30T09:21:28.072Z", - "last_published_at": "2024-09-02T16:24:40.775Z", - "live_revision": 122, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Gestion des cookies", - "draft_title": "Gestion des cookies", - "slug": "page-1-4", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-4/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Supporter auquel marier. Vision installer lueur entier supérieur sembler. Recevoir voisin tour mensonge interrompre. Supporter auquel marier. Vision installer lueur […]", - "latest_revision_created_at": "2024-09-02T16:24:40.730Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 12, - "fields": { - "path": "0001000200040005", - "depth": 4, - "numchild": 0, - "translation_key": "e540e576-cb50-49e8-b36c-8470a676125c", - "locale": 1, - "latest_revision": 127, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-09-03T15:04:49.161Z", - "last_published_at": "2024-09-04T08:50:12.578Z", - "live_revision": 127, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Onglets", - "draft_title": "Onglets", - "slug": "page-1-5", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-5/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Travailler cuisine se repas journal. Avec bête système notre pointe. Travailler cuisine se repas journal. Avec bête système notre pointe. […]", - "latest_revision_created_at": "2024-09-04T08:50:12.525Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 13, - "fields": { - "path": "0001000200040006", - "depth": 4, - "numchild": 0, - "translation_key": "1bdf22f5-9963-41ee-b947-d92cd729bfaa", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 1 - 6", - "draft_title": "Page 1 - 6", - "slug": "page-1-6", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-6/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Portier paysage abattre. Avenir grave jardin. Main savoir rire fumée. Portier paysage abattre. Avenir grave jardin. Main savoir rire fumée. […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 14, - "fields": { - "path": "0001000200040007", - "depth": 4, - "numchild": 0, - "translation_key": "62936eb8-d1e6-4c8f-9444-545017bf45a7", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 1 - 7", - "draft_title": "Page 1 - 7", - "slug": "page-1-7", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-7/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Ça inviter baisser salle tendre précis. Rêve présent main muet voiture. Ça inviter baisser salle tendre précis. Rêve présent main […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 15, - "fields": { - "path": "0001000200040008", - "depth": 4, - "numchild": 0, - "translation_key": "04d648d6-3cc5-41e3-b1a6-66012206efe5", - "locale": 1, - "latest_revision": 113, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-08-28T15:17:12.095Z", - "last_published_at": "2024-08-30T09:16:59.146Z", - "live_revision": 113, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Test indentation", - "draft_title": "Test indentation", - "slug": "page-1-8", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-8/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Rayon voler faute fauteuil épaule. Or confier jouer afin de aussi malgré immobile seul. Accompagner ne port exposer parti particulier […]", - "latest_revision_created_at": "2024-08-30T09:16:59.046Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 16, - "fields": { - "path": "0001000200040009", - "depth": 4, - "numchild": 0, - "translation_key": "68b41258-f4f1-405f-be34-485deaa89e32", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 1", - "draft_title": "Page 2 - 1", - "slug": "page-2-1", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-1/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille déclarer chat d'autres. Chasse avant feu. […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 17, - "fields": { - "path": "000100020004000A", - "depth": 4, - "numchild": 0, - "translation_key": "0617e775-c615-42be-90d3-bdfe177b1e0b", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 2", - "draft_title": "Page 2 - 2", - "slug": "page-2-2", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-2/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Avis toile vert aventure paquet lever. Souffler intérêt espérer ensemble causer. Avis toile vert aventure paquet lever. Souffler intérêt espérer […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 18, - "fields": { - "path": "000100020004000B", - "depth": 4, - "numchild": 0, - "translation_key": "b92a1158-9bd1-435a-b634-75f496fa5673", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 3", - "draft_title": "Page 2 - 3", - "slug": "page-2-3", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-3/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Joue gauche vue dix situation moitié faire. Craindre suivant mêler toucher quelque. Joue gauche vue dix situation moitié faire. Craindre […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 19, - "fields": { - "path": "000100020004000C", - "depth": 4, - "numchild": 0, - "translation_key": "512c11ef-5259-4f1a-a979-6ccbbf1efac2", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 4", - "draft_title": "Page 2 - 4", - "slug": "page-2-4", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-4/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors. Chasser affirmer charge agiter intelligence ouvert vouloir […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 20, - "fields": { - "path": "000100020004000D", - "depth": 4, - "numchild": 0, - "translation_key": "5c5e769a-45f1-496d-930b-deb18262ba26", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 5", - "draft_title": "Page 2 - 5", - "slug": "page-2-5", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-5/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Vin brûler boire désormais prétendre céder arrivée. Souffrance demain découvrir papa maladie naturel. Oiseau fête au. Vin brûler boire désormais […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 21, - "fields": { - "path": "000100020004000E", - "depth": 4, - "numchild": 0, - "translation_key": "85042673-5ca5-4c87-a881-09c81497c4d2", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 6", - "draft_title": "Page 2 - 6", - "slug": "page-2-6", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-6/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Phrase contenter siècle ici attitude taille chercher couvrir. Connaissance rien fidèle chiffre remercier avancer dont détacher. Gros nature fer. Phrase […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 22, - "fields": { - "path": "000100020004000F", - "depth": 4, - "numchild": 0, - "translation_key": "f20154b6-d3b9-4887-9828-ba503138b4ce", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 2 - 7", - "draft_title": "Page 2 - 7", - "slug": "page-2-7", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-7/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Adresser nation table air car briser savoir gros. Mais à valoir maison. Assurer sauver devoir rose suffire. Adresser nation table […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 23, - "fields": { - "path": "000100020004000G", - "depth": 4, - "numchild": 1, - "translation_key": "12927b12-e8dc-4436-b7ab-6e334c9d0b0f", - "locale": 1, - "latest_revision": 138, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-09-17T09:01:26.653Z", - "last_published_at": "2024-09-18T07:39:43.727Z", - "live_revision": 138, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page protégée par mot de passe", - "draft_title": "Page protégée par mot de passe", - "slug": "page-2-8", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-8/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter désespoir. Dominer du raison ou seuil. […]", - "latest_revision_created_at": "2024-09-18T07:39:43.683Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 24, - "fields": { - "path": "000100020004000H", - "depth": 4, - "numchild": 0, - "translation_key": "d3f385d6-64f0-42d5-afc6-8f18b202e2dc", - "locale": 1, - "latest_revision": 134, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-09-17T09:30:05.260Z", - "last_published_at": "2024-09-17T09:30:05.260Z", - "live_revision": 134, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page restreinte aux éditeurs", - "draft_title": "Page restreinte aux éditeurs", - "slug": "page-3-1", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-1/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Humain veille déposer secret paysan. Traîner exister état. Solitude appuyer extraordinaire année intérieur. Humain veille déposer secret paysan. Traîner exister […]", - "latest_revision_created_at": "2024-09-17T09:30:05.229Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 25, - "fields": { - "path": "000100020004000I", - "depth": 4, - "numchild": 0, - "translation_key": "167264cc-dd0c-4152-9768-bb5a4d7589cd", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 3 - 2", - "draft_title": "Page 3 - 2", - "slug": "page-3-2", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-2/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Parmi relation habitant plaisir haut tâche figurer. Baisser libre paupière arbre. Parmi relation habitant plaisir haut tâche figurer. Baisser libre […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 26, - "fields": { - "path": "000100020004000J", - "depth": 4, - "numchild": 0, - "translation_key": "15ef2a13-7fce-4cc8-9034-1bbfeee28554", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 3 - 3", - "draft_title": "Page 3 - 3", - "slug": "page-3-3", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-3/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Fixe plein enfant content ne prendre. Juste chercher quelqu'un. Fixe plein enfant content ne prendre. Juste chercher quelqu'un. Chaleur âge […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 27, - "fields": { - "path": "000100020004000K", - "depth": 4, - "numchild": 0, - "translation_key": "da3edf3a-ace4-4b55-a712-25fbbd72209d", - "locale": 1, - "latest_revision": 133, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-09-17T09:14:08.528Z", - "last_published_at": "2024-09-17T09:14:08.528Z", - "live_revision": 133, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page restreinte aux utilisateurs connectés", - "draft_title": "Page restreinte aux utilisateurs connectés", - "slug": "page-3-4", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-4/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers société ouvrage lutte. Terrible espoir entretenir […]", - "latest_revision_created_at": "2024-09-17T09:14:08.506Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 28, - "fields": { - "path": "000100020004000L", - "depth": 4, - "numchild": 1, - "translation_key": "bab0df35-12cc-4474-9a0b-02de7c940541", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 3 - 5", - "draft_title": "Page 3 - 5", - "slug": "page-3-5", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-5/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Pitié bête flot conscience trouver. Pitié bête flot conscience trouver. Prouver sol d'abord glisser froid poursuivre taille. Réunir exposer état […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 29, - "fields": { - "path": "000100020004000M", - "depth": 4, - "numchild": 0, - "translation_key": "02cf4704-1f25-4413-add8-5b0c642a806a", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 3 - 6", - "draft_title": "Page 3 - 6", - "slug": "page-3-6", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-6/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Marier voyager mur frère mêler position genre compagnie. Choisir tuer contenter officier vie. Mari état vaincre course. Marier voyager mur […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 30, - "fields": { - "path": "000100020004000N", - "depth": 4, - "numchild": 0, - "translation_key": "c4c3deca-1b5c-430d-94a8-46b345197002", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 3 - 7", - "draft_title": "Page 3 - 7", - "slug": "page-3-7", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-7/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Soldat falloir hier elle ajouter sueur répandre. Côte tomber encore il drame souvenir parcourir. Remonter as tourner militaire précéder. Soldat […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 31, - "fields": { - "path": "000100020004000O", - "depth": 4, - "numchild": 0, - "translation_key": "84812cca-7c3c-42c4-93b2-b6fd5230332c", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 3 - 8", - "draft_title": "Page 3 - 8", - "slug": "page-3-8", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-8/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Appeler billet dieu. Derrière léger bas marche plein produire. Appeler billet dieu. Derrière léger bas marche plein produire. Époque abattre […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 32, - "fields": { - "path": "000100020004000P", - "depth": 4, - "numchild": 0, - "translation_key": "7ab68869-1c3f-4f66-8472-5d2ad68f4442", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 1", - "draft_title": "Page 4 - 1", - "slug": "page-4-1", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-1/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Observer coeur dormir. Observer coeur dormir. Couvrir puis large et éclater loup. Tuer joue fonction partie place pourtant. Observer coeur […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 33, - "fields": { - "path": "000100020004000Q", - "depth": 4, - "numchild": 0, - "translation_key": "2f3b8dce-2083-4426-aca5-e503633764e1", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 2", - "draft_title": "Page 4 - 2", - "slug": "page-4-2", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-2/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Depuis séparer lit fier. Curieux après instant poids etc jambe ennemi. Quant À prix lorsque cruel bout annoncer ouvrir. Depuis […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 34, - "fields": { - "path": "000100020004000R", - "depth": 4, - "numchild": 0, - "translation_key": "9e5793c7-8632-485f-b5a9-3234a67ba928", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 3", - "draft_title": "Page 4 - 3", - "slug": "page-4-3", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-3/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "On aucun saisir bête cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire. On aucun saisir bête […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 35, - "fields": { - "path": "000100020004000S", - "depth": 4, - "numchild": 0, - "translation_key": "376577e9-69c5-47db-ac46-e887a64fb646", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 4", - "draft_title": "Page 4 - 4", - "slug": "page-4-4", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-4/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Point plan avancer plonger résister ministre. Doigt permettre pousser fonction. Point plan avancer plonger résister ministre. Doigt permettre pousser fonction. […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 36, - "fields": { - "path": "000100020004000T", - "depth": 4, - "numchild": 0, - "translation_key": "ba77cd95-0f73-41de-9ff5-9a4524c57492", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 5", - "draft_title": "Page 4 - 5", - "slug": "page-4-5", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-5/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Digne trop examiner prêter essuyer. Pour trou comment mon hôtel moyen larme. Voisin poursuivre moyen dos quel sourd lire. Digne […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 37, - "fields": { - "path": "000100020004000U", - "depth": 4, - "numchild": 0, - "translation_key": "d330c11a-f42b-41ef-9c74-e88f6417de2b", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 6", - "draft_title": "Page 4 - 6", - "slug": "page-4-6", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-6/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Étude ci mauvais suivant trace. Approcher maison oser on. Soirée lit grand de million vert changement. Étude ci mauvais suivant […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 38, - "fields": { - "path": "000100020004000V", - "depth": 4, - "numchild": 0, - "translation_key": "f87606dc-31ab-424d-963e-b556793b1a21", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 7", - "draft_title": "Page 4 - 7", - "slug": "page-4-7", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-7/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Nécessaire cela état énorme. Jeune choix trop sous celui. Nécessaire cela état énorme. Jeune choix trop sous celui. Propre sonner […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 39, - "fields": { - "path": "000100020004000W", - "depth": 4, - "numchild": 0, - "translation_key": "c270a2be-9a25-46a7-bd26-2ce0445dfca7", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Page 4 - 8", - "draft_title": "Page 4 - 8", - "slug": "page-4-8", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-4-8/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "Lien moins admettre mais métier absolument rompre. Deux professeur précis intérieur. Lien moins admettre mais métier absolument rompre. Deux professeur […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 44, - "fields": { - "path": "000100020006", - "depth": 3, - "numchild": 0, - "translation_key": "756c7581-a1cd-4ee6-a15d-0d87c6eb4722", - "locale": 1, - "latest_revision": 7, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-06-27T08:17:22.479Z", - "last_published_at": "2024-06-27T08:17:41.386Z", - "live_revision": 7, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Contactez-nous", - "draft_title": "Contactez-nous", - "slug": "contactez-nous", - "content_type": [ - "forms", - "formpage" - ], - "url_path": "/home/contactez-nous/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": true, - "search_description": "", - "latest_revision_created_at": "2024-06-27T08:17:41.340Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 49, - "fields": { - "path": "000100020007", - "depth": 3, - "numchild": 0, - "translation_key": "e57ec700-1dff-48db-8e68-488cc369c1d2", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Contact", - "draft_title": "Contact", - "slug": "contact", - "content_type": [ - "forms", - "formpage" - ], - "url_path": "/home/contact/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 53, - "fields": { - "path": "000100020008", - "depth": 3, - "numchild": 1, - "translation_key": "2f1b9e00-3c45-446d-9dcc-4868d70c3369", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Pages d’exemple", - "draft_title": "Pages d’exemple", - "slug": "menu_page", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/menu_page/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": " […]", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 54, - "fields": { - "path": "0001000200080001", - "depth": 4, - "numchild": 0, - "translation_key": "dd229b39-7fb4-4c57-af39-1ab4eda5d1c3", - "locale": 1, - "latest_revision": null, - "live": true, - "has_unpublished_changes": false, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Formulaire avec tous les champs", - "draft_title": "Formulaire avec tous les champs", - "slug": "form_with_all_fields", - "content_type": [ - "forms", - "formpage" - ], - "url_path": "/home/menu_page/form_with_all_fields/", - "owner": null, - "seo_title": "", - "show_in_menus": true, - "search_description": "", - "latest_revision_created_at": null, - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 55, - "fields": { - "path": "0001000200030001", - "depth": 4, - "numchild": 0, - "translation_key": "61a1606a-f733-4228-8f40-1445b513fe25", - "locale": 1, - "latest_revision": 38, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-03T15:45:32.455Z", - "last_published_at": "2024-07-08T14:46:31.295Z", - "live_revision": 38, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "L’État lance une communauté numérique des ingénieurs des grands corps techniques afin de répondre aux enjeux d’attractivité et de fidélisation au sein de la filière numérique de l’État", - "draft_title": "L’État lance une communauté numérique des ingénieurs des grands corps techniques afin de répondre aux enjeux d’attractivité et de fidélisation au sein de la filière numérique de l’État", - "slug": "létat-lance-une-communauté-numérique-des-ingénieurs-des-grands-corps-techniques-afin-de-répondre-aux-enjeux-dattractivité-et-de-fidélisation-au-sein-de-la-filière-numérique-de-létat", - "content_type": [ - "blog", - "blogentrypage" - ], - "url_path": "/home/actualités/létat-lance-une-communauté-numérique-des-ingénieurs-des-grands-corps-techniques-afin-de-répondre-aux-enjeux-dattractivité-et-de-fidélisation-au-sein-de-la-filière-numérique-de-létat/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Le renforcement du pilotage et la valorisation des compétences sont des priorités absolues de l’État pour réussir ses grands chantiers […]", - "latest_revision_created_at": "2024-07-08T14:46:31.207Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 56, - "fields": { - "path": "0001000200030002", - "depth": 4, - "numchild": 0, - "translation_key": "4cefeffe-21ba-40b7-baf9-2e987fcfe103", - "locale": 1, - "latest_revision": 42, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-03T16:01:37.470Z", - "last_published_at": "2024-07-08T16:42:59.200Z", - "live_revision": 42, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Dites-le-nous une fois : l’État simplifie les démarches des citoyens en automatisant la transmission du quotient familial CAF et MSA vers les autres administrations", - "draft_title": "Dites-le-nous une fois : l’État simplifie les démarches des citoyens en automatisant la transmission du quotient familial CAF et MSA vers les autres administrations", - "slug": "dites-le-nous-une-fois-létat-simplifie-les-démarches-des-citoyens-en-automatisant-la-transmission-du-quotient-familial-caf-et-msa-vers-les-autres-administrations", - "content_type": [ - "blog", - "blogentrypage" - ], - "url_path": "/home/actualités/dites-le-nous-une-fois-létat-simplifie-les-démarches-des-citoyens-en-automatisant-la-transmission-du-quotient-familial-caf-et-msa-vers-les-autres-administrations/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Pour garantir des services publics plus simples, accessibles et efficaces, l’État doit pouvoir s’appuyer pleinement sur la puissance du numérique […]", - "latest_revision_created_at": "2024-07-08T16:42:59.163Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 57, - "fields": { - "path": "0001000200030003", - "depth": 4, - "numchild": 0, - "translation_key": "80f0b3ee-50dc-48ed-9994-9f1213d5450c", - "locale": 1, - "latest_revision": 87, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-03T16:03:21.069Z", - "last_published_at": "2024-07-24T15:35:39.715Z", - "live_revision": 87, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Retour sur « l’État dans le nuage » : une journée dédiée au Cloud dans la sphère publique", - "draft_title": "Retour sur « l’État dans le nuage » : une journée dédiée au Cloud dans la sphère publique", - "slug": "retour-sur-létat-dans-le-nuage-une-journée-dédiée-au-cloud-dans-la-sphère-publique", - "content_type": [ - "blog", - "blogentrypage" - ], - "url_path": "/home/actualités/retour-sur-létat-dans-le-nuage-une-journée-dédiée-au-cloud-dans-la-sphère-publique/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "La DINUM conviait tous les acteurs de l’écosystème Cloud le 5 mars dernier, en présence de témoins de haut niveau, […]", - "latest_revision_created_at": "2024-07-24T15:35:39.664Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 58, - "fields": { - "path": "0001000200030004", - "depth": 4, - "numchild": 0, - "translation_key": "0671bbbd-1717-4c6d-a7e2-80b18a81c989", - "locale": 1, - "latest_revision": 46, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-09T12:28:26.368Z", - "last_published_at": "2024-07-09T12:28:26.368Z", - "live_revision": 46, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Cloud : série de témoignages portant sur les succès du cloud public", - "draft_title": "Cloud : série de témoignages portant sur les succès du cloud public", - "slug": "cloud-série-de-témoignages-portant-sur-les-succès-du-cloud-public", - "content_type": [ - "blog", - "blogentrypage" - ], - "url_path": "/home/actualités/cloud-série-de-témoignages-portant-sur-les-succès-du-cloud-public/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "L’informatique en nuage (Cloud computing) est une formidable opportunité pour accélérer la transformation numérique des administrations. Après la publication de […]", - "latest_revision_created_at": "2024-07-09T12:28:26.310Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 59, - "fields": { - "path": "000100020009", - "depth": 3, - "numchild": 7, - "translation_key": "ac74c561-8ea6-4ef7-9da2-c4a2af0c9eea", - "locale": 1, - "latest_revision": 74, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-15T13:34:17.207Z", - "last_published_at": "2024-07-23T10:01:47.166Z", - "live_revision": 74, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Agenda", - "draft_title": "Agenda", - "slug": "agenda", - "content_type": [ - "events", - "eventsindexpage" - ], - "url_path": "/home/agenda/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": true, - "search_description": "aa […]", - "latest_revision_created_at": "2024-07-23T10:01:47.123Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 60, - "fields": { - "path": "0001000200090001", - "depth": 4, - "numchild": 0, - "translation_key": "9d1f94bf-53f2-44e7-ad05-5bb399b37488", - "locale": 1, - "latest_revision": 69, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-15T14:11:30.945Z", - "last_published_at": "2024-07-17T16:27:41.693Z", - "live_revision": 69, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Formation à l'écoconception", - "draft_title": "Formation à l'écoconception", - "slug": "formation-à-lécoconception-17-septembre-2024", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/formation-à-lécoconception-17-septembre-2024/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Vous êtes un agent public travaillant dans le numérique et les sujets environnementaux vous intéressent ? Participez à la formation […]", - "latest_revision_created_at": "2024-07-17T16:27:41.637Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 61, - "fields": { - "path": "0001000200090002", - "depth": 4, - "numchild": 0, - "translation_key": "9f33ef5e-7591-4fcf-83b4-970e5a7e82a1", - "locale": 1, - "latest_revision": 64, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-15T15:59:27.806Z", - "last_published_at": "2024-07-15T16:01:56.795Z", - "live_revision": 64, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Événement dans le passé", - "draft_title": "Événement dans le passé", - "slug": "événement-dans-le-passé", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/événement-dans-le-passé/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Cet événement a déjà eu lieu. […]", - "latest_revision_created_at": "2024-07-15T16:01:56.757Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 62, - "fields": { - "path": "0001000200090003", - "depth": 4, - "numchild": 0, - "translation_key": "998a7e46-fa5d-437e-9c14-a43f1609be79", - "locale": 1, - "latest_revision": 90, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-22T15:12:14.282Z", - "last_published_at": "2024-07-25T14:16:34.017Z", - "live_revision": 90, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Webinaire de présentation de La Suite numérique de l’État", - "draft_title": "Webinaire de présentation de La Suite numérique de l’État", - "slug": "webinaire-de-présentation-de-la-suite-numérique-de-létat", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/webinaire-de-présentation-de-la-suite-numérique-de-létat/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Agents publics, rejoignez la communauté de La Suite numérique pour apprendre à utiliser les applications à la carte et interconnectées […]", - "latest_revision_created_at": "2024-07-25T14:16:33.935Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 63, - "fields": { - "path": "0001000200090004", - "depth": 4, - "numchild": 0, - "translation_key": "d092dbb0-a6f3-42e8-9717-e9d9314dc724", - "locale": 1, - "latest_revision": 72, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-22T15:17:35.668Z", - "last_published_at": "2024-07-22T15:18:06.230Z", - "live_revision": 72, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "La DINUM partenaire de Numérique en Commun[s] à Chambéry", - "draft_title": "La DINUM partenaire de Numérique en Commun[s] à Chambéry", - "slug": "la-dinum-partenaire-de-numérique-en-communs-à-chambéry", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/la-dinum-partenaire-de-numérique-en-communs-à-chambéry/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "La DINUM est partenaire de Numérique en Commun[s] qui se tiendra du 24 au 26 septembre à Chambéry. L’objectif de […]", - "latest_revision_created_at": "2024-07-22T15:18:06.164Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 64, - "fields": { - "path": "0001000200090005", - "depth": 4, - "numchild": 0, - "translation_key": "a81cb3ab-2e10-46d2-83cb-01faa74a34a3", - "locale": 1, - "latest_revision": 73, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-23T09:52:09.625Z", - "last_published_at": "2024-07-23T09:52:09.625Z", - "live_revision": 73, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Journée Numérique & Territoires", - "draft_title": "Journée Numérique & Territoires", - "slug": "journée-numérique-territoires", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/journée-numérique-territoires/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "La direction interministérielle du numérique (DINUM) et l’Agence nationale de la cohésion des territoires (ANCT) organisent la 2ème édition “Journée […]", - "latest_revision_created_at": "2024-07-23T09:52:09.576Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 65, - "fields": { - "path": "0001000200090006", - "depth": 4, - "numchild": 0, - "translation_key": "63eb5c09-1de9-4271-94d7-20b2bed99b7a", - "locale": 1, - "latest_revision": 79, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-24T14:38:05.618Z", - "last_published_at": "2024-07-24T14:38:28.929Z", - "live_revision": 79, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Événement loin dans le passé", - "draft_title": "Événement loin dans le passé", - "slug": "événement-loin-dans-le-passé", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/événement-loin-dans-le-passé/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Cet événement a déjà eu lieu. […]", - "latest_revision_created_at": "2024-07-24T14:38:28.885Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 66, - "fields": { - "path": "0001000200090007", - "depth": 4, - "numchild": 0, - "translation_key": "002ffccd-f083-4736-a0b6-03c9f0455eb5", - "locale": 1, - "latest_revision": 85, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-07-24T14:41:15.742Z", - "last_published_at": "2024-07-24T14:41:52.265Z", - "live_revision": 85, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Événement encore plus loin dans le passé", - "draft_title": "Événement encore plus loin dans le passé", - "slug": "événement-encore-plus-loin-dans-le-passé", - "content_type": [ - "events", - "evententrypage" - ], - "url_path": "/home/agenda/événement-encore-plus-loin-dans-le-passé/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Cet événement a déjà eu lieu. […]", - "latest_revision_created_at": "2024-07-24T14:41:52.222Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 67, - "fields": { - "path": "00010002000400020001", - "depth": 5, - "numchild": 0, - "translation_key": "eacad201-3656-48bd-904f-a4976f9efe51", - "locale": 1, - "latest_revision": 95, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-08-26T13:11:14.797Z", - "last_published_at": "2024-08-26T13:11:25.687Z", - "live_revision": 95, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Chapitre 2", - "draft_title": "Chapitre 2", - "slug": "chapitre-2", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-2/chapitre-2/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": true, - "search_description": "Dans cette rubrique Publications Intégration superset Page avec barre latérale Page 1 - 3 Page 1 - 4 Page 1 […]", - "latest_revision_created_at": "2024-08-26T13:11:25.655Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 68, - "fields": { - "path": "00010002000400020002", - "depth": 5, - "numchild": 0, - "translation_key": "a92f934a-e23e-43de-9fb6-e0d14a19ee01", - "locale": 1, - "latest_revision": 97, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-08-26T13:12:23.826Z", - "last_published_at": "2024-08-26T13:12:37.948Z", - "live_revision": 97, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Chapitre 3", - "draft_title": "Chapitre 3", - "slug": "chapitre-3", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-1-2/chapitre-3/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": true, - "search_description": "Dans cette rubrique Publications Intégration superset Page avec barre latérale Chapitre 2 Page 1 - 3 Page 1 - 4 […]", - "latest_revision_created_at": "2024-08-26T13:12:37.892Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 69, - "fields": { - "path": "000100020004000L0001", - "depth": 5, - "numchild": 0, - "translation_key": "0b9418e2-1db5-485a-9bf2-66ec336574b6", - "locale": 1, - "latest_revision": 131, - "live": false, - "has_unpublished_changes": true, - "first_published_at": null, - "last_published_at": null, - "live_revision": null, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Brouillon", - "draft_title": "Brouillon", - "slug": "brouillon", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-3-5/brouillon/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Cette page restera en brouillon […]", - "latest_revision_created_at": "2024-09-11T10:17:23.367Z", - "alias_of": null - } - }, - { - "model": "wagtailcore.page", - "pk": 70, - "fields": { - "path": "000100020004000G0001", - "depth": 5, - "numchild": 0, - "translation_key": "2e87a4c4-16a0-4242-a74d-aeb036a61405", - "locale": 1, - "latest_revision": 135, - "live": true, - "has_unpublished_changes": false, - "first_published_at": "2024-09-17T10:20:28.436Z", - "last_published_at": "2024-09-17T10:20:28.436Z", - "live_revision": 135, - "go_live_at": null, - "expire_at": null, - "expired": false, - "locked": false, - "locked_at": null, - "locked_by": null, - "title": "Sous-page de la page protégée par mot de passe.", - "draft_title": "Sous-page de la page protégée par mot de passe.", - "slug": "sous-page-de-la-page-protégée-par-mot-de-passe", - "content_type": [ - "content_manager", - "contentpage" - ], - "url_path": "/home/publications/page-2-8/sous-page-de-la-page-protégée-par-mot-de-passe/", - "owner": [ - "ashig" - ], - "seo_title": "", - "show_in_menus": false, - "search_description": "Page vide. […]", - "latest_revision_created_at": "2024-09-17T10:20:28.409Z", - "alias_of": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 3, - "fields": { - "body": "[{\"id\": \"f042a295-04f9-43b7-b324-963104917b99\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"4d596a74-a9ad-400d-bc43-8e5bc87cfde6\", \"type\": \"text\", \"value\": \"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

\"}, {\"id\": \"c279336b-c2bd-42cf-a674-97e334a48151\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 63, \"title\": \"\", \"width\": \"\", \"caption\": \"L\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"beaf3105-5af7-424a-aa1c-fbecdb9f3cd2\", \"type\": \"text\", \"value\": \"

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

\"}], \"bg_color_class\": \"grey\", \"sidemenu_title\": \"Menu lat\\u00e9ral\", \"sidemenu_content\": [{\"id\": \"ad019dcc-5f4b-4a68-9ef8-1f4e80f407f7\", \"type\": \"html\", \"value\": \"
\"}]}}, {\"id\": \"c4a8bd8e-1ca3-44bc-8a9c-ce3c1feceefe\", \"type\": \"events_recent_entries\", \"value\": {\"title\": \"\\u00c9v\\u00e9nements r\\u00e9cents\", \"index_page\": 59, \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": false, \"author_filter\": null, \"entries_count\": 4, \"source_filter\": null, \"category_filter\": null}}, {\"id\": \"511da050-4920-401b-bc62-8ca53ad3bd4d\", \"type\": \"blog_recent_entries\", \"value\": {\"blog\": 6, \"title\": \"Actus\", \"tag_filter\": null, \"heading_tag\": \"h2\", \"show_filters\": true, \"author_filter\": null, \"entries_count\": 3, \"source_filter\": 3, \"category_filter\": 3}}, {\"id\": \"7ea494aa-89a9-4965-8a37-bc277d70a27e\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 63, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Les boutons d\\u2019appel \\u00e0 action des cartes peuvent maintenant \\u00e9galement avoir des ic\\u00f4nes

\", \"heading_tag\": \"h2\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [{\"id\": \"6f0b342c-18d3-4ba4-a049-c605603d5db4\", \"type\": \"buttons\", \"value\": [{\"id\": \"e038ee8e-14bc-4a2c-a63c-7d8a0bbcd688\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 1\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-attachment-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"dfff96cd-faa2-4d94-8551-929c8ef79da6\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton 2\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-bookmark-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"3478ae00-f351-485c-987a-907e0e645644\", \"type\": \"callout\", \"value\": {\"text\": \"\", \"color\": \"\", \"title\": \"De m\\u00eame pour ceux des mises en avant\", \"button\": {\"page\": null, \"text\": \"Bouton\", \"document\": 1, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-slideshow-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"fr-icon-community-line\", \"heading_tag\": \"h3\"}}, {\"id\": \"d1cba9b0-6018-4332-8d24-e85e92a65906\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"c747b7b2-9a0f-4880-b5c9-fbd535ed7dec\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Les appels \\u00e0 action peuvent maintenant avoir plusieurs boutons.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a2a37bed-e000-49b7-89a7-dc692d51e398\", \"type\": \"buttons\", \"value\": [{\"id\": \"a9996262-af55-40f9-9502-e799a492fb67\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton primaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hospital-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"b85b1d60-62a0-49f6-9f7b-99bee906f288\", \"type\": \"button\", \"value\": {\"page\": 7, \"text\": \"Bouton secondaire\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-hotel-fill\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]}}], \"bg_image\": null, \"bg_color_class\": \"blue-france\"}}, {\"id\": \"2b6a6f07-0bfb-40a0-bf10-a1e732ad2f2f\", \"type\": \"paragraph\", \"value\": \"

En particulier, vous devrez :

  • Configurer le site dans Configuration > Configuration du site
  • Remplacer le contenu de la page de mentions l\\u00e9gales
  • Remplacer le contenu de cette page d\\u2019accueil.
\"}]", - "header_with_title": true, - "header_image": 63, - "header_color_class": "blue-france", - "header_large": false, - "header_darken": true, - "header_cta_text": "

Appel à action de l’en-tête :

  • C'est maintenant du texte riche
  • Il peut donc contenir du gras, de l’italique ou des listes à puces.
", - "header_cta_buttons": "[{\"id\": \"3d5d2c50-6b94-4ace-9138-374e11b84315\", \"type\": \"buttons\", \"value\": [{\"id\": \"086183f4-405f-43d6-9537-5a9470f7759a\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"Bouton principal\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-award-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}, {\"id\": \"53228443-09d5-4fdd-86ed-2c4194f7bbce\", \"type\": \"button\", \"value\": {\"page\": 5, \"text\": \"En savoir plus\", \"document\": null, \"icon_side\": \"fr-btn--icon-right\", \"icon_class\": \"fr-icon-add-line\", \"button_type\": \"fr-btn fr-btn--secondary\", \"external_url\": \"\"}}]}]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 4, - "fields": { - "body": "[{\"id\": \"80f8f8d0-2cdf-418b-9a50-f91288c4d7da\", \"type\": \"alert\", \"value\": {\"level\": \"info\", \"title\": \"Mentions l\\u00e9gales\", \"description\": \"Entrez ici les mentions l\\u00e9gales du site.
\\n
\\n Que doivent-elles obligatoirement contenir\\u00a0?\", \"heading_tag\": \"h2\"}}, {\"id\": \"40aaa3f5-d8a1-4b81-a332-56a21c8cbd67\", \"type\": \"paragraph\", \"value\": \"\\n

D\\u2019apr\\u00e8s la documentation du syst\\u00e8me de design,\\n le pied de page doit contenir a minima les quatre liens suivants :

\\n
    \\n
  • Accessibilit\\u00e9 : non/partiellement/totalement conforme
  • \\n
  • Mentions l\\u00e9gales
  • \\n
  • Donn\\u00e9es personnelles
  • \\n
  • Gestion des cookies
  • \\n
\\n

Ces deux derniers peuvent pointer vers des pages \\u00e0 part enti\\u00e8re ou des sections de cette page.

\\n \"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 5, - "fields": { - "body": "[{\"id\": \"2da507b3-d101-4513-8a22-10d232621893\", \"type\": \"alert\", \"value\": {\"level\": \"info\", \"title\": \"D\\u00e9claration d\\u2019accessibilit\\u00e9\", \"description\": \"Entrez ici la d\\u00e9claration d\\u2019accessibilit\\u00e9.
\\n \\n G\\u00e9n\\u00e9rateur de d\\u00e9claration d\\u2019accessibilit\\u00e9\", \"heading_tag\": \"h2\"}}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 7, - "fields": { - "body": "[{\"id\": \"9ecba372-c63f-4bbd-9526-df96bce841ab\", \"type\": \"subpageslist\", \"value\": null}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 8, - "fields": { - "body": "[{\"id\": \"3993aeee-3abf-495d-b943-fa7e12bb1e68\", \"type\": \"iframe\", \"value\": {\"url\": \"https://superset-opi.lab.sspcloud.fr/superset/dashboard/4/?standalone=true&native_filters_key=nvGJtoonMO4grK1O84e0rt2qVN_BcH-gpNN8MJefnQfH_YOBjArK6XP8EiyTz92e\", \"title\": \"Tableau de bord d\\u2019exemple\", \"height\": 800, \"parameters\": \"\"}}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 9, - "fields": { - "body": "[{\"id\": \"6869f659-52e1-498c-ade2-f96bfeb8fb25\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"902c2d60-12a1-414c-a5a6-8fcd9f1104b2\", \"type\": \"text\", \"value\": \"

Le nom de famille de mon p\\u00e8re \\u00e9tant Pirrip, et mon nom de bapt\\u00eame Philip, ma langue enfantine ne put jamais former de ces deux mots rien de plus long et de plus explicite que Pip. C\\u2019est ainsi que je m\\u2019appelai moi-m\\u00eame Pip, et que tout le monde m\\u2019appela Pip.

Si je donne Pirrip comme le nom de famille de mon p\\u00e8re, c\\u2019est d\\u2019apr\\u00e8s l\\u2019autorit\\u00e9 de l\\u2019\\u00e9pitaphe de son tombeau, et l\\u2019attestation de ma s\\u0153ur, Mrs Joe Gargery, qui a \\u00e9pous\\u00e9 le forgeron. N\\u2019ayant jamais vu ni mon p\\u00e8re, ni ma m\\u00e8re, m\\u00eame en portrait puisqu\\u2019ils vivaient bien avant les photographes, la premi\\u00e8re id\\u00e9e que je me formai de leur personne fut tir\\u00e9e, avec assez peu de raison, du reste, de leurs pierres tumulaires. La forme des lettres trac\\u00e9es sur celle de mon p\\u00e8re me donna l\\u2019id\\u00e9e bizarre que c\\u2019\\u00e9tait un homme brun, fort, carr\\u00e9, ayant les cheveux noirs et fris\\u00e9s. De la tournure et des caract\\u00e8res de cette inscription\\u00a0: Et aussi Georgiana, \\u00e9pouse du ci-dessus, je tirai la conclusion enfantine que ma m\\u00e8re avait \\u00e9t\\u00e9 une femme faible et maladive. Les cinq petites losanges de pierre, d\\u2019environ un pied et demi de longueur, qui \\u00e9taient rang\\u00e9es avec soin \\u00e0 c\\u00f4t\\u00e9 de leur tombe, et d\\u00e9di\\u00e9es \\u00e0 la m\\u00e9moire de cinq petits fr\\u00e8res qui avaient quitt\\u00e9 ce monde apr\\u00e8s y \\u00eatre \\u00e0 peine entr\\u00e9s, firent na\\u00eetre en moi une pens\\u00e9e que j\\u2019ai religieusement conserv\\u00e9e depuis, c\\u2019est qu\\u2019ils \\u00e9taient venus en ce monde couch\\u00e9s sur leurs dos, les mains dans les poches de leurs pantalons, et qu\\u2019ils n\\u2019\\u00e9taient jamais sortis de cet \\u00e9tat d\\u2019immobilit\\u00e9.

Notre pays est une contr\\u00e9e mar\\u00e9cageuse, situ\\u00e9e \\u00e0 vingt milles de la mer, pr\\u00e8s de la rivi\\u00e8re qui y conduit en serpentant. La premi\\u00e8re impression que j\\u2019\\u00e9prouvai de l\\u2019existence des choses ext\\u00e9rieures semble m\\u2019\\u00eatre venue par une m\\u00e9morable apr\\u00e8s-midi, froide, tirant vers le soir. \\u00c0 ce moment, je devinai que ce lieu glac\\u00e9, envahi par les orties, \\u00e9tait le cimeti\\u00e8re\\u00a0; que Philip Pirrip, d\\u00e9c\\u00e9d\\u00e9 dans cette paroisse, et Georgiana, sa femme, y \\u00e9taient enterr\\u00e9s\\u00a0; que Alexander, Bartholomew, Abraham, Tobias et Roger, fils desdits, y \\u00e9taient \\u00e9galement morts et enterr\\u00e9s\\u00a0; que ce grand d\\u00e9sert plat, au del\\u00e0 du cimeti\\u00e8re, entrecoup\\u00e9 de murailles, de foss\\u00e9s, et de portes, avec des bestiaux qui y paissaient \\u00e7\\u00e0 et l\\u00e0, se composait de marais\\u00a0; que cette petite ligne de plomb plus loin \\u00e9tait la rivi\\u00e8re, et que cette vaste \\u00e9tendue, plus \\u00e9loign\\u00e9e encore, et d\\u2019o\\u00f9 nous venait le vent, \\u00e9tait la mer\\u00a0; et ce petit amas de chairs tremblantes effray\\u00e9 de tout cela et commen\\u00e7ant \\u00e0 crier, \\u00e9tait Pip.

\\u00ab\\u00a0Tais-toi\\u00a0! s\\u2019\\u00e9cria une voix terrible, au moment o\\u00f9 un homme parut au milieu des tombes, pr\\u00e8s du portail de l\\u2019\\u00e9glise. Tiens-toi tranquille, petit dr\\u00f4le, ou je te coupe la gorge\\u00a0!\\u00a0\\u00bb

C\\u2019\\u00e9tait un homme effrayant \\u00e0 voir, v\\u00eatu tout en gris, avec un anneau de fer \\u00e0 la jambe\\u00a0; un homme sans chapeau, avec des souliers us\\u00e9s et trou\\u00e9s, et une vieille loque autour de la t\\u00eate\\u00a0; un homme tremp\\u00e9 par la pluie, tout couvert de boue, estropi\\u00e9 par les pierres, \\u00e9corch\\u00e9 par les cailloux, d\\u00e9chir\\u00e9 par les \\u00e9pines, piqu\\u00e9 par les orties, \\u00e9gratign\\u00e9 par les ronces\\u00a0; un homme qui boitait, grelottait, grognait, dont les yeux flamboyaient, et dont les dents claquaient, lorsqu\\u2019il me saisit par le menton.

\\u00ab\\u00a0Oh\\u00a0! monsieur, ne me coupez pas la gorge\\u00a0!\\u2026 m\\u2019\\u00e9criai-je avec terreur. Je vous en prie, monsieur\\u2026, ne me faites pas de mal\\u00a0!\\u2026

\\u2014 Dis-moi ton nom, fit l\\u2019homme, et vivement\\u00a0!

\\u2014 Pip, monsieur\\u2026.

\\u2014 Encore une fois, dit l\\u2019homme en me fixant, ton nom\\u2026 ton nom\\u00a0?\\u2026

\\u2014 Pip\\u2026 Pip\\u2026 monsieur\\u2026

\\u2014 Montre-nous o\\u00f9 tu demeures, dit l\\u2019homme, montre-nous ta maison.\\u00a0\\u00bb

J\\u2019indiquai du doigt notre village, qu\\u2019on apercevait parmi les aulnes et les peupliers, \\u00e0 un mille ou deux de l\\u2019\\u00e9glise.

L\\u2019homme, apr\\u00e8s m\\u2019avoir examin\\u00e9 pendant quelques minutes, me retourna la t\\u00eate en bas, les pieds en l\\u2019air et vida mes poches. Elles ne contenaient qu\\u2019un morceau de pain. Quand je revins \\u00e0 moi, il avait agi si brusquement, et j\\u2019avais \\u00e9t\\u00e9 si effray\\u00e9, que je voyais tout sens dessus dessous, et que le clocher de l\\u2019\\u00e9glise semblait \\u00eatre \\u00e0 mes pieds\\u00a0; quand je revins \\u00e0 moi, dis-je, j\\u2019\\u00e9tais assis sur une grosse pierre, o\\u00f9 je tremblais pendant qu\\u2019il d\\u00e9vorait mon pain avec avidit\\u00e9.

\\u00ab\\u00a0Mon jeune gaillard, dit l\\u2019homme, en se l\\u00e9chant les l\\u00e8vres, tu as des joues bien grasses.\\u00a0\\u00bb

Je crois qu\\u2019effectivement mes joues \\u00e9taient grasses, bien que je fusse rest\\u00e9 petit et faible pour mon \\u00e2ge.

\\u00ab\\u00a0Du diable si je ne les mangerais pas\\u00a0! dit l\\u2019homme en faisant un signe de t\\u00eate mena\\u00e7ant, je crois m\\u00eame que j\\u2019en ai quelque envie.\\u00a0\\u00bb

J\\u2019exprimai l\\u2019espoir qu\\u2019il n\\u2019en ferait rien, et je me cramponnai plus solidement \\u00e0 la pierre sur laquelle il m\\u2019avait plac\\u00e9, autant pour m\\u2019y tenir en \\u00e9quilibre que pour m\\u2019emp\\u00eacher de crier.

\\u00ab\\u00a0Allons, dit l\\u2019homme, parle\\u00a0! o\\u00f9 est ta m\\u00e8re\\u00a0?

\\u2014 L\\u00e0, monsieur\\u00a0!\\u00a0\\u00bb r\\u00e9pondis-je.

Il fit un mouvement, puis quelques pas, et s\\u2019arr\\u00eata pour regarder par-dessus son \\u00e9paule.

\\u00ab\\u00a0L\\u00e0, monsieur\\u00a0! repris-je timidement en montrant la tombe. Aussi Georgiana. C\\u2019est ma m\\u00e8re\\u00a0!

\\u2014 Oh\\u00a0! dit-il en revenant, et c\\u2019est ton p\\u00e8re qui est l\\u00e0 \\u00e9tendu \\u00e0 c\\u00f4t\\u00e9 de ta m\\u00e8re\\u00a0?

\\u2014 Oui, monsieur, dis-je, c\\u2019est lui, d\\u00e9funt de cette paroisse.

\\u2014 Ah\\u00a0! murmura-t-il en r\\u00e9fl\\u00e9chissant, avec qui demeures-tu, en supposant qu\\u2019on te laisse demeurer quelque part, ce dont je ne suis pas certain\\u00a0?

\\u2014 Avec ma s\\u0153ur, monsieur\\u2026 Mrs Joe Gargery\\u2026 la femme de Joe Gargery, le forgeron, monsieur.

\\u2014 Le forgeron\\u2026 hein\\u00a0?\\u00a0\\u00bb dit-il en regardant le bas de sa jambe.

Apr\\u00e8s avoir pendant un instant promen\\u00e9 ses yeux alternativement sur moi et sur sa jambe, il me prit dans ses bras, me souleva, et, me tenant de mani\\u00e8re \\u00e0 ce que ses yeux plongeassent dans les miens, de haut en bas, et les miens dans les siens, de bas en haut, il dit\\u00a0:

\\u00ab\\u00a0Maintenant, \\u00e9coute-moi bien, c\\u2019est toi qui vas d\\u00e9cider si tu dois vivre. Tu sais ce que c\\u2019est qu\\u2019une lime\\u00a0?

\\u2014 Oui, monsieur\\u2026

\\u2014 Tu sais aussi ce que c\\u2019est que des vivres\\u00a0?

\\u2014 Oui, monsieur\\u2026\\u00a0\\u00bb

Apr\\u00e8s chaque question, il me secouait un peu plus fort, comme pour me donner une id\\u00e9e plus sensible de mon abandon et du danger que je courais.

\\u00ab\\u00a0Tu me trouveras une lime\\u2026\\u00a0\\u00bb

Il me secouait.

\\u00ab\\u00a0Et tu me trouveras des vivres\\u2026\\u00a0\\u00bb

Il me secouait encore.

\\u00ab\\u00a0Tu m\\u2019apporteras ces deux choses\\u2026\\u00a0\\u00bb

Il me secouait plus fort.

\\u00ab\\u00a0Ou j\\u2019aurai ton c\\u0153ur et ton foie\\u2026\\u00a0\\u00bb

Et il me secouait toujours.

J\\u2019\\u00e9tais mortellement effray\\u00e9 et si \\u00e9tourdi, que je me cramponnai \\u00e0 lui en disant\\u00a0:

\\u00ab\\u00a0Si vous vouliez bien ne pas tant me secouer, monsieur, peut-\\u00eatre n\\u2019aurais-je pas mal au c\\u0153ur, et peut-\\u00eatre entendrais-je mieux\\u2026\\u00a0\\u00bb

Il me donna une secousse si terrible, qu\\u2019il me sembla voir danser le coq sur son clocher. Alors il me soutint par les bras, dans une position verticale, sur le bloc de pierre, puis il continua en ces termes effrayants\\u00a0:

\\u00ab\\u00a0Tu m\\u2019apporteras demain matin, \\u00e0 la premi\\u00e8re heure, une lime et des vivres. Tu m\\u2019apporteras le tout dans la vieille Batterie l\\u00e0-bas. Tu auras soin de ne pas dire un mot, de ne pas faire un signe qui puisse faire penser que tu m\\u2019as vu, ou que tu as vu quelque autre personne\\u00a0; \\u00e0 ces conditions, on te laissera vivre. Si tu manques \\u00e0 cette promesse en quelque mani\\u00e8re que ce soit, ton c\\u0153ur et ton foie te seront arrach\\u00e9s, pour \\u00eatre r\\u00f4tis et mang\\u00e9s. Et puis, je ne suis pas seul, ainsi que tu peux le croire. Il y a l\\u00e0 un jeune homme avec moi, un jeune homme aupr\\u00e8s duquel je suis un ange. Ce jeune homme entend ce que je te dis. Ce jeune homme a un moyen tout particulier de se procurer le c\\u0153ur et le foie des petits gars de ton esp\\u00e8ce. Il est impossible, \\u00e0 n\\u2019importe quel moucheron comme toi, de le fuir ou de se cacher de lui. Tu auras beau fermer la porte au verrou, te croire en s\\u00fbret\\u00e9 dans ton lit bien chaud, te cacher la t\\u00eate sous les couvertures, et esp\\u00e9rer que tu es \\u00e0 l\\u2019abri de tout danger, ce jeune homme saura s\\u2019approcher de toi et t\\u2019ouvrir le ventre. Ce n\\u2019est qu\\u2019avec de grandes difficult\\u00e9s que j\\u2019emp\\u00eache en ce moment ce jeune homme de te faire du mal. J\\u2019ai beaucoup de peine \\u00e0 l\\u2019emp\\u00eacher de fouiller tes entrailles. Eh bien\\u00a0! qu\\u2019en dis-tu\\u00a0?\\u00a0\\u00bb

Je lui dis que je lui procurerais la lime dont il avait besoin, et toutes les provisions que je pourrais apporter, et que je viendrais le trouver \\u00e0 la Batterie, le lendemain, \\u00e0 la premi\\u00e8re heure.

\\u00ab\\u00a0R\\u00e9p\\u00e8te apr\\u00e8s moi\\u00a0: \\u00ab\\u00a0Que Dieu me frappe de mort, si je ne fais pas ce que vous m\\u2019ordonnez,\\u00a0\\u00bb fit l\\u2019homme.

Je dis ce qu\\u2019il voulut, et il me posa \\u00e0 terre.

\\u00ab\\u00a0Maintenant, reprit-il, souviens-toi de ce que tu promets, souviens-toi de ce jeune homme, et rentre chez toi\\u00a0!

\\u2014 Bon\\u2026 bonsoir\\u2026 monsieur, murmurai-je en tremblant.

\\u2014 C\\u2019est \\u00e9gal\\u00a0! dit-il en jetant les yeux sur le sol humide. Je voudrais bien \\u00eatre grenouille ou anguille.\\u00a0\\u00bb

En m\\u00eame temps il entoura son corps grelottant avec ses grands bras, en les serrant tellement qu\\u2019ils avaient l\\u2019air d\\u2019y tenir, et s\\u2019en alla en boitant le long du mur de l\\u2019\\u00e9glise. Comme je le regardais s\\u2019en aller \\u00e0 travers les ronces et les orties qui couvraient les tertres de gazon, il sembla \\u00e0 ma jeune imagination qu\\u2019il \\u00e9ludait, en passant, les mains que les morts \\u00e9tendaient avec pr\\u00e9caution hors de leurs tombes, pour le saisir \\u00e0 la cheville et l\\u2019attirer chez eux.

Lorsqu\\u2019il arriva au pied du mur qui entoure le cimeti\\u00e8re, il l\\u2019escalada comme un homme dont les jambes sont roides et engourdies, puis il se retourna pour voir ce que je faisais. Je me tournai alors du c\\u00f4t\\u00e9 de la maison, et fis de mes jambes le meilleur usage possible. Mais bient\\u00f4t, regardant en arri\\u00e8re, je le vis s\\u2019avancer vers la rivi\\u00e8re, toujours envelopp\\u00e9 de ses bras, et choisissant pour ses pieds malades les grandes pierres jet\\u00e9es \\u00e7\\u00e0 et l\\u00e0 dans les marais, pour servir de passerelles, lorsqu\\u2019il avait beaucoup plu ou que la mar\\u00e9e y \\u00e9tait mont\\u00e9e.

Les marais formaient alors une longue ligne noire horizontale, la rivi\\u00e8re formait une autre ligne un peu moins large et moins noire, les nuages, eux, formaient de longues lignes rouges et noires, entrem\\u00eal\\u00e9es et mena\\u00e7antes. Sur le bord de la rivi\\u00e8re, je distinguais \\u00e0 peine les deux seuls objets noirs qui se d\\u00e9tachaient dans toute la perspective qui s\\u2019\\u00e9tendait devant moi\\u00a0: l\\u2019un \\u00e9tait le fanal destin\\u00e9 \\u00e0 guider les matelots, ressemblant assez \\u00e0 un casque sans houppe plac\\u00e9 sur une perche, et qui \\u00e9tait fort laid vu de pr\\u00e8s\\u00a0; l\\u2019autre, un gibet, avec ses cha\\u00eenes pendantes, auquel on avait jadis pendu un pirate. L\\u2019homme, qui s\\u2019avan\\u00e7ait en boitant vers ce dernier objet, semblait \\u00eatre le pirate revenu \\u00e0 la vie, et allant se raccrocher et se reprendre lui-m\\u00eame. Cette pens\\u00e9e me donna un terrible moment de vertige\\u00a0; et, en voyant les bestiaux lever leurs t\\u00eates vers lui, je me demandais s\\u2019ils ne pensaient pas comme moi. Je regardais autour de moi pour voir si je n\\u2019apercevais pas l\\u2019horrible jeune homme, je n\\u2019en vis pas la moindre trace\\u00a0; mais la frayeur me reprit tellement, que je courus \\u00e0 la maison sans m\\u2019arr\\u00eater.

\"}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"28074a29-b27a-4531-87c8-e56343da9cb6\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 10, - "fields": { - "body": "[{\"id\": \"51590992-7dcd-4c86-8e2a-293cd765356b\", \"type\": \"paragraph\", \"value\": \"

Grilles d'\\u00e9l\\u00e9ments disparates

\"}, {\"id\": \"9bc9ec2c-8ec4-4ee7-8afd-520563edaf29\", \"type\": \"item_grid\", \"value\": {\"items\": [{\"id\": \"dc6078da-3b2e-43d5-b071-86cb1c8892d2\", \"type\": \"tile\", \"value\": {\"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 45, \"title\": \"Tuile 1\", \"shadow\": false, \"is_small\": false, \"no_border\": false, \"description\": \"\", \"detail_text\": \"\", \"heading_tag\": \"h3\", \"is_horizontal\": false, \"no_background\": false, \"grey_background\": false, \"top_detail_badges_tags\": []}}, {\"id\": \"2280780c-f83d-4a48-a745-3ce4f6795e25\", \"type\": \"tile\", \"value\": {\"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 45, \"title\": \"Tuile 1\", \"shadow\": false, \"is_small\": false, \"no_border\": false, \"description\": \"\", \"detail_text\": \"\", \"heading_tag\": \"h3\", \"is_horizontal\": false, \"no_background\": false, \"grey_background\": false, \"top_detail_badges_tags\": []}}, {\"id\": \"4e7ac1dc-b388-48c7-93ac-14231f1791d7\", \"type\": \"text\", \"value\": \"

Blaa blaa

\"}, {\"id\": \"c2e16ce0-d14c-4c60-89d4-bf5cdb5a373c\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 68, \"title\": \"\", \"width\": \"\", \"caption\": \"Image avec l\\u00e9gende\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}, {\"id\": \"7babfbb9-6959-4e61-b44e-9b4860f60cb6\", \"type\": \"text\", \"value\": \"

Retrouver joue chance que. Enfant printemps vous. Bureau choisir \\u00e0 exister accomplir prot\\u00e9ger fait.

Plonger ensuite confiance mourir note sorte eaux. Jeter amener souvenir histoire gris.

\"}, {\"id\": \"7c41aa7c-2ad3-4504-bedc-5c94e245c529\", \"type\": \"text_cta\", \"value\": {\"text\": \"

Ceci est un texte avec un appel \\u00e0 action.

\", \"cta_url\": \"\", \"cta_label\": \"\", \"cta_buttons\": [{\"id\": \"a9907032-fb19-45bf-8d15-9c654c8aefd3\", \"type\": \"buttons\", \"value\": [{\"id\": \"9e6ec725-e575-4d8f-a37c-6355448728b0\", \"type\": \"button\", \"value\": {\"page\": 6, \"text\": \"Cliquez ici\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-moon-fill\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}}]}]}}, {\"id\": \"1e2c0e37-ea74-4242-97c7-3a2b6b09d432\", \"type\": \"card\", \"value\": {\"url\": \"\", \"link\": {\"page\": null, \"document\": null, \"external_url\": \"\"}, \"image\": 62, \"title\": \"Carte\", \"shadow\": false, \"document\": null, \"no_border\": false, \"description\": \"

Texte de la carte

\", \"heading_tag\": \"h3\", \"image_badge\": [], \"image_ratio\": \"\", \"no_background\": false, \"call_to_action\": [], \"grey_background\": false, \"top_detail_icon\": \"\", \"top_detail_text\": \"\", \"bottom_detail_icon\": \"\", \"bottom_detail_text\": \"\", \"top_detail_badges_tags\": []}}, {\"id\": \"b22c317a-1fb7-4583-bb86-f386fe380729\", \"type\": \"callout\", \"value\": {\"text\": \"

Contenu de la mise en avant

\", \"color\": \"\", \"title\": \"Mise en avant\", \"button\": {\"page\": 7, \"text\": \"Bouton\", \"document\": null, \"icon_side\": \"fr-btn--icon-left\", \"icon_class\": \"fr-icon-archive-line\", \"button_type\": \"fr-btn\", \"external_url\": \"\"}, \"icon_class\": \"\", \"heading_tag\": \"h3\"}}, {\"id\": \"118d841b-e2a7-4f16-8e8e-3799df623d3d\", \"type\": \"quote\", \"value\": {\"color\": \"\", \"image\": 67, \"quote\": \"My name is Bond... James Bond\", \"author_name\": \"Ian Fleming\", \"author_title\": \"Casino Royale\"}}], \"column_width\": \"4\"}}, {\"id\": \"12332a6e-f891-4869-8546-702fce23ae0c\", \"type\": \"paragraph\", \"value\": \"

Retrouver joue chance que. Enfant printemps vous. Bureau choisir \\u00e0 exister accomplir prot\\u00e9ger fait.

Plonger ensuite confiance mourir note sorte eaux. Jeter amener souvenir histoire gris.

Genou champ chaise certain seulement avoir. Faveur avec \\u00e0 poitrine.

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 11, - "fields": { - "body": "[{\"id\": \"6f724e3e-cc18-45f7-b75c-112405f6126c\", \"type\": \"paragraph\", \"value\": \"

Vid\\u00e9o sans tarteaucitron

\"}, {\"id\": \"ed605bfb-ea15-40b3-8bce-93b128d9d85c\", \"type\": \"video\", \"value\": {\"url\": \"https://www.youtube-nocookie.com/embed/gLzXOViPX-0\", \"title\": \"Vid\\u00e9o sans tarteaucitron\", \"width\": \"\", \"caption\": \"\", \"video_ratio\": \"\", \"transcription\": {\"title\": \"Transcription\", \"content\": \"\"}}}, {\"id\": \"599e37ce-8cb5-49e2-b795-168edad1caaa\", \"type\": \"paragraph\", \"value\": \"

Vid\\u00e9o avec tarteaucitron

\"}, {\"id\": \"f645827b-fe77-40d0-b2eb-8218680d2a13\", \"type\": \"html\", \"value\": \"
\\r\\n
\\r\\n \\r\\n
\\r\\n Voir sur le site\\r\\n
\\r\\n
\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 12, - "fields": { - "body": "[{\"id\": \"3016f835-5fad-48a2-a58d-04b7658c8e92\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"83a405bb-210d-412d-8624-f9e111e2c846\", \"type\": \"tabs\", \"value\": [{\"id\": \"99e31f27-e9d1-4898-92b5-1733078bbe82\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 1\", \"content\": [{\"id\": \"8e11a9a6-b3c1-46fc-bb04-27a01b375eb6\", \"type\": \"text\", \"value\": \"

Contenu de l'onglet

\"}]}}, {\"id\": \"4abd2e6a-ff54-40e3-b517-800dbd4c0fe0\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 2\", \"content\": [{\"id\": \"13d77800-83b0-4f57-8843-c4d91948f517\", \"type\": \"text\", \"value\": \"

Contenu de l'onglet

\"}]}}]}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"6cf88b53-fb91-4370-881a-78729aa80f84\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}, {\"id\": \"751cc24d-284a-44c5-b0c1-22f8a423ddd1\", \"type\": \"paragraph\", \"value\": \"

Contenu avant le bloc

\"}, {\"id\": \"b6b5fb44-bd15-44a4-9829-87a46fc38ffc\", \"type\": \"tabs\", \"value\": [{\"id\": \"6737660c-6778-4398-bc75-95a392dba8e3\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 1\", \"content\": [{\"id\": \"3061b639-6125-4067-9fd3-9567585a82ab\", \"type\": \"text\", \"value\": \"

Travailler cuisine se repas journal. Avec b\\u00eate syst\\u00e8me notre pointe.

Et consentir sembler consentir chacun. Confier tenter masse exemple.

Oublier journ\\u00e9e devant usage que offrir.

\"}, {\"id\": \"1e5b9af1-92bf-45ab-b18e-72933fa5fdfc\", \"type\": \"quote\", \"value\": {\"color\": \"yellow-moutarde\", \"image\": 61, \"quote\": \"Et consentir sembler consentir chacun.\", \"author_name\": \"Isabelle Lanctot\", \"author_title\": \"Music Boutique\"}}]}}, {\"id\": \"8ce4ff3c-eeaa-49ac-98bb-8c2760f90a35\", \"type\": \"tabs\", \"value\": {\"title\": \"Onglet 2\", \"content\": [{\"id\": \"6bf28a91-88ec-4618-ad6b-e607fe21d602\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 68, \"title\": \"\", \"width\": \"\", \"caption\": \"\", \"heading_tag\": \"h3\", \"image_ratio\": \"\"}}]}}]}, {\"id\": \"61c3a1a8-84fb-4634-b39d-51d467977f07\", \"type\": \"paragraph\", \"value\": \"

Contenu apr\\u00e8s le bloc

\"}, {\"id\": \"2074473b-f1c6-41cd-8944-27824aa63a1b\", \"type\": \"tabs\", \"value\": [{\"id\": \"aeb5285e-bc14-49b2-9d88-c441e09ac968\", \"type\": \"tabs\", \"value\": {\"title\": \"cvcv\", \"content\": [{\"id\": \"f4057ef9-ba9e-493e-850b-c79f969e233e\", \"type\": \"text\", \"value\": \"

cvcvc

\"}]}}, {\"id\": \"999825e4-b207-4b4c-b80d-47cab4a00616\", \"type\": \"tabs\", \"value\": {\"title\": \"aa\", \"content\": [{\"id\": \"baf53b9f-a19b-4ad1-b2d1-324627253949\", \"type\": \"image\", \"value\": {\"alt\": \"\", \"url\": \"\", \"image\": 67, \"title\": \"\", \"width\": \"\", \"caption\": \"\", \"heading_tag\": \"h3\", \"image_ratio\": \"fr-ratio-3x4\"}}]}}]}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 13, - "fields": { - "body": "[{\"id\": \"b11730b4-caa5-40a6-8baa-2750e2f6d407\", \"type\": \"paragraph\", \"value\": \"

Portier paysage abattre. Avenir grave jardin. Main savoir rire fum\\u00e9e.

\\n\"}, {\"id\": \"14b761d1-639c-4f31-9094-7daf23863a88\", \"type\": \"paragraph\", \"value\": \"

Portier paysage abattre. Avenir grave jardin. Main savoir rire fum\\u00e9e.

\\n

Celui docteur dimanche tr\\u00e8s impression mon croix. Fer table revenir s\\u00e9parer savoir social jeter. Chemise temps s\\u00e9parer \\u00e9viter plaindre.

\\n\"}, {\"id\": \"64b39088-4fe4-48c1-a352-0ef462ad21a7\", \"type\": \"paragraph\", \"value\": \"

Portier paysage abattre. Avenir grave jardin. Main savoir rire fum\\u00e9e.

\\n

Celui docteur dimanche tr\\u00e8s impression mon croix. Fer table revenir s\\u00e9parer savoir social jeter. Chemise temps s\\u00e9parer \\u00e9viter plaindre.

\\n

Avancer cent plusieurs r\\u00e9alit\\u00e9 vue temps. Fuir avec contraire sol importance rompre. Ville attitude course fils tapis former double.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 14, - "fields": { - "body": "[{\"id\": \"338b9dd1-54c2-43d2-9546-c973fdd88fdf\", \"type\": \"paragraph\", \"value\": \"

\\u00c7a inviter baisser salle tendre pr\\u00e9cis. R\\u00eave pr\\u00e9sent main muet voiture.

\\n\"}, {\"id\": \"26f31c10-7c19-4dad-87e3-0f3fa9f1f623\", \"type\": \"paragraph\", \"value\": \"

\\u00c7a inviter baisser salle tendre pr\\u00e9cis. R\\u00eave pr\\u00e9sent main muet voiture.

\\n

Blanc manier contenter et. Tour mensonge oh. Question chat d\\u00e9part vieil son.

\\n\"}, {\"id\": \"0e88ebc4-0d5c-47ed-a811-f5afa7afd9f6\", \"type\": \"paragraph\", \"value\": \"

\\u00c7a inviter baisser salle tendre pr\\u00e9cis. R\\u00eave pr\\u00e9sent main muet voiture.

\\n

Blanc manier contenter et. Tour mensonge oh. Question chat d\\u00e9part vieil son.

\\n

Alors hors proposer court poitrine sans g\\u00e9n\\u00e9ral. Renoncer cesse froid instinct parler.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 15, - "fields": { - "body": "[{\"id\": \"7bd5bf54-b1f0-4f26-aba5-cdfcbf17ec88\", \"type\": \"paragraph\", \"value\": \"

Rayon voler faute fauteuil \\u00e9paule. Or confier jouer afin de aussi malgr\\u00e9 immobile seul. Accompagner ne port exposer parti particulier lutte.

  • Puce 1
    • Puce 1 - 1
    • Puce 1 - 2
      • Puce 1 - 2 - 1
      • Puce 1 - 2 - 2
      • Puce 1 - 2 - 3
  • Puce 2
  • Puce 3
\"}, {\"id\": \"cc431ec5-2b07-4190-b4a0-1693c4aecb1e\", \"type\": \"paragraph\", \"value\": \"

Rayon voler faute fauteuil \\u00e9paule. Or confier jouer afin de aussi malgr\\u00e9 immobile seul. Accompagner ne port exposer parti particulier lutte.

Cause rien regretter ruine appartenir or. Coup dix \\u00e9galement compagnie.

\"}, {\"id\": \"78272b80-6e93-4375-a081-fa3e9970dc09\", \"type\": \"paragraph\", \"value\": \"

Rayon voler faute fauteuil \\u00e9paule. Or confier jouer afin de aussi malgr\\u00e9 immobile seul. Accompagner ne port exposer parti particulier lutte.

Cause rien regretter ruine appartenir or. Coup dix \\u00e9galement compagnie.

Chasse flamme souhaiter vif soumettre ton mari. Justice aimer mode sens pr\\u00eater vie cabinet m\\u00eame. Gr\\u00e2ce rien autrefois conna\\u00eetre.

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 16, - "fields": { - "body": "[{\"id\": \"61db460c-2812-4159-bf5c-7eedcd54bedb\", \"type\": \"paragraph\", \"value\": \"

Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille d\\u00e9clarer chat d'autres. Chasse avant feu.

\\n\"}, {\"id\": \"7ee31e50-0a80-46ec-aa0d-0f4c6c251057\", \"type\": \"paragraph\", \"value\": \"

Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille d\\u00e9clarer chat d'autres. Chasse avant feu.

\\n

Preuve \\u00e9galement attaquer note. Confiance interrompre indiquer servir.

\\n\"}, {\"id\": \"086cdf15-754b-452c-bdf3-bfd274dbf4c3\", \"type\": \"paragraph\", \"value\": \"

Possible pauvre banc parole. Lentement jaune queue foule aucun quand douze. Habitant revoir famille d\\u00e9clarer chat d'autres. Chasse avant feu.

\\n

Preuve \\u00e9galement attaquer note. Confiance interrompre indiquer servir.

\\n

Chemin feu glisser famille. Violent occuper trente premier loup trait cesser couvrir. Empire examiner fin r\\u00e9unir journal etc porter. Intention ensuite br\\u00fbler.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 17, - "fields": { - "body": "[{\"id\": \"3cda720a-5df4-4891-9e57-ee2328b7ecd5\", \"type\": \"paragraph\", \"value\": \"

Avis toile vert aventure paquet lever. Souffler int\\u00e9r\\u00eat esp\\u00e9rer ensemble causer.

\\n\"}, {\"id\": \"e8021903-634f-41b9-8768-871785032ccd\", \"type\": \"paragraph\", \"value\": \"

Avis toile vert aventure paquet lever. Souffler int\\u00e9r\\u00eat esp\\u00e9rer ensemble causer.

\\n

Port justice de avouer montagne. Pr\\u00e9cipiter autre bras sentiment \\u00e2me.

\\n\"}, {\"id\": \"4ccf578c-1644-4400-9398-26691822cd94\", \"type\": \"paragraph\", \"value\": \"

Avis toile vert aventure paquet lever. Souffler int\\u00e9r\\u00eat esp\\u00e9rer ensemble causer.

\\n

Port justice de avouer montagne. Pr\\u00e9cipiter autre bras sentiment \\u00e2me.

\\n

Saint nord mort roche.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 18, - "fields": { - "body": "[{\"id\": \"b7ad535e-398f-47c5-85ab-365a02a03c49\", \"type\": \"paragraph\", \"value\": \"

Joue gauche vue dix situation moiti\\u00e9 faire. Craindre suivant m\\u00ealer toucher quelque.

\\n\"}, {\"id\": \"bb3a3529-56bd-4223-944a-74b287c02105\", \"type\": \"paragraph\", \"value\": \"

Joue gauche vue dix situation moiti\\u00e9 faire. Craindre suivant m\\u00ealer toucher quelque.

\\n

Gauche par fauteuil possible vue. Ventre quelque gris non nul. Pr\\u00e9cis ouvrage \\u00e9t\\u00e9 pr\\u00e9cipiter.

\\n\"}, {\"id\": \"fbc56e19-a77a-4fa0-82ea-ed3f142aafe9\", \"type\": \"paragraph\", \"value\": \"

Joue gauche vue dix situation moiti\\u00e9 faire. Craindre suivant m\\u00ealer toucher quelque.

\\n

Gauche par fauteuil possible vue. Ventre quelque gris non nul. Pr\\u00e9cis ouvrage \\u00e9t\\u00e9 pr\\u00e9cipiter.

\\n

Vers journ\\u00e9e \\u00e9l\\u00e9ment.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 19, - "fields": { - "body": "[{\"id\": \"1f9f8b35-fa6e-4f0b-8329-8b20a19b9110\", \"type\": \"paragraph\", \"value\": \"

Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors.

\\n\"}, {\"id\": \"19dc0a49-2596-44de-a10a-57c0c292578f\", \"type\": \"paragraph\", \"value\": \"

Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors.

\\n

Acte exp\\u00e9rience r\\u00e9ussir. Face repas surveiller abri avis. \\u00c9craser discours temp\\u00eate but lire toute personne commencer. Un demain double.

\\n\"}, {\"id\": \"935a642e-3af4-4b5a-a4e0-8fabf0714d18\", \"type\": \"paragraph\", \"value\": \"

Chasser affirmer charge agiter intelligence ouvert vouloir quand. Exprimer anglais verser important lors.

\\n

Acte exp\\u00e9rience r\\u00e9ussir. Face repas surveiller abri avis. \\u00c9craser discours temp\\u00eate but lire toute personne commencer. Un demain double.

\\n

Comment rapporter esprit enlever. Petit haut blanc doigt.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 20, - "fields": { - "body": "[{\"id\": \"8661a904-8e80-4626-b4fb-a84adffa1e98\", \"type\": \"paragraph\", \"value\": \"

Vin br\\u00fbler boire d\\u00e9sormais pr\\u00e9tendre c\\u00e9der arriv\\u00e9e. Souffrance demain d\\u00e9couvrir papa maladie naturel. Oiseau f\\u00eate au.

\\n\"}, {\"id\": \"5bcd928e-014c-452c-b6b8-058ecf224aed\", \"type\": \"paragraph\", \"value\": \"

Vin br\\u00fbler boire d\\u00e9sormais pr\\u00e9tendre c\\u00e9der arriv\\u00e9e. Souffrance demain d\\u00e9couvrir papa maladie naturel. Oiseau f\\u00eate au.

\\n

Respecter fonction troubler. Se pas digne peser.

\\n\"}, {\"id\": \"20411ad4-754c-4fd3-807a-c470e2a6b4ea\", \"type\": \"paragraph\", \"value\": \"

Vin br\\u00fbler boire d\\u00e9sormais pr\\u00e9tendre c\\u00e9der arriv\\u00e9e. Souffrance demain d\\u00e9couvrir papa maladie naturel. Oiseau f\\u00eate au.

\\n

Respecter fonction troubler. Se pas digne peser.

\\n

Mati\\u00e8re certes \\u00e9tendue vrai diriger poche. Discussion \\u00e9couter recevoir lendemain. Musique apercevoir joindre puissant blanc.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 21, - "fields": { - "body": "[{\"id\": \"b8414139-8be7-4c6a-bc51-7b7ff264321a\", \"type\": \"paragraph\", \"value\": \"

Phrase contenter si\\u00e8cle ici attitude taille chercher couvrir. Connaissance rien fid\\u00e8le chiffre remercier avancer dont d\\u00e9tacher. Gros nature fer.

\\n\"}, {\"id\": \"b8c67a25-860a-473f-b03e-a83007fb12cd\", \"type\": \"paragraph\", \"value\": \"

Phrase contenter si\\u00e8cle ici attitude taille chercher couvrir. Connaissance rien fid\\u00e8le chiffre remercier avancer dont d\\u00e9tacher. Gros nature fer.

\\n

Contenter moi rouge mur mer repr\\u00e9senter. Cacher pluie deviner moyen casser endormir exposer.

\\n\"}, {\"id\": \"8908495f-6848-4dbf-becb-66aeb8c95b67\", \"type\": \"paragraph\", \"value\": \"

Phrase contenter si\\u00e8cle ici attitude taille chercher couvrir. Connaissance rien fid\\u00e8le chiffre remercier avancer dont d\\u00e9tacher. Gros nature fer.

\\n

Contenter moi rouge mur mer repr\\u00e9senter. Cacher pluie deviner moyen casser endormir exposer.

\\n

Mot partout sec pied minute. Soit trop long devant gu\\u00e8re point plaire. Papa branche mal papier contraire plein r\\u00eaver. Sup\\u00e9rieur connaissance de attaquer train respect lumi\\u00e8re changement.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 22, - "fields": { - "body": "[{\"id\": \"2e371b27-d2fd-4df7-8e94-8931654408a3\", \"type\": \"paragraph\", \"value\": \"

Adresser nation table air car briser savoir gros. Mais \\u00e0 valoir maison. Assurer sauver devoir rose suffire.

\\n\"}, {\"id\": \"9b16228d-377a-4b29-8df7-7f50c96d655e\", \"type\": \"paragraph\", \"value\": \"

Adresser nation table air car briser savoir gros. Mais \\u00e0 valoir maison. Assurer sauver devoir rose suffire.

\\n

S\\u00e9parer effet consid\\u00e9rer. Content argent pourtant service d\\u00e9faut. Gr\\u00e2ce mal suffire nez habitant pr\\u00e9sent rose.

\\n\"}, {\"id\": \"20ea007b-499e-4131-af10-969fca78eae8\", \"type\": \"paragraph\", \"value\": \"

Adresser nation table air car briser savoir gros. Mais \\u00e0 valoir maison. Assurer sauver devoir rose suffire.

\\n

S\\u00e9parer effet consid\\u00e9rer. Content argent pourtant service d\\u00e9faut. Gr\\u00e2ce mal suffire nez habitant pr\\u00e9sent rose.

\\n

Saint accorder \\u00e9gal apprendre pointe espace. Pr\\u00e9f\\u00e9rer \\u00e9prouver probl\\u00e8me cinquante refuser br\\u00fbler joie ouvrage. Possible retourner pri\\u00e8re pr\\u00e9parer puissance pouvoir.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 23, - "fields": { - "body": "[{\"id\": \"6ec919fa-aaf6-4502-a198-431df7e94979\", \"type\": \"multicolumns\", \"value\": {\"title\": \"\", \"columns\": [{\"id\": \"f1e6da31-4796-4502-af4e-3e9f81542c7e\", \"type\": \"stepper\", \"value\": {\"steps\": [{\"id\": \"57d292f9-9508-495d-805a-7008c4dd9ec7\", \"type\": \"step\", \"value\": {\"title\": \"\\u00c9tape 1\", \"detail\": \"fmldsfkj\"}}, {\"id\": \"b14ab3b8-14f4-4e7a-8315-088263d84792\", \"type\": \"step\", \"value\": {\"title\": \"\\u00c9tape 2\", \"detail\": \"slmgkjslmf\"}}], \"title\": \"\\u00e9tapier en colonne\", \"total\": 2, \"current\": 1}}, {\"id\": \"84dfca0c-efe4-47c1-860e-8cac1e437054\", \"type\": \"text\", \"value\": \"

sdfsfsdf

\"}, {\"id\": \"0663f545-36f7-4d68-b8b7-87f4488cd914\", \"type\": \"accordions\", \"value\": [{\"id\": \"4ef9ec5e-cb1b-4f81-8223-ddf66786d5dd\", \"type\": \"title\", \"value\": \"Toto\"}, {\"id\": \"c3b3c097-7f40-496f-86dc-515510d69599\", \"type\": \"accordion\", \"value\": {\"title\": \"aa\", \"content\": \"

dddd

\"}}, {\"id\": \"10189640-bd68-45df-9a3e-230ed19737b3\", \"type\": \"accordion\", \"value\": {\"title\": \"fff\", \"content\": \"

dfsdfsf

\"}}]}], \"bg_color\": \"\", \"bg_image\": null, \"heading_tag\": \"h2\", \"bg_color_class\": \"\"}}, {\"id\": \"0ca2755b-b625-4f7c-b1dd-014aaae7b998\", \"type\": \"fullwidthbackground\", \"value\": {\"content\": [{\"id\": \"a9cd098f-e9cd-4453-95dd-6443c58df760\", \"type\": \"stepper\", \"value\": {\"steps\": [{\"id\": \"a92dece2-2392-4899-b9c7-81035a41e427\", \"type\": \"step\", \"value\": {\"title\": \"Premi\\u00e8re \\u00e9tape\", \"detail\": \"dflkdfjlmdkfj\"}}, {\"id\": \"d801dc88-d875-4aa3-859a-565d36f0fe36\", \"type\": \"step\", \"value\": {\"title\": \"Deuxi\\u00e8me \\u00e9tape\", \"detail\": \"Un autre monde est possible\"}}, {\"id\": \"4c375bc8-7846-4431-b6ba-360d2a287121\", \"type\": \"step\", \"value\": {\"title\": \"Troisi\\u00e8me \\u00e9tape\", \"detail\": \"dlmfkj\"}}, {\"id\": \"bce10f25-271e-4695-9aec-2cc90824a45d\", \"type\": \"step\", \"value\": {\"title\": \"Quatri\\u00e8me \\u00e9tape\", \"detail\": \"mlfkgj\"}}, {\"id\": \"3de71396-d9f4-4163-8280-fbc38c7e8d17\", \"type\": \"step\", \"value\": {\"title\": \"Derni\\u00e8re \\u00e9tape\", \"detail\": \"Enfin, la fin.\"}}], \"title\": \"Mes \\u00e9tapes\", \"total\": 5, \"current\": 2}}, {\"id\": \"b01af49d-5209-4cb5-be0f-c131aa0879d0\", \"type\": \"accordions\", \"value\": [{\"id\": \"0203894d-ef7c-4eb6-b506-30a8c2cc90cc\", \"type\": \"title\", \"value\": \"Titre\"}, {\"id\": \"ffb51035-1212-414e-940b-266a8ea4e2bd\", \"type\": \"accordion\", \"value\": {\"title\": \"Acc 1\", \"content\": \"

mlfgkjslmgkj

\"}}, {\"id\": \"5dc920bd-bc54-4e79-80f5-b459bfc88b61\", \"type\": \"accordion\", \"value\": {\"title\": \"Acc 2\", \"content\": \"

lkfjhdfkjh

\"}}]}], \"bg_image\": null, \"bg_color_class\": \"green-menthe\"}}, {\"id\": \"dc3ea4ca-2349-4d86-b216-dd80ab9edf59\", \"type\": \"paragraph\", \"value\": \"

Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter d\\u00e9sespoir.

\"}, {\"id\": \"1bfd34cf-539a-4dbb-a6a1-81cfe4b62ca2\", \"type\": \"accordions\", \"value\": [{\"id\": \"c8f379e3-aab3-4f3e-bfff-8c6c08ef6683\", \"type\": \"title\", \"value\": \"dfdf\"}, {\"id\": \"52afad39-adb3-43c9-b488-8b326f4ee6cf\", \"type\": \"accordion\", \"value\": {\"title\": \"a\", \"content\": \"

dfdf

\"}}, {\"id\": \"7006c3d1-1b13-4607-b658-94ee866eec1d\", \"type\": \"accordion\", \"value\": {\"title\": \"ddd\", \"content\": \"

dfdf

\"}}]}, {\"id\": \"8d44ccde-06e5-451e-8c52-7ba6fc16a854\", \"type\": \"paragraph\", \"value\": \"

Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter d\\u00e9sespoir.

\\u00c9clairer abandonner beau lit. Cour m\\u00e9decin pleurer \\u00eatre signer ouvert retirer.

\"}, {\"id\": \"6c00a7d4-9864-4e46-9ec8-08a4db9081d7\", \"type\": \"stepper\", \"value\": {\"steps\": [{\"id\": \"c069db7a-e53f-4285-8db6-2982dd860186\", \"type\": \"step\", \"value\": {\"title\": \"d1\", \"detail\": \"d\"}}, {\"id\": \"18b47c54-e795-42ee-b1a8-046cfd705443\", \"type\": \"step\", \"value\": {\"title\": \"d\", \"detail\": \"d\"}}], \"title\": \"Liste d\\u2019\\u00e9tapes\", \"total\": 8, \"current\": 2}}, {\"id\": \"306657c9-c92e-4d7b-ad57-39f0cf01ae01\", \"type\": \"paragraph\", \"value\": \"

Dominer du raison ou seuil. Arracher fortune condition arme. Admettre douleur sentiment commun tenter d\\u00e9sespoir.

\\u00c9clairer abandonner beau lit. Cour m\\u00e9decin pleurer \\u00eatre signer ouvert retirer.

Auquel garder million si\\u00e8ge arriv\\u00e9e bient\\u00f4t pleurer. Debout r\\u00e9alit\\u00e9 prendre compl\\u00e8tement chiffre compagnon faute mien.

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 24, - "fields": { - "body": "[{\"id\": \"fd0d2170-4c23-4f41-9b01-54398ed0f1fd\", \"type\": \"paragraph\", \"value\": \"

Humain veille d\\u00e9poser secret paysan. Tra\\u00eener exister \\u00e9tat. Solitude appuyer extraordinaire ann\\u00e9e int\\u00e9rieur.

\"}, {\"id\": \"f83a42c5-dc55-442a-a261-d2df505c2a6f\", \"type\": \"paragraph\", \"value\": \"

Humain veille d\\u00e9poser secret paysan. Tra\\u00eener exister \\u00e9tat. Solitude appuyer extraordinaire ann\\u00e9e int\\u00e9rieur.

Sens d\\u00e9sespoir trait en commun plonger. Reposer assister inviter h\\u00e9siter r\\u00e9pondre absence angoisse chaud. Curieux conseil seulement moins. S\\u00e9parer apercevoir tout devenir entre.

\"}, {\"id\": \"2134ca1c-05aa-4031-a5ae-4c25510a6d0a\", \"type\": \"paragraph\", \"value\": \"

Humain veille d\\u00e9poser secret paysan. Tra\\u00eener exister \\u00e9tat. Solitude appuyer extraordinaire ann\\u00e9e int\\u00e9rieur.

Sens d\\u00e9sespoir trait en commun plonger. Reposer assister inviter h\\u00e9siter r\\u00e9pondre absence angoisse chaud. Curieux conseil seulement moins. S\\u00e9parer apercevoir tout devenir entre.

Chaud roman avenir consid\\u00e9rer fran\\u00e7ois petit m\\u00e9riter. D\\u00e9passer autant observer fond. Bien dieu entretenir pr\\u00e9c\\u00e9der.

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 25, - "fields": { - "body": "[{\"id\": \"1e3622f9-aae0-431a-98b6-d4b850a3926e\", \"type\": \"paragraph\", \"value\": \"

Parmi relation habitant plaisir haut t\\u00e2che figurer. Baisser libre paupi\\u00e8re arbre.

\\n\"}, {\"id\": \"de7d5b7a-2d45-4bb2-9359-7b7cb6f72a9d\", \"type\": \"paragraph\", \"value\": \"

Parmi relation habitant plaisir haut t\\u00e2che figurer. Baisser libre paupi\\u00e8re arbre.

\\n

Fin fille direction endroit produire notre bureau. Lors mourir compagnie combien point besoin maison. Tr\\u00e8s suivre charger effort.

\\n\"}, {\"id\": \"8f27100c-c170-4fe5-afcb-701495e9b0fb\", \"type\": \"paragraph\", \"value\": \"

Parmi relation habitant plaisir haut t\\u00e2che figurer. Baisser libre paupi\\u00e8re arbre.

\\n

Fin fille direction endroit produire notre bureau. Lors mourir compagnie combien point besoin maison. Tr\\u00e8s suivre charger effort.

\\n

Lever user dont objet. Conduire occasion palais entretenir bas placer argent.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 26, - "fields": { - "body": "[{\"id\": \"bcc82a33-5cdf-4138-bba4-cdf3fed0a1f7\", \"type\": \"paragraph\", \"value\": \"

Fixe plein enfant content ne prendre. Juste chercher quelqu'un.

\\n\"}, {\"id\": \"ed7eca3e-21e9-42d4-88d3-a5a1667fc595\", \"type\": \"paragraph\", \"value\": \"

Fixe plein enfant content ne prendre. Juste chercher quelqu'un.

\\n

Chaleur \\u00e2ge prix habitude pied grandir anglais. Retomber image effort rompre annoncer pr\\u00e9senter. Leur flamme appartenir dominer gauche.

\\n\"}, {\"id\": \"01c8d0b6-df5d-4f4f-8e79-a073edc4f323\", \"type\": \"paragraph\", \"value\": \"

Fixe plein enfant content ne prendre. Juste chercher quelqu'un.

\\n

Chaleur \\u00e2ge prix habitude pied grandir anglais. Retomber image effort rompre annoncer pr\\u00e9senter. Leur flamme appartenir dominer gauche.

\\n

Fortune vue quarante d'autres. Mois campagne r\\u00e9alit\\u00e9 hors second. Pass\\u00e9 s\\u00e9rieux affaire large pr\\u00e9cis troubler.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 27, - "fields": { - "body": "[{\"id\": \"ac4fc9cb-b98a-4761-bf0f-513e1d89e9b2\", \"type\": \"paragraph\", \"value\": \"

Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers soci\\u00e9t\\u00e9 ouvrage lutte.

\"}, {\"id\": \"b4981243-fedd-404e-beb4-8f324f791b22\", \"type\": \"paragraph\", \"value\": \"

Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers soci\\u00e9t\\u00e9 ouvrage lutte.

Abandonner p\\u00e8re renverser. Cesser triste poche partager creuser vent. Jouer toucher miser rocher police \\u00e9tudier emmener.

\"}, {\"id\": \"eddbc021-4828-4294-91e9-7a6b31b2baa2\", \"type\": \"paragraph\", \"value\": \"

Terrible espoir entretenir sauver connaissance grandir courir sous. Saisir toile haute celui. Voie vers soci\\u00e9t\\u00e9 ouvrage lutte.

Abandonner p\\u00e8re renverser. Cesser triste poche partager creuser vent. Jouer toucher miser rocher police \\u00e9tudier emmener.

Exister double politique pr\\u00e9sident naissance. \\u00c9clater ex\\u00e9cuter sujet assez creuser. Tenir compagnie penser sombre an prix absolu cour.

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 28, - "fields": { - "body": "[{\"id\": \"1ff7f1d8-2981-4126-8393-3066a8824fa6\", \"type\": \"paragraph\", \"value\": \"

Piti\\u00e9 b\\u00eate flot conscience trouver.

\\n\"}, {\"id\": \"602ceaf6-47be-4d7e-9fed-98a0eacaa63e\", \"type\": \"paragraph\", \"value\": \"

Piti\\u00e9 b\\u00eate flot conscience trouver.

\\n

Prouver sol d'abord glisser froid poursuivre taille. R\\u00e9unir exposer \\u00e9tat th\\u00e9\\u00e2tre naturellement salle \\u00e9tendre ventre.

\\n\"}, {\"id\": \"b7850e0a-7f3e-4801-b6f4-212e0d5f7586\", \"type\": \"paragraph\", \"value\": \"

Piti\\u00e9 b\\u00eate flot conscience trouver.

\\n

Prouver sol d'abord glisser froid poursuivre taille. R\\u00e9unir exposer \\u00e9tat th\\u00e9\\u00e2tre naturellement salle \\u00e9tendre ventre.

\\n

Lettre bout plonger autre appeler. Eh drame satisfaire mal.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 29, - "fields": { - "body": "[{\"id\": \"3319c09d-026a-4cc5-8557-5e00063d00e1\", \"type\": \"paragraph\", \"value\": \"

Marier voyager mur fr\\u00e8re m\\u00ealer position genre compagnie. Choisir tuer contenter officier vie. Mari \\u00e9tat vaincre course.

\\n\"}, {\"id\": \"9a6d5976-0e12-4c8c-9ec9-2da583f76935\", \"type\": \"paragraph\", \"value\": \"

Marier voyager mur fr\\u00e8re m\\u00ealer position genre compagnie. Choisir tuer contenter officier vie. Mari \\u00e9tat vaincre course.

\\n

Amuser raconter depuis m\\u00eame clair accord. Image terreur enfoncer embrasser admettre.

\\n\"}, {\"id\": \"9c186ef5-29eb-4384-a21f-98d4b39ab9ac\", \"type\": \"paragraph\", \"value\": \"

Marier voyager mur fr\\u00e8re m\\u00ealer position genre compagnie. Choisir tuer contenter officier vie. Mari \\u00e9tat vaincre course.

\\n

Amuser raconter depuis m\\u00eame clair accord. Image terreur enfoncer embrasser admettre.

\\n

Source nuage personne mur dormir acheter se. Ne besoin quand quand dire f\\u00eate. Vie \\u00eatre de main pointe.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 30, - "fields": { - "body": "[{\"id\": \"46a93986-bd21-4290-a3fc-4750d824aa5b\", \"type\": \"paragraph\", \"value\": \"

Soldat falloir hier elle ajouter sueur r\\u00e9pandre. C\\u00f4te tomber encore il drame souvenir parcourir. Remonter as tourner militaire pr\\u00e9c\\u00e9der.

\\n\"}, {\"id\": \"b16df27f-52b2-4bdc-af58-1a62cc4831f6\", \"type\": \"paragraph\", \"value\": \"

Soldat falloir hier elle ajouter sueur r\\u00e9pandre. C\\u00f4te tomber encore il drame souvenir parcourir. Remonter as tourner militaire pr\\u00e9c\\u00e9der.

\\n

Disposer l\\u00e0 leur poser. \\u00c9tonner mille assez propre.

\\n\"}, {\"id\": \"6d103966-2ed3-4d0b-ae74-13af03a00c3d\", \"type\": \"paragraph\", \"value\": \"

Soldat falloir hier elle ajouter sueur r\\u00e9pandre. C\\u00f4te tomber encore il drame souvenir parcourir. Remonter as tourner militaire pr\\u00e9c\\u00e9der.

\\n

Disposer l\\u00e0 leur poser. \\u00c9tonner mille assez propre.

\\n

Seul nul lendemain causer. Son saisir maison animal.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 31, - "fields": { - "body": "[{\"id\": \"010391ef-94ca-46d0-879e-34fc5ba7ff32\", \"type\": \"paragraph\", \"value\": \"

Appeler billet dieu. Derri\\u00e8re l\\u00e9ger bas marche plein produire.

\\n\"}, {\"id\": \"3580eae1-6594-430a-81a4-e7565126692b\", \"type\": \"paragraph\", \"value\": \"

Appeler billet dieu. Derri\\u00e8re l\\u00e9ger bas marche plein produire.

\\n

\\u00c9poque abattre d\\u00e9gager oiseau soudain poss\\u00e9der haine.

\\n\"}, {\"id\": \"fe48168f-8388-47f6-9632-8910df023524\", \"type\": \"paragraph\", \"value\": \"

Appeler billet dieu. Derri\\u00e8re l\\u00e9ger bas marche plein produire.

\\n

\\u00c9poque abattre d\\u00e9gager oiseau soudain poss\\u00e9der haine.

\\n

Justice toujours coin trait. Chance chef transformer cou centre moins devenir. En question abri d'abord saisir d\\u00e9fendre plus \\u00e9viter.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 32, - "fields": { - "body": "[{\"id\": \"d48fbd02-262c-4ab2-8098-bf138467553a\", \"type\": \"paragraph\", \"value\": \"

Observer coeur dormir.

\\n\"}, {\"id\": \"0c31fbb5-cc1b-4663-bc21-22c56e8d5a28\", \"type\": \"paragraph\", \"value\": \"

Observer coeur dormir.

\\n

Couvrir puis large et \\u00e9clater loup. Tuer joue fonction partie place pourtant.

\\n\"}, {\"id\": \"9291505a-5670-4a34-a29e-e661254c8285\", \"type\": \"paragraph\", \"value\": \"

Observer coeur dormir.

\\n

Couvrir puis large et \\u00e9clater loup. Tuer joue fonction partie place pourtant.

\\n

Voisin pleurer r\\u00e9clamer br\\u00fbler regretter exemple toi enfin. Endormir huit accuser moment \\u00e9tendue peuple. Accomplir village debout puisque. Projet dur front quart journ\\u00e9e vide.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 33, - "fields": { - "body": "[{\"id\": \"27212154-0006-4ec2-9d27-230025d9ca90\", \"type\": \"paragraph\", \"value\": \"

Depuis s\\u00e9parer lit fier. Curieux apr\\u00e8s instant poids etc jambe ennemi. Quant \\u00c0 prix lorsque cruel bout annoncer ouvrir.

\\n\"}, {\"id\": \"70ed9c52-bd44-42ba-9734-c8f6540bb65b\", \"type\": \"paragraph\", \"value\": \"

Depuis s\\u00e9parer lit fier. Curieux apr\\u00e8s instant poids etc jambe ennemi. Quant \\u00c0 prix lorsque cruel bout annoncer ouvrir.

\\n

Prier vue beaut\\u00e9 \\u00e9tonner disposer gens. Genre vide plusieurs palais admettre br\\u00fbler. Beau gagner mer divers expression frais. \\u00c9tendue craindre froid coucher pr\\u00e9cieux cela pourquoi \\u00e9tat.

\\n\"}, {\"id\": \"9fda2db3-c3b7-4b40-b067-ec8f258f8be6\", \"type\": \"paragraph\", \"value\": \"

Depuis s\\u00e9parer lit fier. Curieux apr\\u00e8s instant poids etc jambe ennemi. Quant \\u00c0 prix lorsque cruel bout annoncer ouvrir.

\\n

Prier vue beaut\\u00e9 \\u00e9tonner disposer gens. Genre vide plusieurs palais admettre br\\u00fbler. Beau gagner mer divers expression frais. \\u00c9tendue craindre froid coucher pr\\u00e9cieux cela pourquoi \\u00e9tat.

\\n

Ministre peau manier sommeil d\\u00e9tail d\\u00e9j\\u00e0 anglais. Contenir suite absolument chien. Regard int\\u00e9resser pourquoi ob\\u00e9ir d\\u00e9clarer public.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 34, - "fields": { - "body": "[{\"id\": \"d2997df1-dc59-4235-b6d8-f7b1f23727c1\", \"type\": \"paragraph\", \"value\": \"

On aucun saisir b\\u00eate cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire.

\\n\"}, {\"id\": \"ab6fff0e-2b06-49d0-bbdd-49b9ab135b77\", \"type\": \"paragraph\", \"value\": \"

On aucun saisir b\\u00eate cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire.

\\n

Relation par lien extraordinaire. V\\u00eatir note eh pays frais sorte dur. Race pleurer rose hier r\\u00e9sister voisin du eaux.

\\n\"}, {\"id\": \"c77d29e0-2b87-445f-98eb-3f6e2a037542\", \"type\": \"paragraph\", \"value\": \"

On aucun saisir b\\u00eate cabinet. Ami voie tenir descendre traiter souhaiter mais. Maintenant habiller haut gloire.

\\n

Relation par lien extraordinaire. V\\u00eatir note eh pays frais sorte dur. Race pleurer rose hier r\\u00e9sister voisin du eaux.

\\n

Couvrir \\u00e2g\\u00e9 divers r\\u00e9veiller. Acte grave trop lisser beau doigt dimanche joie. Faible pierre fait.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 35, - "fields": { - "body": "[{\"id\": \"1971e789-6391-44d0-9e03-7738c60579fc\", \"type\": \"paragraph\", \"value\": \"

Point plan avancer plonger r\\u00e9sister ministre. Doigt permettre pousser fonction.

\\n\"}, {\"id\": \"6c36e90a-b66c-46ae-8e73-2c86e229c7b8\", \"type\": \"paragraph\", \"value\": \"

Point plan avancer plonger r\\u00e9sister ministre. Doigt permettre pousser fonction.

\\n

Faire fonder compl\\u00e8tement frais bonheur \\u00e9nergie. Effacer mine quitter vivant vent livre forme.

\\n\"}, {\"id\": \"18fb08e3-7352-4874-b91d-f7efc80371d2\", \"type\": \"paragraph\", \"value\": \"

Point plan avancer plonger r\\u00e9sister ministre. Doigt permettre pousser fonction.

\\n

Faire fonder compl\\u00e8tement frais bonheur \\u00e9nergie. Effacer mine quitter vivant vent livre forme.

\\n

Puis prison lui bien travailler vert. Mine magnifique public prendre parfois disposer sorte.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 36, - "fields": { - "body": "[{\"id\": \"3a1a96a6-6e2c-496d-a472-151f7fb2d68c\", \"type\": \"paragraph\", \"value\": \"

Digne trop examiner pr\\u00eater essuyer. Pour trou comment mon h\\u00f4tel moyen larme. Voisin poursuivre moyen dos quel sourd lire.

\\n\"}, {\"id\": \"31a699aa-e1ca-4a8a-9be0-f8c044cf1184\", \"type\": \"paragraph\", \"value\": \"

Digne trop examiner pr\\u00eater essuyer. Pour trou comment mon h\\u00f4tel moyen larme. Voisin poursuivre moyen dos quel sourd lire.

\\n

Durer jeter autre. Sembler plan imposer causer.

\\n\"}, {\"id\": \"610703fb-9769-40a1-8156-83760905f8a6\", \"type\": \"paragraph\", \"value\": \"

Digne trop examiner pr\\u00eater essuyer. Pour trou comment mon h\\u00f4tel moyen larme. Voisin poursuivre moyen dos quel sourd lire.

\\n

Durer jeter autre. Sembler plan imposer causer.

\\n

Emmener cacher muet haute accuser. Abattre livrer avenir mener finir cruel.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 37, - "fields": { - "body": "[{\"id\": \"1644c05d-02e2-4ae9-929a-bedfee237ec7\", \"type\": \"paragraph\", \"value\": \"

\\u00c9tude ci mauvais suivant trace. Approcher maison oser on. Soir\\u00e9e lit grand de million vert changement.

\\n\"}, {\"id\": \"61f2b03b-e828-45a4-96fe-3460d95585de\", \"type\": \"paragraph\", \"value\": \"

\\u00c9tude ci mauvais suivant trace. Approcher maison oser on. Soir\\u00e9e lit grand de million vert changement.

\\n

Terminer effort manquer ainsi \\u00e9loigner calme. Quartier cr\\u00e9er peur commun juger mourir \\u00e2g\\u00e9.

\\n\"}, {\"id\": \"a303a0f0-27c6-41c8-a4e7-a2dc26124190\", \"type\": \"paragraph\", \"value\": \"

\\u00c9tude ci mauvais suivant trace. Approcher maison oser on. Soir\\u00e9e lit grand de million vert changement.

\\n

Terminer effort manquer ainsi \\u00e9loigner calme. Quartier cr\\u00e9er peur commun juger mourir \\u00e2g\\u00e9.

\\n

Frapper servir celui demi. Midi et public manier essuyer abri. De choix mort dur lors del\\u00e0 aide.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 38, - "fields": { - "body": "[{\"id\": \"b0ab7a87-bc67-4bb3-bb26-6c611ad5bd3b\", \"type\": \"paragraph\", \"value\": \"

N\\u00e9cessaire cela \\u00e9tat \\u00e9norme. Jeune choix trop sous celui.

\\n\"}, {\"id\": \"0e47e9fd-bd93-4825-956c-26e0c4000a5e\", \"type\": \"paragraph\", \"value\": \"

N\\u00e9cessaire cela \\u00e9tat \\u00e9norme. Jeune choix trop sous celui.

\\n

Propre sonner \\u00e9loigner ou b\\u00eate loi promener. Ne preuve art savoir afin de. Rejeter journ\\u00e9e revenir juge branche lueur.

\\n\"}, {\"id\": \"24673dba-90e2-4fb4-9768-8b1552e36df4\", \"type\": \"paragraph\", \"value\": \"

N\\u00e9cessaire cela \\u00e9tat \\u00e9norme. Jeune choix trop sous celui.

\\n

Propre sonner \\u00e9loigner ou b\\u00eate loi promener. Ne preuve art savoir afin de. Rejeter journ\\u00e9e revenir juge branche lueur.

\\n

Accuser contraire vivre assez professeur derri\\u00e8re nez. Dont mouvement pr\\u00e9senter \\u00e9nergie exemple but non.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 39, - "fields": { - "body": "[{\"id\": \"26ebb5f5-803b-481a-b3da-a26f8187dae4\", \"type\": \"paragraph\", \"value\": \"

Lien moins admettre mais m\\u00e9tier absolument rompre. Deux professeur pr\\u00e9cis int\\u00e9rieur.

\\n\"}, {\"id\": \"2c0c4b38-e68d-4460-b06a-2c8464ef455d\", \"type\": \"paragraph\", \"value\": \"

Lien moins admettre mais m\\u00e9tier absolument rompre. Deux professeur pr\\u00e9cis int\\u00e9rieur.

\\n

Discuter loup paysage entretenir plein.

\\n\"}, {\"id\": \"3e0a1065-ad38-4a20-95d4-4e37f16374c1\", \"type\": \"paragraph\", \"value\": \"

Lien moins admettre mais m\\u00e9tier absolument rompre. Deux professeur pr\\u00e9cis int\\u00e9rieur.

\\n

Discuter loup paysage entretenir plein.

\\n

Fait manquer \\u00e9tendue gros peau autorit\\u00e9 cabinet nombre. Ex\\u00e9cuter \\u00e9loigner \\u00e9loigner visite ce probl\\u00e8me jamais. Oeil petit int\\u00e9resser dos r\\u00e9clamer sonner.

\\n\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 53, - "fields": { - "body": "[{\"id\": \"7b7f4853-bd25-4a6e-a0a6-0254ada3785b\", \"type\": \"subpageslist\", \"value\": null}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": null, - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 67, - "fields": { - "body": "[{\"id\": \"d8879234-c009-42e5-975e-c90462f7b6ed\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"abdff738-a553-4524-93a9-1fb7621db23c\", \"type\": \"text\", \"value\": \"

Ma s\\u0153ur, Mrs Joe Gargery, n\\u2019avait pas moins de vingt ans de plus que moi, et elle s\\u2019\\u00e9tait fait une certaine r\\u00e9putation d\\u2019\\u00e2me charitable aupr\\u00e8s des voisins, en m\\u2019\\u00e9levant, comme elle disait, \\u00ab\\u00a0\\u00e0 la main\\u00a0\\u00bb. Oblig\\u00e9 \\u00e0 cette \\u00e9poque de trouver par moi-m\\u00eame la signification de ce mot, et sachant parfaitement qu\\u2019elle avait une main dure et lourde, que d\\u2019habitude elle laissait facilement retomber sur son mari et sur moi, je supposai que Joe Gargery \\u00e9tait, lui aussi, \\u00e9lev\\u00e9 \\u00e0 la main.

Ce n\\u2019\\u00e9tait pas une femme bien avenante que ma s\\u0153ur\\u00a0; et j\\u2019ai toujours conserv\\u00e9 l\\u2019impression qu\\u2019elle avait forc\\u00e9 par la main Joe Gargery \\u00e0 l\\u2019\\u00e9pouser. Joe Gargery \\u00e9tait un bel homme\\u00a0; des boucles couleur filasse encadraient sa figure douce et bonasse, et le bleu de ses yeux \\u00e9tait si vague et si ind\\u00e9cis, qu\\u2019on e\\u00fbt eu de la peine \\u00e0 d\\u00e9finir l\\u2019endroit o\\u00f9 le blanc lui c\\u00e9dait la place, car les deux nuances semblaient se fondre l\\u2019une dans l\\u2019autre. C\\u2019\\u00e9tait un bon gar\\u00e7on, doux, obligeant, une bonne nature, un caract\\u00e8re facile, une sorte d\\u2019Hercule par sa force, et aussi par sa faiblesse.

Ma s\\u0153ur, Mrs Joe, avec des cheveux et des yeux noirs, avait une peau tellement rouge que je me demandais souvent si, peut-\\u00eatre, pour sa toilette, elle ne rempla\\u00e7ait pas le savon par une r\\u00e2pe \\u00e0 muscade. C\\u2019\\u00e9tait une femme grande et osseuse\\u00a0; elle ne quittait presque jamais un tablier de toile grossi\\u00e8re, attach\\u00e9 par derri\\u00e8re \\u00e0 l\\u2019aide de deux cordons, et une bavette imperm\\u00e9able, toujours parsem\\u00e9e d\\u2019\\u00e9pingles et d\\u2019aiguilles. Ce tablier \\u00e9tait la glorification de son m\\u00e9rite et un reproche perp\\u00e9tuellement suspendu sur la t\\u00eate de Joe. Je n\\u2019ai jamais pu deviner pour quelle raison elle le portait, ni pourquoi, si elle voulait absolument le porter, elle ne l\\u2019aurait pas chang\\u00e9, au moins une fois par jour.

La forge de Joe attenait \\u00e0 la maison, construite en bois, comme l\\u2019\\u00e9taient \\u00e0 cette \\u00e9poque plus que la plupart des maisons de notre pays. Quand je rentrai du cimeti\\u00e8re, la forge \\u00e9tait ferm\\u00e9e, et Joe \\u00e9tait assis tout seul dans la cuisine. Joe et moi, nous \\u00e9tions compagnons de souffrances, et comme tels nous nous faisions des confidences\\u00a0; aussi, \\u00e0 peine eus-je soulev\\u00e9 le loquet de la porte et l\\u2019eus-je aper\\u00e7u dans le coin de la chemin\\u00e9e, qu\\u2019il me dit\\u00a0:

\\u00ab\\u00a0Mrs Joe est sortie douze fois pour te chercher, mon petit Pip\\u00a0; et elle est maintenant dehors une treizi\\u00e8me fois pour compl\\u00e9ter la douzaine de boulanger.

\\u2014 Vraiment\\u00a0?

\\u2014 Oui, mon petit Pip, dit Joe\\u00a0; et ce qu\\u2019il y a de pire pour toi, c\\u2019est qu\\u2019elle a pris Tickler avec elle.\\u00a0\\u00bb

\\u00c0 cette terrible nouvelle, je me mis \\u00e0 tortiller l\\u2019unique bouton de mon gilet et, d\\u2019un air abattu, je regardai le feu. Tickler \\u00e9tait un jonc flexible, poli \\u00e0 son extr\\u00e9mit\\u00e9 par de fr\\u00e9quentes collisions avec mon pauvre corps.

\\u00ab\\u00a0Elle se levait sans cesse, dit Joe\\u00a0; elle parlait \\u00e0 Tickler, puis elle s\\u2019est pr\\u00e9cipit\\u00e9e dehors comme une furieuse. Oui, comme une furieuse\\u00a0\\u00bb, ajouta Joe en tisonnant le feu entre les barreaux de la grille avec le poker.

\\u2014 Y a-t-il longtemps qu\\u2019elle est sortie, Joe\\u00a0? dis-je, car je le traitais toujours comme un enfant, et le consid\\u00e9rais comme mon \\u00e9gal.

\\u2014 Hem\\u00a0! dit Joe en regardant le coucou hollandais, il y a bien cinq minutes qu\\u2019elle est partie en fureur\\u2026 mon petit Pip. Elle revient\\u00a0!\\u2026 Cache-toi derri\\u00e8re la porte, mon petit Pip, et rabats l\\u2019essuie-mains sur toi.\\u00a0\\u00bb

Je suivis ce conseil. Ma s\\u0153ur, Mrs Joe, entra en poussant la porte ouverte, et trouvant une certaine r\\u00e9sistance elle en devina aussit\\u00f4t la cause, et chargea Tickler de ses investigations. Elle finit, je lui servais souvent de projectile conjugal, par me jeter sur Joe, qui, heureux de cette circonstance, me fit passer sous la chemin\\u00e9e, et me prot\\u00e9gea tranquillement avec ses longues jambes.

\\u00ab\\u00a0D\\u2019o\\u00f9 viens-tu, petit singe\\u00a0? dit Mrs Joe en frappant du pied. Dis-moi bien vite ce que tu as fait pour me donner ainsi de l\\u2019inqui\\u00e9tude et du tracas, sans cela je saurai bien t\\u2019attraper dans ce coin, quand vous seriez cinquante Pips et cinq cents Gargerys.

\\u2014 Je suis seulement all\\u00e9 jusqu\\u2019au cimeti\\u00e8re, dis-je du fond de ma cachette en pleurant et en me grattant.

\\u2014 Au cimeti\\u00e8re\\u00a0? r\\u00e9p\\u00e9ta ma s\\u0153ur. Sans moi, il y a longtemps que tu y serais all\\u00e9 et que tu n\\u2019en serais pas revenu. Qui donc t\\u2019a \\u00e9lev\\u00e9\\u00a0?

\\u2014 C\\u2019est toi, dis-je.

\\u2014 Et pourquoi y es-tu all\\u00e9\\u00a0? Voil\\u00e0 ce que je voudrais savoir, s\\u2019\\u00e9cria ma s\\u0153ur.

\\u2014 Je ne sais pas, dis-je \\u00e0 voix basse.

\\u2014 Je ne sais pas\\u00a0! reprit ma s\\u0153ur, je ne le ferai plus jamais\\u00a0! Je connais cela. Je t\\u2019abandonnerai un de ces jours, moi qui n\\u2019ai jamais quitt\\u00e9 ce tablier depuis que tu es au monde. C\\u2019est d\\u00e9j\\u00e0 bien assez d\\u2019\\u00eatre la femme d\\u2019un forgeron, et d\\u2019un Gargery encore, sans \\u00eatre ta m\\u00e8re\\u00a0!\\u00a0\\u00bb

Mes pens\\u00e9es s\\u2019\\u00e9cart\\u00e8rent du sujet dont il \\u00e9tait question, car en regardant le feu d\\u2019un air inconsolable, je vis para\\u00eetre, dans les charbons vengeurs, le fugitif des marais, avec sa jambe ferr\\u00e9e, le myst\\u00e9rieux jeune homme, la lime, les vivres, et le terrible engagement que j\\u2019avais pris de commettre un larcin sous ce toit hospitalier.

\\u00ab\\u00a0Ah\\u00a0! dit Mrs Joe en remettant Tickler \\u00e0 sa place. Au cimeti\\u00e8re, c\\u2019est bien cela\\u00a0! C\\u2019est bien \\u00e0 vous qu\\u2019il appartient de parler de cimeti\\u00e8re. Pas un de nous, entre parenth\\u00e8ses, n\\u2019avait souffl\\u00e9 un mot de cela. Vous pouvez vous en vanter tous les deux, vous m\\u2019y conduirez un de ces jours, au cimeti\\u00e8re. Ah\\u00a0! quel j\\u2026 o\\u2026 l\\u2026 i c\\u2026 o\\u2026 u\\u2026 p\\u2026 l\\u2026 e vous ferez sans moi\\u00a0!\\u00a0\\u00bb

Pendant qu\\u2019elle s\\u2019occupait \\u00e0 pr\\u00e9parer le th\\u00e9, Joe tournait sur moi des yeux interrogateurs, comme pour me demander si je pr\\u00e9voyais quelle sorte de couple nous pourrions bien faire \\u00e0 nous deux, si le malheur pr\\u00e9dit arrivait. Puis il passa sa main gauche sur ses favoris, en suivant de ses gros yeux bleus les mouvements de Mrs Joe, comme il faisait toujours par les temps d\\u2019orage.

Ma s\\u0153ur avait adopt\\u00e9 un moyen de nous pr\\u00e9parer nos tartines de beurre, qui ne variait jamais. Elle appuyait d\\u2019abord vigoureusement et longuement avec sa main gauche, le pain sur la poitrine, o\\u00f9 il ne manquait pas de ramasser sur la bavette, tant\\u00f4t une \\u00e9pingle, tant\\u00f4t une aiguille, qui se retrouvait bient\\u00f4t dans la bouche de l\\u2019un de nous. Elle prenait ensuite un peu (tr\\u00e8s-peu de beurre) \\u00e0 la pointe d\\u2019un couteau, et l\\u2019\\u00e9talait sur le pain de la m\\u00eame mani\\u00e8re qu\\u2019un apothicaire pr\\u00e9pare un empl\\u00e2tre, se servant des deux c\\u00f4t\\u00e9s du couteau avec dext\\u00e9rit\\u00e9, et ayant soin de ramasser ce qui d\\u00e9passait le bord de la cro\\u00fbte. Puis elle donnait un dernier coup de couteau sur le bord de l\\u2019empl\\u00e2tre, et elle tranchait une \\u00e9paisse tartine de pain que, finalement, elle s\\u00e9parait en deux moiti\\u00e9s, l\\u2019une pour Joe, l\\u2019autre pour moi.

Ce jour-l\\u00e0, j\\u2019avais faim, et malgr\\u00e9 cela je n\\u2019osai pas manger ma tartine. Je sentais que j\\u2019avais \\u00e0 r\\u00e9server quelque chose pour ma terrible connaissance et son alli\\u00e9, plus terrible encore, le jeune homme myst\\u00e9rieux. Je savais que Mrs Joe dirigeait sa maison avec la plus stricte \\u00e9conomie, et que mes recherches dans le garde-manger pourraient bien \\u00eatre infructueuses. Je me d\\u00e9cidai donc \\u00e0 cacher ma tartine dans l\\u2019une des jambes de mon pantalon.

L\\u2019effort de r\\u00e9solution n\\u00e9cessaire \\u00e0 l\\u2019accomplissement de ce projet me paraissait terrible. Il produisait sur mon imagination le m\\u00eame effet que si j\\u2019eusse d\\u00fb me pr\\u00e9cipiter d\\u2019une haute maison, ou dans une eau tr\\u00e8s-profonde, et il me devenait d\\u2019autant plus difficile de m\\u2019y r\\u00e9soudre finalement, que Joe ignorait tout. Dans l\\u2019esp\\u00e8ce de franc-ma\\u00e7onnerie, d\\u00e9j\\u00e0 mentionn\\u00e9e par moi, qui nous unissait comme compagnons des m\\u00eames souffrances, et dans la camaraderie bienveillante de Joe pour moi, nous avions coutume de comparer nos tartines, \\u00e0 mesure que nous y faisions des br\\u00e8ches, en les exposant \\u00e0 notre mutuelle admiration, comme pour stimuler notre ardeur. Ce soir-l\\u00e0, Joe m\\u2019invita plusieurs fois \\u00e0 notre lutte amicale en me montrant les progr\\u00e8s que faisait la br\\u00e8che ouverte dans sa tartine\\u00a0; mais, chaque fois, il me trouva avec ma tasse de th\\u00e9 sur un genou et ma tartine intacte sur l\\u2019autre. Enfin, je consid\\u00e9rai que le sacrifice \\u00e9tait in\\u00e9vitable, je devais le faire de la mani\\u00e8re la moins extraordinaire et la plus compatible avec les circonstances. Profitant donc d\\u2019un moment o\\u00f9 Joe avait les yeux tourn\\u00e9s, je fourrai ma tartine dans une des jambes de mon pantalon.

Joe paraissait \\u00e9videmment mal \\u00e0 l\\u2019aise de ce qu\\u2019il supposait \\u00eatre un manque d\\u2019app\\u00e9tit, et il mordait tout pensif \\u00e0 m\\u00eame sa tartine des bouch\\u00e9es qu\\u2019il semblait avaler sans aucun plaisir. Il les tournait et retournait dans sa bouche plus longtemps que de coutume, et finissait par les avaler comme des pilules. Il allait saisir encore une fois, avec ses dents, le pain beurr\\u00e9 et avait d\\u00e9j\\u00e0 ouvert une bouche d\\u2019une dimension fort raisonnable, lorsque, ses yeux tombant sur moi, il s\\u2019aper\\u00e7ut que ma tartine avait disparu.

L\\u2019\\u00e9tonnement et la consternation avec lesquels Joe avait arr\\u00eat\\u00e9 le pain sur le seuil de sa bouche et me regardait, \\u00e9taient trop \\u00e9vidents pour \\u00e9chapper \\u00e0 l\\u2019observation de ma s\\u0153ur.

\\u2014 Qu\\u2019y a-t-il encore\\u00a0? dit-elle en posant sa tasse sur la table.

\\u2014 Oh\\u00a0! oh\\u00a0! murmurait Joe, en secouant la t\\u00eate d\\u2019un air de s\\u00e9rieuse remontrance, mon petit Pip, mon camarade, tu te feras du mal, \\u00e7a ne passera pas, tu n\\u2019as pas pu la m\\u00e2cher, mon petit Pip, mon ami\\u00a0!

\\u2014 Qu\\u2019est-ce qu\\u2019il y a encore, voyons\\u00a0? r\\u00e9p\\u00e9ta ma s\\u0153ur avec plus d\\u2019aigreur que la premi\\u00e8re fois.

\\u2014 Si tu peux en faire remonter quelque parcelle, en toussant, mon petit Pip, fais-le, mon ami\\u00a0! dit Joe. Certainement chacun mange comme il l\\u2019entend, mais encore, ta sant\\u00e9\\u00a0!\\u2026 ta sant\\u00e9\\u00a0!\\u2026\\u00a0\\u00bb

\\u00c0 ce moment, ma s\\u0153ur furieuse avait attrap\\u00e9 Joe par ses deux favoris et lui cognait la t\\u00eate contre le mur, pendant qu\\u2019assis dans mon coin je les consid\\u00e9rais d\\u2019un air vraiment piteux.

\\u00ab\\u00a0Maintenant, peut-\\u00eatre vas-tu me dire ce qu\\u2019il y a, gros niais que tu es\\u00a0!\\u00a0\\u00bb dit ma s\\u0153ur hors d\\u2019haleine.

Joe promena sur elle un regard d\\u00e9sesp\\u00e9r\\u00e9, prit une bouch\\u00e9e d\\u00e9sesp\\u00e9r\\u00e9e, puis il me regarda de nouveau\\u00a0:

\\u00ab\\u00a0Tu sais, mon petit Pip, dit-il d\\u2019un ton solennel et confidentiel, comme si nous eussions \\u00e9t\\u00e9 seuls, et en logeant sa derni\\u00e8re bouch\\u00e9e dans sa joue, tu sais que toi et moi sommes bons amis, et que je serais le dernier \\u00e0 faire aucun mauvais rapport contre toi\\u00a0; mais faire un pareil coup\\u2026\\u00a0\\u00bb

Il \\u00e9loigna sa chaise pour regarder le plancher entre lui et moi\\u00a0; puis il reprit\\u00a0:

\\u00ab\\u00a0Avaler un pareil morceau d\\u2019un seul coup\\u00a0!

\\u2014 Il a aval\\u00e9 tout son pain, n\\u2019est-ce pas\\u00a0? s\\u2019\\u00e9cria ma s\\u0153ur.

\\u2014 Tu sais, mon petit Pip, reprit Joe, en me regardant, sans faire la moindre attention \\u00e0 Mrs Joe, et ayant toujours sous la joue sa derni\\u00e8re bouch\\u00e9e, que j\\u2019ai aval\\u00e9 aussi, moi qui te parle\\u2026 et souvent encore\\u2026 quand j\\u2019avais ton \\u00e2ge, et j\\u2019ai vu bien des avaleurs, mais je n\\u2019ai jamais vu avaler comme toi, mon petit Pip, et je m\\u2019\\u00e9tonne que tu n\\u2019en sois pas mort\\u00a0; c\\u2019est par une permission du bon Dieu\\u00a0!\\u00a0\\u00bb

Ma s\\u0153ur s\\u2019\\u00e9lan\\u00e7a sur moi, me prit par les cheveux et m\\u2019adressa ces paroles terribles\\u00a0:

\\u00ab\\u00a0Arrive, mauvais garnement, qu\\u2019on te soigne\\u00a0!\\u00a0\\u00bb

Quelque brute m\\u00e9dicale avait, \\u00e0 cette \\u00e9poque, remis en vogue l\\u2019eau de goudron, comme un rem\\u00e8de tr\\u00e8s-efficace, et Mrs Joe en avait toujours dans son armoire une certaine provision, croyant qu\\u2019elle avait d\\u2019autant plus de vertu qu\\u2019elle \\u00e9tait plus d\\u00e9go\\u00fbtante. Dans de meilleurs temps, un peu de cet \\u00e9lixir m\\u2019avait \\u00e9t\\u00e9 administr\\u00e9 comme un excellent fortifiant\\u00a0; je craignis donc ce qui allait arriver, pressentant une nouvelle entrave \\u00e0 mes projets de sortie. Ce soir-l\\u00e0, l\\u2019urgence du cas demandait au moins une pinte de cette drogue. Mrs Joe me l\\u2019introduisit dans la gorge, pour mon plus grand bien, en me tenant la t\\u00eate sous son bras, comme un tire-bottes tient une chaussure. Joe en fut quitte pour une demi-pinte, qu\\u2019il dut avaler, bon gr\\u00e9, mal gr\\u00e9, pendant qu\\u2019il \\u00e9tait assis, m\\u00e2chant tranquillement et m\\u00e9ditant devant le feu, parce qu\\u2019il avait peut-\\u00eatre eu mal au c\\u0153ur. Jugeant d\\u2019apr\\u00e8s moi, je puis dire qu\\u2019il y aurait eu mal apr\\u00e8s, s\\u2019il n\\u2019y avait eu mal avant.

La conscience est une chose terrible, quand elle accuse, soit un homme, soit un enfant\\u00a0; mais quand ce secret fardeau se trouve li\\u00e9 \\u00e0 un autre fardeau, enfoui dans les jambes d\\u2019un pantalon, c\\u2019est (je puis l\\u2019avouer) une grande punition. La pens\\u00e9e que j\\u2019allais commettre un crime en volant Mrs Joe, l\\u2019id\\u00e9e que je volerais Joe ne me serait jamais venue, car je n\\u2019avais jamais pens\\u00e9 qu\\u2019il e\\u00fbt aucun droit sur les ustensiles du m\\u00e9nage\\u00a0; cette pens\\u00e9e, jointe \\u00e0 la n\\u00e9cessit\\u00e9 dans laquelle je me trouvais de tenir sans rel\\u00e2che ma main sur ma tartine, pendant que j\\u2019\\u00e9tais assis ou que j\\u2019allais \\u00e0 la cuisine chercher quelque chose ou faire quelques petites commissions, me rendait presque fou. Alors, quand le vent des marais venait ranimer et faire briller le feu de la chemin\\u00e9e, il me semblait entendre au dehors la voix de l\\u2019homme \\u00e0 la jambe ferr\\u00e9e, qui m\\u2019avait fait jurer le secret, me criant qu\\u2019il ne pouvait ni ne voulait je\\u00fbner jusqu\\u2019au lendemain, mais qu\\u2019il lui fallait manger tout de suite. D\\u2019autre fois, je pensais que le jeune homme, qu\\u2019il \\u00e9tait si difficile d\\u2019emp\\u00eacher de plonger ses mains dans mes entrailles, pourrait bien c\\u00e9der \\u00e0 une impatience constitutionnelle, ou se tromper d\\u2019heure et se croire des droits \\u00e0 mon c\\u0153ur et \\u00e0 mon foie ce soir m\\u00eame, au lieu de demain\\u00a0! S\\u2019il est jamais arriv\\u00e9 \\u00e0 quelqu\\u2019un de sentir ses cheveux se dresser sur sa t\\u00eate, ce doit \\u00eatre \\u00e0 moi. Mais peut-\\u00eatre cela n\\u2019est-il jamais arriv\\u00e9 \\u00e0 personne.

C\\u2019\\u00e9tait la veille de No\\u00ebl, et j\\u2019\\u00e9tais charg\\u00e9 de remuer, avec une tige en cuivre, la p\\u00e2te du pudding pour le lendemain, et cela de sept \\u00e0 huit heures, au coucou hollandais. J\\u2019essayai de m\\u2019acquitter de ce devoir sans me s\\u00e9parer de ma tartine, et cela me fit penser une fois de plus \\u00e0 l\\u2019homme charg\\u00e9 de fers, et j\\u2019\\u00e9prouvai alors une certaine tendance \\u00e0 sortir la malheureuse tartine de mon pantalon, mais la chose \\u00e9tait bien difficile. Heureusement, je parvins \\u00e0 me glisser jusqu\\u2019\\u00e0 ma petite chambre, o\\u00f9 je d\\u00e9posai cette partie de ma conscience.

\\u2014 \\u00c9coute\\u00a0! dis-je, quand j\\u2019eus fini avec le pudding, et que je revins prendre encore un peu de chaleur au coin de la chemin\\u00e9e avant qu\\u2019on ne m\\u2019envoy\\u00e2t coucher. Pourquoi tire-t-on ces grands coups de canon, Joe\\u00a0?

\\u2014 Ah\\u00a0! dit Joe, encore un for\\u00e7at d\\u2019\\u00e9vad\\u00e9\\u00a0!

\\u2014 Qu\\u2019est-ce que cela veut dire, Joe\\u00a0?\\u00a0\\u00bb

Mrs Joe, qui se chargeait toujours de donner des explications, r\\u00e9pondit avec aigreur\\u00a0:

\\u00ab\\u00a0\\u00c9chapp\\u00e9\\u00a0! \\u00e9chapp\\u00e9\\u00a0!\\u2026\\u00a0\\u00bb administrant ainsi la d\\u00e9finition comme elle administrait l\\u2019eau de goudron.

Tandis que Mrs Joe avait la t\\u00eate pench\\u00e9e sur son ouvrage d\\u2019aiguille, je t\\u00e2chai par des mouvements muets de mes l\\u00e8vres de faire entendre \\u00e0 Joe cette question\\u00a0:

\\u00ab\\u00a0Qu\\u2019est-ce c\\u2019est qu\\u2019un for\\u00e7at\\u00a0?\\u00a0\\u00bb

Joe me fit une r\\u00e9ponse grandement \\u00e9labor\\u00e9e, \\u00e0 en juger par les contorsions de sa bouche, mais dont je ne pus former que le seul mot\\u00a0: \\u00ab\\u00a0Pip\\u00a0!\\u2026\\u00a0\\u00bb

\\u00ab\\u00a0Un for\\u00e7at s\\u2019est \\u00e9vad\\u00e9 hier soir apr\\u00e8s le coup de canon du coucher du soleil, reprit Joe \\u00e0 haute voix, et on a tir\\u00e9 le canon pour en avertir\\u00a0; et maintenant on tire sans doute encore pour un autre.

\\u2014 Qu\\u2019est-ce qui tire\\u00a0? demandai-je.

\\u2014 Qu\\u2019est-ce que c\\u2019est qu\\u2019un gar\\u00e7on comme \\u00e7a\\u00a0? fit ma s\\u0153ur en fron\\u00e7ant le sourcil par-dessus son ouvrage. Quel questionneur \\u00e9ternel tu fais\\u2026 Ne fais pas de questions, et on ne te dira pas de mensonges.\\u00a0\\u00bb

Je pensais que ce n\\u2019\\u00e9tait pas tr\\u00e8s-poli pour elle-m\\u00eame de me laisser entendre qu\\u2019elle me dirait des mensonges, si je lui faisais des questions. Mais elle n\\u2019\\u00e9tait jamais polie avec moi, except\\u00e9 quand il y avait du monde.

\\u00c0 ce moment, Joe vint augmenter ma curiosit\\u00e9 au plus haut degr\\u00e9, en prenant beaucoup de peine pour ouvrir la bouche toute grande, et lui faire prendre la forme d\\u2019un mot qui, au mouvement de ses l\\u00e8vres, me parut \\u00eatre\\u00a0:

\\u00ab\\u00a0Boud\\u00e9\\u2026\\u00a0\\u00bb

Je regardai naturellement Mrs Joe et dis\\u00a0:

\\u00ab\\u00a0Elle\\u00a0?\\u00a0\\u00bb

Mais Joe ne parut rien entendre du tout, et il r\\u00e9p\\u00e9ta le mouvement avec plus d\\u2019\\u00e9nergie encore\\u00a0; je ne compris pas davantage.

\\u00ab\\u00a0Mistress Joe, dis-je comme derni\\u00e8re ressource, je voudrais bien savoir\\u2026 si cela ne te fait rien\\u2026 o\\u00f9 l\\u2019on tire le canon\\u00a0?

\\u2014 Que Dieu b\\u00e9nisse cet enfant\\u00a0! s\\u2019\\u00e9cria ma s\\u0153ur d\\u2019un ton qui faisait croire qu\\u2019elle pensait tout le contraire de ce qu\\u2019elle disait. Aux pontons\\u00a0!

\\u2014 Oh\\u00a0! dis-je en levant les yeux sur Joe, aux pontons\\u00a0!\\u00a0\\u00bb

Joe me lan\\u00e7a un regard de reproche qui disait\\u00a0:

\\u00ab\\u00a0Je te l\\u2019avais bien dit[1].

\\u2014 Et s\\u2019il te pla\\u00eet, qu\\u2019est-ce que les pontons\\u00a0? repris-je.

\\u2014 Voyez-vous, s\\u2019\\u00e9cria ma s\\u0153ur en dirigeant sur moi son aiguille et en secouant la t\\u00eate de mon c\\u00f4t\\u00e9, r\\u00e9pondez-lui une fois, et il vous fera de suite une douzaine de questions. Les pontons sont des vaisseaux qui servent de prison, et qu\\u2019on trouve en traversant tout droit les marais.

\\u2014 Je me demande qui on peut mettre dans ces prisons, et pourquoi on y met quelqu\\u2019un\\u00a0?\\u00a0\\u00bb dis-je d\\u2019une mani\\u00e8re g\\u00e9n\\u00e9rale et avec un d\\u00e9sespoir calme.

C\\u2019en \\u00e9tait trop pour Mrs Joe, qui se leva imm\\u00e9diatement.

\\u00ab\\u00a0Je vais te le dire, m\\u00e9chant vaurien, fit-elle. Je ne t\\u2019ai pas \\u00e9lev\\u00e9 pour que tu fasses mourir personne \\u00e0 petit feu\\u00a0; je serais \\u00e0 bl\\u00e2mer et non \\u00e0 louer si je l\\u2019avais fait. On met sur les pontons ceux qui ont tu\\u00e9, vol\\u00e9, fait des faux et toutes sortes de mauvaises actions, et ces gens-l\\u00e0 ont tous commenc\\u00e9 comme toi par faire des questions. Maintenant, va te coucher, et d\\u00e9p\\u00eachons\\u00a0!\\u00a0\\u00bb

On ne me donnait jamais de chandelle pour m\\u2019aller coucher, et en gagnant cette fois ma chambre dans l\\u2019obscurit\\u00e9, ma t\\u00eate tintait, car Mrs Joe avait tambourin\\u00e9 avec son d\\u00e9 sur mon cr\\u00e2ne, en disant ces derniers mots et je sentais avec \\u00e9pouvante que les pontons \\u00e9taient faits pour moi\\u00a0; j\\u2019\\u00e9tais sur le chemin, c\\u2019\\u00e9tait \\u00e9vident\\u00a0! J\\u2019avais commenc\\u00e9 \\u00e0 faire des questions, et j\\u2019\\u00e9tais sur le point de voler Mrs Joe.

Depuis cette \\u00e9poque, bien recul\\u00e9e maintenant, j\\u2019ai souvent pens\\u00e9 combien peu de gens savent \\u00e0 quel point on peut compter sur la discr\\u00e9tion des enfants frapp\\u00e9s de terreur. Cependant, rien n\\u2019est plus d\\u00e9raisonnable que la terreur. J\\u2019\\u00e9prouvais une terreur mortelle en pensant au jeune homme qui en voulait absolument \\u00e0 mon c\\u0153ur et \\u00e0 mes entrailles. J\\u2019\\u00e9prouvais une terreur mortelle au souvenir de mon interlocuteur \\u00e0 la jambe ferr\\u00e9e. J\\u2019\\u00e9prouvais une terreur mortelle de moi-m\\u00eame, depuis qu\\u2019on m\\u2019avait arrach\\u00e9 ce terrible serment\\u00a0; je n\\u2019avais aucun espoir d\\u2019\\u00eatre d\\u00e9livr\\u00e9 de cette terreur par ma toute-puissante s\\u0153ur, qui me rebutait \\u00e0 chaque tentative que je faisais\\u00a0; et je suis effray\\u00e9 rien qu\\u2019en pensant \\u00e0 ce qu\\u2019un ordre quelconque aurait pu m\\u2019amener \\u00e0 faire sous l\\u2019influence de cette terreur.

Si je dormis un peu cette nuit-l\\u00e0, ce fut pour me sentir entra\\u00een\\u00e9 vers les pontons par le courant de la rivi\\u00e8re. En passant pr\\u00e8s de la potence, je vis un fant\\u00f4me de pirate, qui me criait dans un porte-voix que je ferais mieux d\\u2019aborder et d\\u2019\\u00eatre pendu tout de suite que d\\u2019attendre. J\\u2019aurais eu peur de dormir, quand m\\u00eame j\\u2019en aurais eu l\\u2019envie, car je savais que c\\u2019\\u00e9tait \\u00e0 la premi\\u00e8re aube que je devais piller le garde-manger. Il ne fallait pas songer \\u00e0 agir la nuit, car je n\\u2019avais aucun moyen de me procurer de la lumi\\u00e8re, si ce n\\u2019est en battant le briquet, ou une pierre \\u00e0 fusil avec un morceau de fer, ce qui aurait produit un bruit semblable \\u00e0 celui du pirate agitant ses cha\\u00eenes.

D\\u00e8s que le grand rideau noir qui recouvrait ma petite fen\\u00eatre e\\u00fbt pris une l\\u00e9g\\u00e8re teinte grise, je descendis. Chacun de mes pas, sur le plancher, produisait un craquement qui me semblait crier\\u00a0: \\u00ab\\u00a0Au voleur\\u00a0!\\u2026 R\\u00e9veillez-vous, mistress Joe\\u00a0!\\u2026 R\\u00e9veillez-vous\\u00a0!\\u2026\\u00a0\\u00bb Arriv\\u00e9 au garde-manger qui, vu la saison, \\u00e9tait plus abondamment garni que de coutume, j\\u2019eus un moment de frayeur indescriptible \\u00e0 la vue d\\u2019un li\\u00e8vre pendu par les pattes. Il me sembla m\\u00eame qu\\u2019il fixait sur moi un \\u0153il beaucoup trop vif pour sa situation. Je n\\u2019avais pas le temps de rien v\\u00e9rifier, ni de choisir\\u00a0; en un mot, je n\\u2019avais le temps de rien faire. Je pris du pain, du fromage, une assiette de hachis, que je nouai dans mon mouchoir avec la fameuse tartine de la veille, un peu d\\u2019eau-de-vie dans une bouteille de gr\\u00e8s, que je transvasai dans une bouteille de verre que j\\u2019avais secr\\u00e8tement emport\\u00e9e dans ma chambre pour composer ce liquide enivrant appel\\u00e9 \\u00ab\\u00a0jus de r\\u00e9glisse\\u00a0\\u00bb, remplissant la bouteille de gr\\u00e8s avec de l\\u2019eau que je trouvai dans une cruche dans le buffet de la cuisine, un os, auquel il ne restait que fort peu de viande, et un magnifique p\\u00e2t\\u00e9 de porc. J\\u2019allais partir sans ce splendide morceau, quand j\\u2019eus l\\u2019id\\u00e9e de monter sur une planche pour voir ce que pouvait contenir ce plat de terre si soigneusement rel\\u00e9gu\\u00e9 dans le coin le plus obscur de l\\u2019armoire et que je d\\u00e9couvris le p\\u00e2t\\u00e9, je m\\u2019en emparai avec l\\u2019espoir qu\\u2019il n\\u2019\\u00e9tait pas destin\\u00e9 \\u00e0 \\u00eatre mang\\u00e9 de sit\\u00f4t, et qu\\u2019on ne s\\u2019apercevrait pas de sa disparition, de quelque temps au moins.

Une porte de la cuisine donnait acc\\u00e8s dans la forge\\u00a0; je tirai le verrou, j\\u2019ouvris cette porte, et je pris une lime parmi les outils de Joe. Puis, je remis toutes les fermetures dans l\\u2019\\u00e9tat o\\u00f9 je les avais trouv\\u00e9es\\u00a0; j\\u2019ouvris la porte par laquelle j\\u2019\\u00e9tais rentr\\u00e9 le soir pr\\u00e9c\\u00e9dent\\u00a0; je m\\u2019\\u00e9lan\\u00e7ai dans la rue, et pris ma course vers les marais brumeux.

\"}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"5a2ff3d3-019a-4781-bfab-1a1ef5ca1a91\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 68, - "fields": { - "body": "[{\"id\": \"a98dc2ae-3043-4d73-a2ad-e9cbe5f9945a\", \"type\": \"fullwidthbackgroundwithsidemenu\", \"value\": {\"bg_image\": null, \"main_content\": [{\"id\": \"f252b5d7-e2fc-4a05-ad19-682a6d203c82\", \"type\": \"text\", \"value\": \"

C\\u2019\\u00e9tait une matin\\u00e9e de gel\\u00e9e blanche tr\\u00e8s-humide. J\\u2019avais trouv\\u00e9 l\\u2019ext\\u00e9rieur de la petite fen\\u00eatre de ma chambre tout mouill\\u00e9, comme si quelque lutin y avait pleur\\u00e9 toute la nuit, et qu\\u2019il lui e\\u00fbt servi de mouchoir de poche. Je retrouvai cette m\\u00eame humidit\\u00e9 sur les haies st\\u00e9riles et sur l\\u2019herbe dess\\u00e9ch\\u00e9e, suspendue comme de grossi\\u00e8res toiles d\\u2019araign\\u00e9e, de rameau en rameau, de brin en brin\\u00a0; les grilles, les murs \\u00e9taient dans le m\\u00eame \\u00e9tat, et le brouillard \\u00e9tait si \\u00e9pais, que je ne vis qu\\u2019en y touchant le poteau au bras de bois qui indique la route de notre village, indication qui ne servait \\u00e0 rien car on ne passait jamais par l\\u00e0. Je levai les yeux avec terreur sur le poteau, ma conscience oppress\\u00e9e en faisant un fant\\u00f4me, me montrant la rue des Pontons.

Le brouillard devenait encore plus \\u00e9pais, \\u00e0 mesure que j\\u2019approchais des marais, de sorte qu\\u2019au lieu d\\u2019aller vers les objets, il me semblait que c\\u2019\\u00e9taient les objets qui venaient vers moi. Cette sensation \\u00e9tait extr\\u00eamement d\\u00e9sagr\\u00e9able pour un esprit coupable. Les grilles et les foss\\u00e9s s\\u2019\\u00e9lan\\u00e7aient \\u00e0 ma poursuite, \\u00e0 travers le brouillard, et criaient tr\\u00e8s-distinctement\\u00a0: \\u00ab\\u00a0Arr\\u00eatez-le\\u00a0! Arr\\u00eatez-le\\u00a0!\\u2026 Il emporte un p\\u00e2t\\u00e9 qui n\\u2019est pas \\u00e0 lui\\u00a0!\\u2026\\u00a0\\u00bb Les bestiaux y mettaient une ardeur \\u00e9gale et \\u00e9carquillaient leurs gros yeux en me lan\\u00e7ant par leurs naseaux un effroyable\\u00a0: \\u00ab\\u00a0Hol\\u00e0\\u00a0! petit voleur\\u00a0!\\u2026 Au voleur\\u00a0! Au voleur\\u00a0!\\u2026\\u00a0\\u00bb Un b\\u0153uf noir, \\u00e0 cravate blanche, auquel ma conscience troubl\\u00e9e trouvait un certain air cl\\u00e9rical, fixait si obstin\\u00e9ment sur moi son \\u0153il accusateur, que je ne pus m\\u2019emp\\u00eacher de lui dire en passant\\u00a0:

\\u00ab\\u00a0Je n\\u2019ai pas pu faire autrement, monsieur\\u00a0! Ce n\\u2019est pas pour moi que je l\\u2019ai pris\\u00a0!\\u00a0\\u00bb

Sur ce, il baissa sa grosse t\\u00eate, souffla par ses naseaux un nuage de vapeur, et disparut apr\\u00e8s avoir lanc\\u00e9 une ruade majestueuse avec ses pieds de derri\\u00e8re et fait le moulinet avec sa queue.

Je m\\u2019avan\\u00e7ais toujours vers la rivi\\u00e8re. J\\u2019avais beau courir, je ne pouvais r\\u00e9chauffer mes pieds, auxquels l\\u2019humidit\\u00e9 froide semblait riv\\u00e9e comme la cha\\u00eene de fer \\u00e9tait riv\\u00e9e \\u00e0 la jambe de l\\u2019homme que j\\u2019allais retrouver. Je connaissais parfaitement bien le chemin de la Batterie, car j\\u2019y \\u00e9tais all\\u00e9 une fois, un dimanche, avec Joe, et je me souvenais, qu\\u2019assis sur un vieux canon, il m\\u2019avait dit que, lorsque je serais son apprenti et directement sous sa d\\u00e9pendance, nous viendrions l\\u00e0 passer de bons quarts d\\u2019heure. Quoi qu\\u2019il en soit, le brouillard m\\u2019avait fait prendre un peu trop \\u00e0 droite\\u00a0; en cons\\u00e9quence, je dus rebrousser chemin le long de la rivi\\u00e8re, sur le bord de laquelle il y avait de grosses pierres au milieu de la vase et des pieux, pour contenir la mar\\u00e9e. En me h\\u00e2tant de retrouver mon chemin, je venais de traverser un foss\\u00e9 que je savais n\\u2019\\u00eatre pas \\u00e9loign\\u00e9 de la Batterie, quand j\\u2019aper\\u00e7us l\\u2019homme assis devant moi. Il me tournait le dos, et avait les bras crois\\u00e9s et la t\\u00eate pench\\u00e9e en avant, sous le poids du sommeil.

Je pensais qu\\u2019il serait content de me voir arriver aussi inopin\\u00e9ment avec son d\\u00e9jeuner. Je m\\u2019approchai donc de lui et le touchai doucement \\u00e0 l\\u2019\\u00e9paule. Il bondit sur ses pieds, mais ce n\\u2019\\u00e9tait pas le m\\u00eame homme, c\\u2019en \\u00e9tait un autre\\u00a0!

Et pourtant cet homme \\u00e9tait, comme l\\u2019autre, habill\\u00e9 tout en gris\\u00a0; comme l\\u2019autre, il avait un fer \\u00e0 la jambe\\u00a0; comme l\\u2019autre, il boitait, il avait froid, il \\u00e9tait enrou\\u00e9\\u00a0; enfin c\\u2019\\u00e9tait exactement le m\\u00eame homme, si ce n\\u2019est qu\\u2019il n\\u2019avait pas le m\\u00eame visage et qu\\u2019il portait un chapeau bas de forme et \\u00e0 larges bords. Je vis tout cela en un moment, car je n\\u2019eus qu\\u2019un moment pour voir tout cela\\u00a0; il me lan\\u00e7a un gros juron \\u00e0 la t\\u00eate, puis il voulut me donner un coup de poing\\u00a0; mais si ind\\u00e9cis et si faible qu\\u2019il me manqua et faillit lui-m\\u00eame rouler \\u00e0 terre car ce mouvement le fit chanceler\\u00a0; alors, il s\\u2019enfon\\u00e7a dans le brouillard, en tr\\u00e9buchant deux fois et je le perdis de vue.

\\u00ab\\u00a0C\\u2019est le jeune homme\\u00a0!\\u00a0\\u00bb pensai-je en portant la main sur mon c\\u0153ur.

Et je crois que j\\u2019aurais aussi ressenti une douleur au foie, si j\\u2019avais su o\\u00f9 il \\u00e9tait plac\\u00e9.

J\\u2019arrivai bient\\u00f4t \\u00e0 la Batterie. J\\u2019y trouvai mon homme, le v\\u00e9ritable, s\\u2019\\u00e9treignant toujours et se promenant \\u00e7\\u00e0 et l\\u00e0 en boitant, comme s\\u2019il n\\u2019e\\u00fbt pas cess\\u00e9 un instant, toute la nuit, de s\\u2019\\u00e9treindre et de se promener en m\\u2019attendant. \\u00c0 coup s\\u00fbr, il avait terriblement froid, et je m\\u2019attendais presque \\u00e0 le voir tomb\\u00e9 inanim\\u00e9 et mourir de froid \\u00e0 mes pieds. Ses yeux annon\\u00e7aient aussi une faim si \\u00e9pouvantable que, quand je lui tendis la lime, je crois qu\\u2019il e\\u00fbt essay\\u00e9 de la manger, s\\u2019il n\\u2019e\\u00fbt aper\\u00e7u mon paquet. Cette fois, il ne me mit pas la t\\u00eate en bas, et me laissa tranquillement sur mes jambes, pendant que j\\u2019ouvrais le paquet et que je vidais mes poches.

\\u00ab\\u00a0Qu\\u2019y a-t-il dans cette bouteille\\u00a0? dit-il.

\\u2014 De l\\u2019eau-de-vie,\\u00a0\\u00bb r\\u00e9pondis-je.

Il avait d\\u00e9j\\u00e0 englouti une grande partie du hachis de la mani\\u00e8re la plus singuli\\u00e8re, plut\\u00f4t comme un homme qui a une h\\u00e2te extr\\u00eame de mettre quelque chose en s\\u00fbret\\u00e9, que comme un homme qui mange\\u00a0; mais il s\\u2019arr\\u00eata un moment pour boire un peu de liqueur. Pendant tout ce temps, il tremblait avec une telle violence, qu\\u2019il avait toute la peine du monde \\u00e0 ne pas briser entre ses dents le goulot de la bouteille.

\\u00ab\\u00a0Je crois que vous avez la fi\\u00e8vre, dis-je.

\\u2014 Tu pourrais bien avoir raison, mon gar\\u00e7on, r\\u00e9pondit-il.

\\u2014 Il ne fait pas bon ici, repris-je, vous avez dormi dans les marais, ils donnent la fi\\u00e8vre et des rhumatismes.

\\u2014 Je vais toujours manger mon d\\u00e9jeuner, dit-il, avant qu\\u2019on ne me mette \\u00e0 mort. J\\u2019en ferais autant, quand m\\u00eame je serais certain d\\u2019\\u00eatre repris et ramen\\u00e9 l\\u00e0-bas, aux pontons, apr\\u00e8s avoir mang\\u00e9\\u00a0; et je te parie que j\\u2019avalerai jusqu\\u2019au dernier morceau.\\u00a0\\u00bb

Il mangeait du hachis, du pain, du fromage et du p\\u00e2t\\u00e9, tout \\u00e0 la fois\\u00a0: jetant dans le brouillard qui nous entourait des yeux inquiets, et souvent arr\\u00eatant, oui, arr\\u00eatant jusqu\\u2019au jeu des m\\u00e2choires pour \\u00e9couter. Le moindre bruit, r\\u00e9el ou imaginaire, le murmure de l\\u2019eau, ou la respiration d\\u2019un animal le faisait soudain tressaillir, et il me disait tout \\u00e0 coup\\u00a0:

\\u00ab\\u00a0Tu ne me trahis pas, petit diable\\u00a0?\\u2026 Tu n\\u2019as amen\\u00e9 personne avec toi\\u00a0?

\\u2014 Non, monsieur\\u00a0!\\u2026 non\\u00a0!

\\u2014 Tu n\\u2019as dit \\u00e0 personne de te suivre\\u00a0?

\\u2014 Non\\u00a0!

\\u2014 Bien\\u00a0! disait-il, je te crois. Tu serais un fier limier, en v\\u00e9rit\\u00e9, si \\u00e0 ton \\u00e2ge tu aidais d\\u00e9j\\u00e0 \\u00e0 faire prendre une pauvre vermine comme moi, pr\\u00e8s de la mort, et traqu\\u00e9e de tous c\\u00f4t\\u00e9s, comme je le suis.\\u00a0\\u00bb

Il se fit dans sa gorge un bruit assez semblable \\u00e0 celui d\\u2019une pendule qui va sonner, puis il passa sa manche de toile grossi\\u00e8re sur ses yeux.

Touch\\u00e9 de sa d\\u00e9solation, et voyant qu\\u2019il revenait toujours au p\\u00e2t\\u00e9 de pr\\u00e9f\\u00e9rence, je m\\u2019enhardis assez pour lui dire\\u00a0:

\\u00ab\\u00a0Je suis bien aise que vous le trouviez bon.

\\u2014 Est-ce toi qui as parl\\u00e9\\u00a0?

\\u2014 Je dis que je suis bien aise que vous le trouviez bon.

\\u2014 Merci, mon gar\\u00e7on, je le trouve excellent.\\u00a0\\u00bb

Je m\\u2019\\u00e9tais souvent amus\\u00e9 \\u00e0 regarder manger un gros chien que nous avions \\u00e0 la maison, et je remarquai qu\\u2019il y avait une similitude frappante dans la mani\\u00e8re de manger de ce chien et celle de cet homme. Il donnait des coups de dent secs comme le chien\\u00a0; il avalait, ou plut\\u00f4t il happait d\\u2019\\u00e9normes bouch\\u00e9es, trop t\\u00f4t et trop vite, et regardait de c\\u00f4t\\u00e9 et d\\u2019autres en mangeant, comme s\\u2019il e\\u00fbt craint que, de toutes les directions, on ne v\\u00eent lui enlever son p\\u00e2t\\u00e9. Il \\u00e9tait cependant trop pr\\u00e9occup\\u00e9 pour en bien appr\\u00e9cier le m\\u00e9rite, et je pensais que si quelqu\\u2019un avait voulu partager son d\\u00eener, il se f\\u00fbt jet\\u00e9 sur ce quelqu\\u2019un pour lui donner un coup de dent, tout comme aurait pu le faire le chien, en pareille circonstance.

\\u00ab\\u00a0Je crains bien que vous ne lui laissiez rien, dis-je timidement, apr\\u00e8s un silence pendant lequel j\\u2019avais h\\u00e9sit\\u00e9 \\u00e0 faire cette observation\\u00a0: il n\\u2019en reste plus \\u00e0 l\\u2019endroit o\\u00f9 j\\u2019ai pris celui-ci.

\\u2014 Lui en laisser\\u00a0?\\u2026 \\u00c0 qui\\u00a0?\\u2026 dit mon ami, en s\\u2019arr\\u00eatant sur un morceau de cro\\u00fbte.

\\u2014 Au jeune homme. \\u00c0 celui dont vous m\\u2019avez parl\\u00e9. \\u00c0 celui qui se cache avec vous.

\\u2014 Ah\\u00a0! ah\\u00a0! reprit-il avec quelque chose comme un \\u00e9clat de rire\\u00a0; lui\\u00a0!\\u2026 oui\\u00a0!\\u2026 oui\\u00a0!\\u2026 Il n\\u2019a pas besoin de vivres.

\\u2014 Il semblait pourtant en avoir besoin,\\u00a0\\u00bb dis-je.

L\\u2019homme cessa de manger et me regarda d\\u2019un air surpris.

\\u00ab\\u00a0Il t\\u2019a sembl\\u00e9\\u00a0?\\u2026 Quand\\u00a0?\\u2026

\\u2014 Tout \\u00e0 l\\u2019heure.

\\u2014 O\\u00f9 cela\\u00a0?

\\u2014 L\\u00e0-bas\\u00a0!\\u2026 dis-je, en indiquant du doigt\\u00a0; l\\u00e0-bas, o\\u00f9 je l\\u2019ai trouv\\u00e9 endormi\\u00a0; je l\\u2019avais pris pour vous.\\u00a0\\u00bb

Il me prit au collet et me regarda d\\u2019une mani\\u00e8re telle, que je commen\\u00e7ai \\u00e0 croire qu\\u2019il \\u00e9tait revenu \\u00e0 sa premi\\u00e8re id\\u00e9e de me couper la gorge.

\\u00ab\\u00a0Il \\u00e9tait habill\\u00e9 tout comme vous, seulement, il avait un chapeau, dis-je en tremblant, et\\u2026 et\\u2026 (j\\u2019\\u00e9tais tr\\u00e8s-embarrass\\u00e9 pour lui dire ceci) et\\u2026 il avait les m\\u00eames raisons que vous pour m\\u2019emprunter une lime. N\\u2019avez-vous pas entendu le canon hier soir\\u00a0?

\\u2014 Alors on a tir\\u00e9\\u00a0! se dit-il \\u00e0 lui-m\\u00eame.

\\u2014 Je m\\u2019\\u00e9tonne que vous ne le sachiez pas, repris-je, car nous l\\u2019avons entendu de notre maison, qui est plus \\u00e9loign\\u00e9e que cet endroit\\u00a0; et, de plus, nous \\u00e9tions enferm\\u00e9s.

\\u2014 C\\u2019est que, dit-il, quand un homme est dans ma position, avec la t\\u00eate vide et l\\u2019estomac creux, \\u00e0 moiti\\u00e9 mort de froid et de faim, il n\\u2019entend pendant toute la nuit que le bruit du canon et des voix qui l\\u2019appellent\\u2026 \\u00c9coute\\u00a0! Il voit des soldats avec leurs habits rouges, \\u00e9clair\\u00e9s par les torches, qui s\\u2019avancent et vont l\\u2019entourer\\u00a0; il entend appeler son num\\u00e9ro, il entend r\\u00e9sonner les mousquets, il entend le commandement\\u00a0: en joue\\u00a0!\\u2026 Il entend tout cela, et il n\\u2019y a rien. Oui\\u2026 je les ai vus me poursuivre une partie de la nuit, s\\u2019avancer en ordre, ces damn\\u00e9s, en pi\\u00e9tinant, pi\\u00e9tinant\\u2026 j\\u2019en ai vu cent\\u2026 et comme ils tiraient\\u00a0!\\u2026 Oui, j\\u2019ai vu le brouillard se dissiper au canon, et, comme par enchantement, faire place au jour\\u00a0!\\u2026 Mais cet homme\\u00a0; il avait dit tout le reste comme s\\u2019il e\\u00fbt oubli\\u00e9 ma r\\u00e9ponse\\u00a0; as-tu remarqu\\u00e9 quelque chose de particulier en lui\\u00a0?

\\u2014 Il avait la face meurtrie, dis-je, en me souvenant que j\\u2019avais remarqu\\u00e9 cette particularit\\u00e9.

\\u2014 Ici, n\\u2019est-ce pas\\u00a0? s\\u2019\\u00e9cria l\\u2019homme, en frappant sa joue gauche, sans mis\\u00e9ricorde, avec le plat de la main.

\\u2014 Oui\\u2026 l\\u00e0\\u00a0!

\\u2014 O\\u00f9 est-il\\u00a0?\\u00a0\\u00bb

En disant ces mots, il d\\u00e9posa dans la poche de sa jaquette grise le peu de nourriture qui restait.

\\u00ab\\u00a0Montre-moi le chemin qu\\u2019il a pris, je le tuerai comme un chien\\u00a0! Maudit fer, qui m\\u2019emp\\u00eache de marcher\\u00a0! Passe-moi la lime, mon gar\\u00e7on.\\u00a0\\u00bb

Je lui indiquai la direction que l\\u2019autre avait prise, \\u00e0 travers le brouillard. Il regarda un instant, puis il s\\u2019assit sur le bord de l\\u2019herbe mouill\\u00e9e et commen\\u00e7a \\u00e0 limer le fer de sa jambe, comme un fou, sans s\\u2019inqui\\u00e9ter de moi, ni de sa jambe, qui avait une ancienne blessure qui saignait et qu\\u2019il traitait aussi brutalement que si elle e\\u00fbt \\u00e9t\\u00e9 aussi d\\u00e9pourvue de sensibilit\\u00e9 qu\\u2019une lime. Je recommen\\u00e7ais \\u00e0 avoir peur de lui, maintenant que je le voyais s\\u2019animer de cette fa\\u00e7on\\u00a0; de plus j\\u2019\\u00e9tais effray\\u00e9 de rester aussi longtemps dehors de la maison. Je lui dis donc qu\\u2019il me fallait partir\\u00a0; mais il n\\u2019y fit pas attention, et je pensai que ce que j\\u2019avais de mieux \\u00e0 faire \\u00e9tait de m\\u2019\\u00e9loigner. La derni\\u00e8re fois que je le vis, il avait toujours la t\\u00eate pench\\u00e9e sur son genou, il limait toujours ses fers et murmurait de temps \\u00e0 autre quelque impr\\u00e9cation d\\u2019impatience contre ses fers ou contre sa jambe. La derni\\u00e8re fois que je l\\u2019entendis, je m\\u2019arr\\u00eatai dans le brouillard pour \\u00e9couter et j\\u2019entendis le bruit de la lime qui allait toujours.

\"}], \"bg_color_class\": \"\", \"sidemenu_title\": \"\", \"sidemenu_content\": [{\"id\": \"cfae7023-25bb-4186-8203-f733194dad98\", \"type\": \"pagetree\", \"value\": {\"page\": 7}}]}}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 69, - "fields": { - "body": "[{\"id\": \"9300139d-69fa-468e-bf4e-0764cea9bf5b\", \"type\": \"paragraph\", \"value\": \"

Cette page restera en brouillon

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - }, - { - "model": "content_manager.contentpage", - "pk": 70, - "fields": { - "body": "[{\"id\": \"24a5023b-a062-497c-8cf2-724b8706c4f0\", \"type\": \"paragraph\", \"value\": \"

Page vide.

\"}]", - "header_with_title": false, - "header_image": null, - "header_color_class": null, - "header_large": false, - "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": "[]", - "header_cta_label": null, - "header_cta_link": null, - "source_url": null - } - } -] diff --git a/content_manager/management/commands/export_templates.py b/content_manager/management/commands/export_page_templates.py similarity index 51% rename from content_manager/management/commands/export_templates.py rename to content_manager/management/commands/export_page_templates.py index 751bf2c2..e1c08fab 100644 --- a/content_manager/management/commands/export_templates.py +++ b/content_manager/management/commands/export_page_templates.py @@ -1,6 +1,8 @@ +import json + from django.core.management.base import BaseCommand -from content_manager.services.import_export import ImportExportImage, ImportExportPage +from content_manager.services.import_export import TEMPLATES_DATA_FILE, ImportExportImages, ImportExportPage SOURCE_URL = "https://sites-faciles.beta.numerique.gouv.fr/" @@ -15,9 +17,16 @@ def handle(self, *args, **kwargs): image_ids = [] + pages = {} + for page_id in page_ids: page = ImportExportPage(SOURCE_URL, page_id) + pages[page_id] = page.json_export image_ids += page.image_ids - image_exporter = ImportExportImage(SOURCE_URL, image_ids) + image_exporter = ImportExportImages(image_ids, SOURCE_URL) image_exporter.download_images() + + export_data = {"image_ids": image_ids, "pages": pages} + with open(TEMPLATES_DATA_FILE, "w") as json_file: + json.dump(export_data, json_file, indent=2) diff --git a/content_manager/management/commands/import_page_templates.py b/content_manager/management/commands/import_page_templates.py new file mode 100644 index 00000000..8a7a03e4 --- /dev/null +++ b/content_manager/management/commands/import_page_templates.py @@ -0,0 +1,19 @@ +import json + +from django.core.management.base import BaseCommand + +from content_manager.services.import_export import TEMPLATES_DATA_FILE, ImportExportImages + + +class Command(BaseCommand): + def handle(self, *args, **kwargs): + """ + Import template pages + """ + + with open(TEMPLATES_DATA_FILE, "r") as json_file: + page_templates_data = json.load(json_file) + + image_importer = ImportExportImages(page_templates_data["image_ids"]) + + image_importer.import_images() diff --git a/static/template_images/image_data.json b/content_manager/page_templates/image_data.json similarity index 53% rename from static/template_images/image_data.json rename to content_manager/page_templates/image_data.json index b2f98ba1..950600d8 100644 --- a/static/template_images/image_data.json +++ b/content_manager/page_templates/image_data.json @@ -4,8 +4,11 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/6/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Home.original.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240925%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240925T152803Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=15f606ea51cfd08a6391a90dd4643941e5f5e56c8ed865129a2e28b65ac84344" - } + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Home.original.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a4c130cd6d0719dcdde1c4d660f41d1182e4e95159ac48060316e18bde0779b0" + }, + "filename": "Home.original.png", + "is_pictogram": false, + "title": "Home.original" }, "74": { "meta": { @@ -16,9 +19,11 @@ "Pictogrammes", "System" ], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Information?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240925%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240925T152803Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c5a1514291d4db35dec5107ef7730cf1ab0b44d7cfa6d32fb329008684c15ae5" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Information?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a2ad715db962bef2b285df60e362f51925b29c9191089e0a91e30ccc22c97f45" }, - "local_id": 53 + "filename": "Pictogrammes DSFR \u2014 System \u2014 Information", + "is_pictogram": true, + "title": "Pictogrammes DSFR \u2014 System \u2014 Information" }, "77": { "meta": { @@ -29,24 +34,32 @@ "Pictogrammes", "System" ], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Success?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240925%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240925T152803Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=b893cbe9f00f29095ea923b18c985d4eea2cff481664303de361a9f9bf134c4d" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Success?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=040557aa51b406fbcb811a42b4e373dbffc348f5655d6d4bd2e48dc56bd32b5f" }, - "local_id": 56 + "filename": "Pictogrammes DSFR \u2014 System \u2014 Success", + "is_pictogram": true, + "title": "Pictogrammes DSFR \u2014 System \u2014 Success" }, "81": { "meta": { "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/81/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_Website_builder_re_ii6e.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240925%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240925T152803Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=aa534e0b18b6d1eda4c4f1b3b10d582879af147b6b66fc6d3722b1811fc8ecb1" - } + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_Website_builder_re_ii6e.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=b179f4f6acb8e749142ec7252473ad559f5b00e863737cc8269d9e26e323b849" + }, + "filename": "undraw_Website_builder_re_ii6e.png", + "is_pictogram": false, + "title": "Illustration CMS" }, "84": { "meta": { "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/84/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_building_websites_i78t_1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240925%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240925T152803Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=92917edbfb23c6a502f56eddbede8a8f2d301c4bdcb2479c0e30ed9f90df3adc" - } + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_building_websites_i78t_1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=19bba3e8554a6010eafa5cc08762d234ff36e7faea4d6989ef87ce8ba6eac762" + }, + "filename": "undraw_building_websites_i78t_1.png", + "is_pictogram": false, + "title": "Illustration CMS 2" } -} +} \ No newline at end of file diff --git a/static/template_images/Home.original.png b/content_manager/page_templates/img/Home.original.png similarity index 100% rename from static/template_images/Home.original.png rename to content_manager/page_templates/img/Home.original.png diff --git a/static/template_images/undraw_Website_builder_re_ii6e.png b/content_manager/page_templates/img/undraw_Website_builder_re_ii6e.png similarity index 100% rename from static/template_images/undraw_Website_builder_re_ii6e.png rename to content_manager/page_templates/img/undraw_Website_builder_re_ii6e.png diff --git a/static/template_images/undraw_building_websites_i78t_1.png b/content_manager/page_templates/img/undraw_building_websites_i78t_1.png similarity index 100% rename from static/template_images/undraw_building_websites_i78t_1.png rename to content_manager/page_templates/img/undraw_building_websites_i78t_1.png diff --git a/content_manager/page_templates/pages_data.json b/content_manager/page_templates/pages_data.json new file mode 100644 index 00000000..938f345c --- /dev/null +++ b/content_manager/page_templates/pages_data.json @@ -0,0 +1,905 @@ +{ + "image_ids": [ + 81, + 74, + 84, + 77, + 84, + 6 + ], + "pages": { + "32": { + "id": 32, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/32/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/template-landing-page/", + "slug": "template-landing-page", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:38:17.932779+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Landing page d'un service num\u00e9rique", + "body": [ + { + "type": "paragraph", + "value": "

Voici un exemple de page que vous pouvez utiliser pour promouvoir un service num\u00e9rique.

" + }, + { + "type": "multicolumns", + "value": { + "bg_image": null, + "bg_color_class": "", + "bg_color": "", + "title": "", + "heading_tag": "h2", + "columns": [ + { + "type": "text_cta", + "value": { + "text": "

Une phrase accrocheuse \u00e0 propos de votre service

Un texte explicatif pour que les visiteurs du site comprennent de quoi il s'agit et aient envie d'en savoir plus sur votre service.

", + "cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": 29, + "document": null, + "external_url": "", + "text": "Appel \u00e0 action", + "button_type": "fr-btn", + "icon_class": "", + "icon_side": "" + } + } + ] + } + ], + "cta_label": "", + "cta_url": "" + } + }, + { + "type": "image", + "value": { + "title": "", + "heading_tag": "h3", + "image": 81, + "alt": "", + "width": "fr-content-media--sm", + "image_ratio": "fr-ratio-3x2", + "caption": "", + "url": "" + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "grey", + "content": [ + { + "type": "text", + "value": "

Pourquoi utiliser ce service ?

" + }, + { + "type": "item_grid", + "value": { + "column_width": "4", + "items": [ + { + "type": "card", + "value": { + "title": "Argument #1", + "heading_tag": "h3", + "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", + "image": 77, + "image_ratio": "fr-ratio-1x1", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Argument #2", + "heading_tag": "h3", + "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", + "image": 77, + "image_ratio": "fr-ratio-1x1", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Argument #3", + "heading_tag": "h3", + "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", + "image": 77, + "image_ratio": "fr-ratio-1x1", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text", + "value": "

Quelles sont les fonctionnalit\u00e9s principales de votre service ?

" + }, + { + "type": "item_grid", + "value": { + "column_width": "3", + "items": [ + { + "type": "tile", + "value": { + "title": "Fonctionnalit\u00e9 #1", + "heading_tag": "h3", + "description": "

Vous pouvez expliquer ici l'une des fonctionnalit\u00e9s phares de votre service.

", + "image": 74, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Fonctionnalit\u00e9 #2", + "heading_tag": "h3", + "description": "

Vous pouvez expliquer ici l'une des fonctionnalit\u00e9s phares de votre service.

", + "image": 74, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Fonctionnalit\u00e9 #3", + "heading_tag": "h3", + "description": "

Vous pouvez expliquer ici l'une des fonctionnalit\u00e9s phares de votre service.

", + "image": 74, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Fonctionnalit\u00e9 #4", + "heading_tag": "h3", + "description": "

Vous pouvez expliquer ici l'une des fonctionnalit\u00e9s phares de votre service.

", + "image": 74, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + } + ] + } + } + ] + } + }, + { + "type": "imageandtext", + "value": { + "image": 84, + "image_side": "right", + "image_ratio": "5", + "text": "

\u00c0 qui s'adresse votre service ?

Vous pouvez expliquer ici le p\u00e9rim\u00e8tre d'usage du service :

  • Exemple type d'utilisateur avec son cas d'usage
  • Exemple type d'utilisateur avec son cas d'usage
  • Exemple type d'utilisateur avec son cas d'usage
", + "link": { + "page": null, + "document": null, + "external_url": "", + "text": "", + "icon": "", + "size": "" + }, + "link_label": "", + "page": null, + "link_url": "" + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text", + "value": "

Quelques exemples de cas d'usage

" + }, + { + "type": "item_grid", + "value": { + "column_width": "6", + "items": [ + { + "type": "card", + "value": { + "title": "Exemple #1", + "heading_tag": "h3", + "description": "

Expliquez ici le cas d'usage que vous voulez mettre en valeur pour que vos utilisateurs puissent se projeter dans l'usage de votre service.

", + "image": 81, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Exemple de tag 1", + "is_small": true, + "color": "green-tilleul-verveine", + "icon_class": "", + "link": { + "page": 3, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Exemple #2", + "heading_tag": "h3", + "description": "

Expliquez ici le cas d'usage que vous voulez mettre en valeur pour que vos utilisateurs puissent se projeter dans l'usage de votre service.

", + "image": 81, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Exemple de tag 1", + "is_small": true, + "color": "green-tilleul-verveine", + "icon_class": "", + "link": { + "page": 3, + "document": null, + "external_url": "" + } + } + }, + { + "type": "tag", + "value": { + "label": "Exemple de tag 2", + "is_small": true, + "color": "green-bourgeon", + "icon_class": "", + "link": { + "page": 19, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Exemple #3", + "heading_tag": "h3", + "description": "

Expliquez ici le cas d'usage que vous voulez mettre en valeur pour que vos utilisateurs puissent se projeter dans l'usage de votre service.

", + "image": 81, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Exemple de tag 2", + "is_small": true, + "color": "green-bourgeon", + "icon_class": "", + "link": { + "page": 19, + "document": null, + "external_url": "" + } + } + }, + { + "type": "tag", + "value": { + "label": "Exemple de tag 3", + "is_small": true, + "color": "orange-terre-battue", + "icon_class": "", + "link": { + "page": 18, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Exemple #4", + "heading_tag": "h3", + "description": "

Expliquez ici le cas d'usage que vous voulez mettre en valeur pour que vos utilisateurs puissent se projeter dans l'usage de votre service.

", + "image": 81, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Exemple de tag 3", + "is_small": true, + "color": "orange-terre-battue", + "icon_class": "", + "link": { + "page": 18, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ] + } + }, + { + "type": "accordions", + "value": [ + { + "type": "title", + "value": "Questions fr\u00e9quentes de vos utilisateurs" + }, + { + "type": "accordion", + "value": { + "title": "Question fr\u00e9quente #1 ?", + "content": "

Saisissez la r\u00e9ponse dans ce champ.

" + } + }, + { + "type": "accordion", + "value": { + "title": "Question fr\u00e9quente #2 ?", + "content": "

Saisissez la r\u00e9ponse dans ce champ.

" + } + }, + { + "type": "accordion", + "value": { + "title": "Question fr\u00e9quente #3 ?", + "content": "

Saisissez la r\u00e9ponse dans ce champ.

" + } + }, + { + "type": "accordion", + "value": { + "title": "Question fr\u00e9quente #4 ?", + "content": "

Saisissez la r\u00e9ponse dans ce champ.

" + } + } + ] + }, + { + "type": "stepper", + "value": { + "title": "Votre feuille de route", + "total": 3, + "current": 2, + "steps": [ + { + "type": "step", + "value": { + "title": "Date", + "detail": "Premi\u00e8re \u00e9tape \r\nCourte description des enjeux" + } + }, + { + "type": "step", + "value": { + "title": "Date", + "detail": "Etape actuelle\r\nCourte description des enjeux" + } + }, + { + "type": "step", + "value": { + "title": "Date", + "detail": "Prochaine \u00e9tape\r\nCourte description des enjeux" + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text_cta", + "value": { + "text": "

Utilisez ce dernier bloc pour inciter \u00e0 une action

", + "cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": 31, + "document": null, + "external_url": "", + "text": "Appel \u00e0 action", + "button_type": "fr-btn fr-btn--secondary", + "icon_class": "fr-icon-mail-open-line", + "icon_side": "fr-btn--icon-left" + } + } + ] + } + ], + "cta_label": "", + "cta_url": "" + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "37": { + "id": 37, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/37/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/en-t%C3%AAtes-et-bandeaux-dappel-%C3%A0-action/", + "slug": "en-t\u00eates-et-bandeaux-dappel-\u00e0-action", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:34:36.937313+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "En-t\u00eates et bandeaux d'appel \u00e0 action", + "body": [ + { + "type": "paragraph", + "value": "

Autres exemples

Il est \u00e9galement possible de cr\u00e9er des bandeaux d'appel \u00e0 action avec d'autres types de blocs. Voici quelques exemples.

" + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": 6, + "bg_color_class": "", + "content": [ + { + "type": "text_cta", + "value": { + "text": "

Texte avec appel \u00e0 action, sur fond pleine largeur

Le \"fond pleine largeur\" peut \u00eatre une image de votre choix, ou l'une des couleurs du Syst\u00e8me de Design de l'Etat (DSFR).

Pour cet exemple, nous avons opt\u00e9 pour une image en fond.

", + "cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": null, + "document": null, + "external_url": "", + "text": "Bouton primaire avec ic\u00f4ne", + "button_type": "fr-btn", + "icon_class": "fr-icon-award-line", + "icon_side": "fr-btn--icon-left" + } + } + ] + } + ], + "cta_label": "", + "cta_url": "" + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "grey", + "content": [ + { + "type": "text_cta", + "value": { + "text": "

Texte avec appel \u00e0 action, sur fond pleine largeur

Pour cet exemple, nous avons opt\u00e9 pour un \"fond pleine largeur\" de couleur grise, et nous y avons ins\u00e9r\u00e9 un \"texte avec appel action\".

Voici les diff\u00e9rents types de bouton (\"appel \u00e0 action\") disponibles :

", + "cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": null, + "document": null, + "external_url": "", + "text": "Un bouton primaire", + "button_type": "fr-btn", + "icon_class": "", + "icon_side": "" + } + }, + { + "type": "button", + "value": { + "page": null, + "document": null, + "external_url": "", + "text": "Un bouton secondaire", + "button_type": "fr-btn fr-btn--secondary", + "icon_class": "", + "icon_side": "" + } + }, + { + "type": "button", + "value": { + "page": null, + "document": null, + "external_url": "", + "text": "Un bouton tertiaire", + "button_type": "fr-btn fr-btn--tertiary", + "icon_class": "", + "icon_side": "" + } + }, + { + "type": "button", + "value": { + "page": null, + "document": null, + "external_url": "", + "text": "Un bouton tertiaire sans bordure", + "button_type": "fr-btn fr-btn--tertiary-no-outline", + "icon_class": "", + "icon_side": "" + } + } + ] + } + ], + "cta_label": "", + "cta_url": "" + } + } + ] + } + }, + { + "type": "multicolumns", + "value": { + "bg_image": null, + "bg_color_class": "beige-gris-galet", + "bg_color": "", + "title": "Multi-colonnes", + "heading_tag": "", + "columns": [ + { + "type": "text_cta", + "value": { + "text": "

Pour cet exemple, nous avons opt\u00e9 pour un bloc \"multi-colonne\", en ins\u00e9rant :

  • un \"texte et appel \u00e0 action\" dans la colonne 1
  • une image dans la colonne 2

Il est possible de choisir une couleur de fond pour votre bloc \"multi-colonne\". Nous avons s\u00e9lectionn\u00e9 ici \"gris galet\".

", + "cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": 34, + "document": null, + "external_url": "", + "text": "Bouton primaire", + "button_type": "fr-btn", + "icon_class": "", + "icon_side": "" + } + } + ] + } + ], + "cta_label": "", + "cta_url": "" + } + }, + { + "type": "image", + "value": { + "title": "", + "heading_tag": "", + "image": 84, + "alt": "", + "width": "fr-content-media--sm", + "image_ratio": "fr-ratio-3x2", + "caption": "", + "url": "" + } + } + ] + } + } + ], + "header_image": { + "id": 96, + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/96/", + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ab3eb3fcf01e64cb0103a7e9bed52a309faed74f61dee554ec87f63ab9fef88c" + }, + "title": "Header" + }, + "header_image_render": { + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fef87600ad89bf1a87e4a1061ae82afbc1f836893d2d6e1324d355aabe3c1ff9", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fef87600ad89bf1a87e4a1061ae82afbc1f836893d2d6e1324d355aabe3c1ff9", + "width": 839, + "height": 438, + "alt": "Header" + }, + "header_image_thumbnail": { + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9bfd82e786b7f78d58a4792a517689aa82c770b613f516603119c18e5a9b9ede", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9bfd82e786b7f78d58a4792a517689aa82c770b613f516603119c18e5a9b9ede", + "width": 376, + "height": 211, + "alt": "Header" + }, + "header_with_title": true, + "header_color_class": null, + "header_large": false, + "header_darken": true, + "header_cta_text": "

Vous pouvez cr\u00e9er une en-t\u00eate comme celle-ci, en vous rendant dans l'onglet \"Promotion\" de votre page, puis en choisissant les \"Options d'en-t\u00eate\".

Vous pourrez y ins\u00e9rer une image ou une couleur de fond, ainsi que du texte format\u00e9 et des boutons d'appel \u00e0 action.

Cette en-t\u00eate appara\u00eetra lorsque des aper\u00e7us de votre page seront g\u00e9n\u00e9r\u00e9s.

", + "header_cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": 37, + "document": null, + "external_url": "", + "text": "Bouton d'appel \u00e0 action", + "button_type": "fr-btn", + "icon_class": "", + "icon_side": "" + }, + "id": "0ee1a462-98a6-4261-a117-e56c331fcbb3" + } + ], + "id": "7a709cda-d544-492b-812b-26e7f5b41fe4" + } + ], + "header_cta_label": null, + "header_cta_link": null + } + } +} \ No newline at end of file diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py index 5c68bd2d..9b892913 100644 --- a/content_manager/services/import_export.py +++ b/content_manager/services/import_export.py @@ -1,12 +1,25 @@ +import copy import json import os +from io import BytesIO from urllib.request import urlretrieve import requests from django.conf import settings +from django.contrib.auth import get_user_model +from django.core.files.images import ImageFile +from django.utils import timezone from wagtail.images.models import Image +from wagtail.utils.file import hash_filelike -IMAGES_FOLDER = settings.BASE_DIR / "static/template_images" +from content_manager.utils import get_or_create_collection + +PAGE_TEMPLATES_ROOT = settings.BASE_DIR / "content_manager/page_templates" +TEMPLATES_DATA_FILE = PAGE_TEMPLATES_ROOT / "pages_data.json" +IMAGES_FOLDER = PAGE_TEMPLATES_ROOT / "img" +IMAGES_DATA_FILE = PAGE_TEMPLATES_ROOT / "image_data.json" + +User = get_user_model() class ImportExportPage: @@ -18,13 +31,22 @@ def __init__(self, source_site, source_page_id) -> None: self.source_site = source_site self.source_page_id = source_page_id self.source_content = self.get_content_from_source_page() + self.source_body = self.source_content["body"] + self.user = User.objects.filter(is_superuser=True).first() - self.source_body = remove_block_ids(self.source_content["body"]) + self.content = copy.deepcopy(self.source_content) + self.content["body"] = remove_block_ids(self.source_body) + self.content.pop("tags", None) + self.clear_meta_keys() self.images = {} self.image_ids = [] self.get_source_images() + @property + def json_export(self) -> dict: + return self.content + @property def source_page_api_url(self): return f"{self.source_site}api/v2/pages/{self.source_page_id}/" @@ -61,28 +83,32 @@ def locate_image_ids(self, json_object): for item in json_object: self.locate_image_ids(item) + def clear_meta_keys(self): + keys = ["parent", "seo_title", "search_description"] + for key in keys: + self.content["meta"].pop(key, None) + -class ImportExportImage: +class ImportExportImages: """ Generic class for import/export of an Image from a wagtail instance """ - def __init__(self, source_site, image_ids) -> None: + def __init__(self, image_ids, source_site=None) -> None: self.image_ids = set(image_ids) self.source_site = source_site # Create the folder for the files if it doesn't exist os.makedirs(IMAGES_FOLDER, exist_ok=True) - self.image_data = self.get_image_data() + # Create the collection if it doesn't exit + self.collection = get_or_create_collection("Images des modèles de page") - @property - def image_data_file(self): - return IMAGES_FOLDER / "image_data.json" + self.image_data = self.get_image_data() def get_image_data(self) -> dict: - if os.path.isfile(self.image_data_file): - with open(self.image_data_file, "r") as json_file: + if os.path.isfile(IMAGES_DATA_FILE): + with open(IMAGES_DATA_FILE, "r") as json_file: image_data = json.load(json_file) else: image_data = {} @@ -104,6 +130,7 @@ def download_images(self) -> None: if i not in self.image_data: self.image_data[i] = {} self.image_data[i]["meta"] = image["meta"] + self.image_data[i]["title"] = image["title"] image_url = image["meta"]["download_url"] image_name = image_url.split("?")[0].split("/")[-1] @@ -111,14 +138,55 @@ def download_images(self) -> None: # No need to export the pictograms, as they should already be present if "Pictogrammes_DSFR" in image_name: pictogram_title = image_name.replace("__", " — ").replace("_", " ") - pictogram = Image.objects.filter(title=pictogram_title).first() - self.image_data[i]["local_id"] = pictogram.id + self.image_data[i]["filename"] = pictogram_title + self.image_data[i]["is_pictogram"] = True + else: urlretrieve(image_url, IMAGES_FOLDER / image_name) + self.image_data[i]["filename"] = image_name + self.image_data[i]["is_pictogram"] = False - with open(self.image_data_file, "w") as json_file: + with open(IMAGES_DATA_FILE, "w") as json_file: json.dump(self.image_data, json_file, indent=2) + def import_images(self) -> None: + for i in self.image_ids: + i = str(i) + image_data = self.image_data[i] + filename = image_data["filename"] + + if image_data["is_pictogram"]: + pictogram = Image.objects.filter(title=filename).first() + image_data["local_id"] = pictogram.id + else: + image = self.get_or_create_image(image_data) + image_data["local_id"] = image.id + + print(self.image_data) + + def get_or_create_image(self, image_data) -> Image: + filename = image_data["filename"] + imported_filename = f"template_image_{filename.lower()}" + title = image_data["title"] + + with open(IMAGES_FOLDER / filename, "rb") as image_file: + file_hash = hash_filelike(image_file) + + image = Image.objects.filter(file_hash=file_hash).first() + + if not image: + image = Image( + file=ImageFile(BytesIO(image_file.read()), name=imported_filename), + title=title, + uploaded_by_user=self.user, + collection=self.collection, + created_at=timezone.now(), + ) + image.save() + image.get_file_hash() + + return image + def remove_block_ids(json_object): """ From 8759f2d61b455b4dff42170a23eac09e9295c368 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 30 Sep 2024 19:16:20 +0200 Subject: [PATCH 05/17] Check hash for pictograms --- .../management/commands/import_dsfr_pictograms.py | 9 +++++---- content_manager/services/import_export.py | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content_manager/management/commands/import_dsfr_pictograms.py b/content_manager/management/commands/import_dsfr_pictograms.py index 15eb6825..e316f299 100644 --- a/content_manager/management/commands/import_dsfr_pictograms.py +++ b/content_manager/management/commands/import_dsfr_pictograms.py @@ -11,7 +11,7 @@ class Command(BaseCommand): help = """Import all the pictograms from the DSFR""" def handle(self, *args, **kwargs): - call_command("collectstatic", interactive=False) + call_command("collectstatic", interactive=False, clear=True) picto_root = "staticfiles/dsfr/dist/artwork/pictograms/" picto_folders = os.listdir(picto_root) @@ -28,10 +28,10 @@ def handle(self, *args, **kwargs): base_file_title = filename.split(".")[0].replace("-", " ").title() full_image_title = f"Pictogrammes DSFR — {folder_title} — {base_file_title}" - image_exists = Image.objects.filter(title=full_image_title).count() - + image_exists = Image.objects.filter(title=full_image_title).first() if image_exists: - print(f"A file named {full_image_title} already exists, skipping") + file_hash = image_exists.get_file_hash() + print(f"A file named {full_image_title} already exists, skipping (file_hash: {file_hash})") else: image = import_image( full_path=os.path.join(folder_path, filename), @@ -42,6 +42,7 @@ def handle(self, *args, **kwargs): image.collection = collection image.save() + image.get_file_hash() image.tags.add("DSFR") image.tags.add("Pictogrammes") diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py index 9b892913..b24868b4 100644 --- a/content_manager/services/import_export.py +++ b/content_manager/services/import_export.py @@ -173,7 +173,6 @@ def get_or_create_image(self, image_data) -> Image: file_hash = hash_filelike(image_file) image = Image.objects.filter(file_hash=file_hash).first() - if not image: image = Image( file=ImageFile(BytesIO(image_file.read()), name=imported_filename), From 89b8d87538ba9812d572c8f269c2f437906556b6 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Thu, 3 Oct 2024 14:53:57 +0200 Subject: [PATCH 06/17] Update import scripts --- .../commands/export_page_templates.py | 4 +- .../commands/import_page_templates.py | 12 +- .../page_templates/image_data.json | 54 +++- .../page_templates/img/Design_sans_titre.png | Bin 0 -> 17560 bytes .../img/Design_sans_titre_1.svg | 1 + .../img/undraw_female_avatar_efig.svg | 1 + .../img/undraw_male_avatar_g98d.svg | 1 + .../page_templates/pages_data.json | 289 ++++++++++-------- content_manager/services/import_export.py | 49 ++- 9 files changed, 255 insertions(+), 156 deletions(-) create mode 100644 content_manager/page_templates/img/Design_sans_titre.png create mode 100644 content_manager/page_templates/img/Design_sans_titre_1.svg create mode 100644 content_manager/page_templates/img/undraw_female_avatar_efig.svg create mode 100644 content_manager/page_templates/img/undraw_male_avatar_g98d.svg diff --git a/content_manager/management/commands/export_page_templates.py b/content_manager/management/commands/export_page_templates.py index e1c08fab..4f40f7e7 100644 --- a/content_manager/management/commands/export_page_templates.py +++ b/content_manager/management/commands/export_page_templates.py @@ -2,7 +2,7 @@ from django.core.management.base import BaseCommand -from content_manager.services.import_export import TEMPLATES_DATA_FILE, ImportExportImages, ImportExportPage +from content_manager.services.import_export import TEMPLATES_DATA_FILE, ExportPage, ImportExportImages SOURCE_URL = "https://sites-faciles.beta.numerique.gouv.fr/" @@ -20,7 +20,7 @@ def handle(self, *args, **kwargs): pages = {} for page_id in page_ids: - page = ImportExportPage(SOURCE_URL, page_id) + page = ExportPage(page_id, SOURCE_URL) pages[page_id] = page.json_export image_ids += page.image_ids diff --git a/content_manager/management/commands/import_page_templates.py b/content_manager/management/commands/import_page_templates.py index 8a7a03e4..9f15230d 100644 --- a/content_manager/management/commands/import_page_templates.py +++ b/content_manager/management/commands/import_page_templates.py @@ -1,8 +1,6 @@ -import json - from django.core.management.base import BaseCommand -from content_manager.services.import_export import TEMPLATES_DATA_FILE, ImportExportImages +from content_manager.services.import_export import ImportPages class Command(BaseCommand): @@ -11,9 +9,5 @@ def handle(self, *args, **kwargs): Import template pages """ - with open(TEMPLATES_DATA_FILE, "r") as json_file: - page_templates_data = json.load(json_file) - - image_importer = ImportExportImages(page_templates_data["image_ids"]) - - image_importer.import_images() + page_importer = ImportPages() + page_importer.import_pages() diff --git a/content_manager/page_templates/image_data.json b/content_manager/page_templates/image_data.json index 950600d8..3029f288 100644 --- a/content_manager/page_templates/image_data.json +++ b/content_manager/page_templates/image_data.json @@ -4,7 +4,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/6/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Home.original.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a4c130cd6d0719dcdde1c4d660f41d1182e4e95159ac48060316e18bde0779b0" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Home.original.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091837Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=29a5dd3fed7c782f8aad4cf846f8beff370c3227519cc3069c617d0eb47c46ec" }, "filename": "Home.original.png", "is_pictogram": false, @@ -19,7 +19,7 @@ "Pictogrammes", "System" ], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Information?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a2ad715db962bef2b285df60e362f51925b29c9191089e0a91e30ccc22c97f45" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Information?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091840Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=32b89c6ad720338caf5f438659fa0e9452d5180d0d539f94d5120a60b6bee938" }, "filename": "Pictogrammes DSFR \u2014 System \u2014 Information", "is_pictogram": true, @@ -34,7 +34,7 @@ "Pictogrammes", "System" ], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Success?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=040557aa51b406fbcb811a42b4e373dbffc348f5655d6d4bd2e48dc56bd32b5f" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Success?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091841Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=abf599a51e9d609d82a2d556110b6b9c32de9b34faee792334ce88a814a0b287" }, "filename": "Pictogrammes DSFR \u2014 System \u2014 Success", "is_pictogram": true, @@ -45,7 +45,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/81/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_Website_builder_re_ii6e.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=b179f4f6acb8e749142ec7252473ad559f5b00e863737cc8269d9e26e323b849" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_Website_builder_re_ii6e.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091844Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=02b9dea4701aaafbfdfa44bc2a67c0a7d55ab591b7b8004847bec17c5ca58983" }, "filename": "undraw_Website_builder_re_ii6e.png", "is_pictogram": false, @@ -56,10 +56,54 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/84/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_building_websites_i78t_1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=19bba3e8554a6010eafa5cc08762d234ff36e7faea4d6989ef87ce8ba6eac762" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_building_websites_i78t_1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091846Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=0aa28a6b26bed696bfb8f3e45fa16884bda76017669116626f7e74b31f47fcff" }, "filename": "undraw_building_websites_i78t_1.png", "is_pictogram": false, "title": "Illustration CMS 2" + }, + "96": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/96/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091834Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c25b20702eb1b843dd012317dc34b7274df03db56f2933ccb478fef23b28d801" + }, + "title": "Header", + "filename": "Design_sans_titre.png", + "is_pictogram": false + }, + "112": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/112/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre_1.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091842Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=e9c5928ba2758c5e62bb56d13baede0427480a1d7f223dc9c7b05542b6df0aa6" + }, + "title": "Design sans titre (3)", + "filename": "Design_sans_titre_1.svg", + "is_pictogram": false + }, + "116": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/116/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_female_avatar_efig.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091849Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9a1b5cb8171e790875d08322dfa07322cc9c98b8d8b5b274ba79c34c38e2d5b3" + }, + "title": "undraw_female_avatar_efig", + "filename": "undraw_female_avatar_efig.svg", + "is_pictogram": false + }, + "117": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/117/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_male_avatar_g98d.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091851Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=cf92f76d46edbcde80ef87fa21d0e23e55775ab1722f77ae055d1c298a52610c" + }, + "title": "undraw_male_avatar_g98d", + "filename": "undraw_male_avatar_g98d.svg", + "is_pictogram": false } } \ No newline at end of file diff --git a/content_manager/page_templates/img/Design_sans_titre.png b/content_manager/page_templates/img/Design_sans_titre.png new file mode 100644 index 0000000000000000000000000000000000000000..1f91e5909e858208831064430524376d4ffd0821 GIT binary patch literal 17560 zcmd73XIRrq_b7^@q5>*55Cq)xj&ulBMUajZkuD`bXrUzZrf#K!igZZmy-4q%(z|pB zB}nfbLgxg@k9Y6)f6n=E@BMIj9v;HXT5DFHnKdiE%8Js&*U7Kr;o%X>ypUAE!y|y; z;aw=cdIdY8o>GOu{<&uJLem}(??&C}?}bp-8x(kWmkuCmuVJqhca*Iayg++k>1$8UH|lu%AzdIT^*SKf?Wp*cqFER3xQvpxFOJ z8O>lY8xSX_qoX5-BM%4E&Xki&NJxnDF*heSH#-)B-QL+6X5hqbZBL7(^lws1#Az6+ZloX=>s@|&+Nbk zFtD*0_hW8e_Qyi(T-+j@|21`PMiJb^b0?ULv6#_gV=h5MBR+NkJ`(|UUO^!~b^|V6 zJ}ePlem*XKLjeP0gL7JEDF1_!lp&T7A2%O2Kc5g6FPDH2pWx$joIjKQ14RuAH!?dF zOYA?K{%7nz;Qt3R|65&vsQ*^$|3`+l`A1xxTKP}Fp4t~XfweEszwC=013iJm%%FB+ zvT#cX7zP7Bl7u)}LBMt*rwG90e+l^i-W{=N<6pjb&ZU!q&HwO1EHLPg$3X4WpioP( zX9m^|29KCjz}CiKJFp$I2U2YDQ6K*vIRdIq2u|727=FE)PJn`a;K z$nJc;fA;Ya?f;KHB?bc=dijrQV%YBMVlb=i?d=hY;{MCa%kMHv10=Q1_?F7F8a7+- zemT%yBgPYHSwH6Jnpc9cY5?n)XecV_*D#CX#I}=VuE!jdpdXlaMs=jvuCCnVid7IF z=WdWly8MUK8#NVKF663I$=vb5Z=Q?{zr;l8r|hglOrkht*_As__Pbt2`Se}ntemD} zKO0W$Dz<8?8Pweq4QYOLXtzO^k)c(~($F9SFqr7EcCs4h9$u~A@FTXisM3Gk_RE>l zy`H$B!~#9a0;*Rh)m`rS^B^CMmF+l7O17C443@j_r4&HiHr7)=t7r{>3<+UeNu3@6 z#J&=*4eR2)X_PmYU^Q%iQj?KUbOq((6B`>VxWCt>g>If^>^>9R#$fx1J1WID#X4a% zJbCso5q+}D&JdE_%|mtzXL2vX)YWiXCmS+&6++lpJZW*DCcssEj9v8o1ro@GKVp_X zR*|(mIaac@nfUlIcCs zr=jN`!l;xIbm_aM!15;VOO4U_|ge)(WG(mX*?_jpJV1jG#03 zi3lU0K72lM(leTFgs1#m&tvaHL`1}q_~DkLV|^1r;`&btXxQVvrK!yiW>&gkASunQ ztt`J)kJS}33kwCxWOJrJw)NsE-|T?a_jryXL09n9O`LW^$tc}V0+5TVD}IJKf4K|~ zC!|*Kfuh2tpa;?)ez#+e=@7?_;;oe10a{w9L}fEs%0x@MvX7-0Z*d=gjs+}f798mw zRMkQJVAbM}UM{?}r$f!_ulr(xf73Q5lvMHgmFY-IZWWeD+1hfr3~MK@AqNz}yG>oC zTf*pEwGrlNJGq2JBj*J&@IWt2QDlG7o7OR^=30+xIOva=AA80M+R}I&uW_n2;>F31 ziVEJ+fWbTV4}%&pUmv$G85a2krrC)OSB-OT1hNrkGh)?Gv{hB3d8O$^*X#6Eq|>fjpE;!} z`GW^Cloz~M;KTIp_8{cOeJlRqTkY+$(qj5A!u|>k*As~VJylo6LGQ2ChNRQtDSrS( z`*nFfImqe^4hUi>dmi1+FDWM{jpg(nS`=A{8FT&IIjh+xE`JxX@DiteW!+a8ETo}k`<6HRjJv0ANg<8Va1TGzBBXF5y(MYe8fZfZOc~Bz=2?@gDFgd&aq60hG$GsNe4vzJ|8r}-Evm;bvdYpaE&GQ648>@@!a}(IExt0H{G$ H?;q_9gkeTP5hcDtX`6W?ykR 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 \ No newline at end of file diff --git a/content_manager/page_templates/img/undraw_female_avatar_efig.svg b/content_manager/page_templates/img/undraw_female_avatar_efig.svg new file mode 100644 index 00000000..e28991b8 --- /dev/null +++ b/content_manager/page_templates/img/undraw_female_avatar_efig.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content_manager/page_templates/img/undraw_male_avatar_g98d.svg b/content_manager/page_templates/img/undraw_male_avatar_g98d.svg new file mode 100644 index 00000000..c481f0b3 --- /dev/null +++ b/content_manager/page_templates/img/undraw_male_avatar_g98d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content_manager/page_templates/pages_data.json b/content_manager/page_templates/pages_data.json index 938f345c..c5153661 100644 --- a/content_manager/page_templates/pages_data.json +++ b/content_manager/page_templates/pages_data.json @@ -1,9 +1,13 @@ { "image_ids": [ - 81, 74, - 84, 77, + 112, + 81, + 84, + 116, + 117, + 96, 84, 6 ], @@ -22,62 +26,6 @@ }, "title": "Landing page d'un service num\u00e9rique", "body": [ - { - "type": "paragraph", - "value": "

Voici un exemple de page que vous pouvez utiliser pour promouvoir un service num\u00e9rique.

" - }, - { - "type": "multicolumns", - "value": { - "bg_image": null, - "bg_color_class": "", - "bg_color": "", - "title": "", - "heading_tag": "h2", - "columns": [ - { - "type": "text_cta", - "value": { - "text": "

Une phrase accrocheuse \u00e0 propos de votre service

Un texte explicatif pour que les visiteurs du site comprennent de quoi il s'agit et aient envie d'en savoir plus sur votre service.

", - "cta_buttons": [ - { - "type": "buttons", - "value": [ - { - "type": "button", - "value": { - "page": 29, - "document": null, - "external_url": "", - "text": "Appel \u00e0 action", - "button_type": "fr-btn", - "icon_class": "", - "icon_side": "" - } - } - ] - } - ], - "cta_label": "", - "cta_url": "" - } - }, - { - "type": "image", - "value": { - "title": "", - "heading_tag": "h3", - "image": 81, - "alt": "", - "width": "fr-content-media--sm", - "image_ratio": "fr-ratio-3x2", - "caption": "", - "url": "" - } - } - ] - } - }, { "type": "fullwidthbackground", "value": { @@ -94,87 +42,69 @@ "column_width": "4", "items": [ { - "type": "card", + "type": "tile", "value": { "title": "Argument #1", "heading_tag": "h3", - "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", + "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", "image": 77, - "image_ratio": "fr-ratio-1x1", - "image_badge": [], "link": { "page": null, "document": null, "external_url": "" }, - "url": "", - "document": null, - "top_detail_text": "", - "top_detail_icon": "", "top_detail_badges_tags": [], - "bottom_detail_text": "", - "bottom_detail_icon": "", - "call_to_action": [], + "detail_text": "", + "is_small": false, "grey_background": false, "no_background": false, "no_border": false, - "shadow": false + "shadow": false, + "is_horizontal": false } }, { - "type": "card", + "type": "tile", "value": { "title": "Argument #2", "heading_tag": "h3", - "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", + "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", "image": 77, - "image_ratio": "fr-ratio-1x1", - "image_badge": [], "link": { "page": null, "document": null, "external_url": "" }, - "url": "", - "document": null, - "top_detail_text": "", - "top_detail_icon": "", "top_detail_badges_tags": [], - "bottom_detail_text": "", - "bottom_detail_icon": "", - "call_to_action": [], + "detail_text": "", + "is_small": false, "grey_background": false, "no_background": false, "no_border": false, - "shadow": false + "shadow": false, + "is_horizontal": false } }, { - "type": "card", + "type": "tile", "value": { "title": "Argument #3", "heading_tag": "h3", - "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", + "description": "

D\u00e9veloppez une des raisons pour lesquelles votre service simplifie la vie de ses utilisateurs.

", "image": 77, - "image_ratio": "fr-ratio-1x1", - "image_badge": [], "link": { "page": null, "document": null, "external_url": "" }, - "url": "", - "document": null, - "top_detail_text": "", - "top_detail_icon": "", "top_detail_badges_tags": [], - "bottom_detail_text": "", - "bottom_detail_icon": "", - "call_to_action": [], + "detail_text": "", + "is_small": false, "grey_background": false, "no_background": false, "no_border": false, - "shadow": false + "shadow": false, + "is_horizontal": false } } ] @@ -419,7 +349,7 @@ "color": "green-bourgeon", "icon_class": "", "link": { - "page": 19, + "page": 29, "document": null, "external_url": "" } @@ -467,7 +397,7 @@ "color": "green-bourgeon", "icon_class": "", "link": { - "page": 19, + "page": 29, "document": null, "external_url": "" } @@ -553,6 +483,52 @@ ] } }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "grey", + "content": [ + { + "type": "text_cta", + "value": { + "text": "

Ce qu'en pensent vos utilisateurs

", + "cta_buttons": [], + "cta_label": "", + "cta_url": "" + } + }, + { + "type": "item_grid", + "value": { + "column_width": "6", + "items": [ + { + "type": "quote", + "value": { + "image": 116, + "quote": "T\u00e9moignage d'une usag\u00e8re de votre service sous forme de citation.", + "author_name": "Nom de l'usag\u00e8re", + "author_title": "Titre de l'usag\u00e8re", + "color": "" + } + }, + { + "type": "quote", + "value": { + "image": 117, + "quote": "T\u00e9moignage d'un usager de votre service sous forme de citation.", + "author_name": "Nom de l'usager", + "author_title": "Titre de l'usager", + "color": "" + } + } + ] + } + } + ] + } + }, { "type": "accordions", "value": [ @@ -591,31 +567,40 @@ ] }, { - "type": "stepper", + "type": "fullwidthbackground", "value": { - "title": "Votre feuille de route", - "total": 3, - "current": 2, - "steps": [ - { - "type": "step", - "value": { - "title": "Date", - "detail": "Premi\u00e8re \u00e9tape \r\nCourte description des enjeux" - } - }, - { - "type": "step", - "value": { - "title": "Date", - "detail": "Etape actuelle\r\nCourte description des enjeux" - } - }, + "bg_image": null, + "bg_color_class": "grey", + "content": [ { - "type": "step", + "type": "stepper", "value": { - "title": "Date", - "detail": "Prochaine \u00e9tape\r\nCourte description des enjeux" + "title": "Votre feuille de route", + "total": 3, + "current": 2, + "steps": [ + { + "type": "step", + "value": { + "title": "Date", + "detail": "Premi\u00e8re \u00e9tape \r\nCourte description des enjeux" + } + }, + { + "type": "step", + "value": { + "title": "Date", + "detail": "Etape actuelle\r\nCourte description des enjeux" + } + }, + { + "type": "step", + "value": { + "title": "Date", + "detail": "Prochaine \u00e9tape\r\nCourte description des enjeux" + } + } + ] } } ] @@ -625,7 +610,7 @@ "type": "fullwidthbackground", "value": { "bg_image": null, - "bg_color_class": "blue-france", + "bg_color_class": "", "content": [ { "type": "text_cta", @@ -638,12 +623,12 @@ { "type": "button", "value": { - "page": 31, + "page": 29, "document": null, "external_url": "", "text": "Appel \u00e0 action", "button_type": "fr-btn fr-btn--secondary", - "icon_class": "fr-icon-mail-open-line", + "icon_class": "fr-icon-send-plane-fill", "icon_side": "fr-btn--icon-left" } } @@ -658,15 +643,55 @@ } } ], - "header_image": null, - "header_image_render": null, - "header_image_thumbnail": null, - "header_with_title": false, + "header_image": { + "id": 112, + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/112/", + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre_1.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091829Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=7bb10d1af3a622d97bf1708dc06757e979fb55d830c71da5e3d692a62ab79a97" + }, + "title": "Design sans titre (3)" + }, + "header_image_render": { + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-1200x627.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091829Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6828841e027ced00ec658c395e9941d9b62f2ec3adbc68a82a7fb776e8ea1ba7", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-1200x627.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091829Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6828841e027ced00ec658c395e9941d9b62f2ec3adbc68a82a7fb776e8ea1ba7", + "width": 518, + "height": 270, + "alt": "Design sans titre (3)" + }, + "header_image_thumbnail": { + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-376x211.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091832Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=79d904e3a9cb1ac73e41be35eb8af8e37afd329aa5095fbd2ccf7ca79124455f", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-376x211.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091832Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=79d904e3a9cb1ac73e41be35eb8af8e37afd329aa5095fbd2ccf7ca79124455f", + "width": 376.0, + "height": 211.0, + "alt": "Design sans titre (3)" + }, + "header_with_title": true, "header_color_class": null, "header_large": false, "header_darken": false, - "header_cta_text": "", - "header_cta_buttons": [], + "header_cta_text": "

Voici un exemple de page que vous pouvez utiliser pour promouvoir un service num\u00e9rique.

Utilisez cette en-t\u00eate pour ins\u00e9rer une phrase d'accroche.
Vous pouvez \u00e9galement ajouter un court paragraphe d'explication, et un appel \u00e0 action.

", + "header_cta_buttons": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": 34, + "document": null, + "external_url": "", + "text": "Appel \u00e0 action", + "button_type": "fr-btn", + "icon_class": "", + "icon_side": "" + }, + "id": "e3bb30c0-d0bb-433a-b688-2a2200978885" + } + ], + "id": "639058db-5850-43cc-a67a-c26818cd39d6" + } + ], "header_cta_label": null, "header_cta_link": null }, @@ -854,20 +879,20 @@ "meta": { "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/96/", - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ab3eb3fcf01e64cb0103a7e9bed52a309faed74f61dee554ec87f63ab9fef88c" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=201cd1c5a240d33620af2a0a6235ab58376d9ebdad65078d8bfd32b8aef26147" }, "title": "Header" }, "header_image_render": { - "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fef87600ad89bf1a87e4a1061ae82afbc1f836893d2d6e1324d355aabe3c1ff9", - "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fef87600ad89bf1a87e4a1061ae82afbc1f836893d2d6e1324d355aabe3c1ff9", + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ca12b2d04b21c362d0ed32d39286dcf2d61271fe772001a060aa2b468991307f", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ca12b2d04b21c362d0ed32d39286dcf2d61271fe772001a060aa2b468991307f", "width": 839, "height": 438, "alt": "Header" }, "header_image_thumbnail": { - "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9bfd82e786b7f78d58a4792a517689aa82c770b613f516603119c18e5a9b9ede", - "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20240930%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20240930T161307Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9bfd82e786b7f78d58a4792a517689aa82c770b613f516603119c18e5a9b9ede", + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3358baaa812873bb494b0646fa5696195d34b73004f5a7ee91c92cacfe3667bd", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3358baaa812873bb494b0646fa5696195d34b73004f5a7ee91c92cacfe3667bd", "width": 376, "height": 211, "alt": "Header" diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py index b24868b4..85c4fdca 100644 --- a/content_manager/services/import_export.py +++ b/content_manager/services/import_export.py @@ -22,12 +22,12 @@ User = get_user_model() -class ImportExportPage: +class ExportPage: """ - Generic class for import/export of a ContentPage from a wagtail instance + Generic class for export of a ContentPage from a wagtail instance """ - def __init__(self, source_site, source_page_id) -> None: + def __init__(self, source_page_id, source_site) -> None: self.source_site = source_site self.source_page_id = source_page_id self.source_content = self.get_content_from_source_page() @@ -64,8 +64,7 @@ def get_source_images(self) -> None: header_image = self.source_content.get("header_image", None) if header_image: header_image["local_image"] = None - img_id = header_image["id"] - self.images[img_id] = header_image + self.image_ids.append(header_image["id"]) # Images from the body self.locate_image_ids(self.source_body) @@ -89,12 +88,48 @@ def clear_meta_keys(self): self.content["meta"].pop(key, None) +class ImportPages: + """ + Generic class for import of a list of ContentPages from a previously made export + """ + + def __init__(self) -> None: + with open(TEMPLATES_DATA_FILE, "r") as json_file: + page_templates_data = json.load(json_file) + + self.pages = page_templates_data["pages"] + self.image_ids = page_templates_data["image_ids"] + + self.image_importer = ImportExportImages(self.image_ids) + + def import_pages(self): + self.image_importer.import_images() + + for page_id in self.pages.keys(): + self.update_image_ids(page_id) + self.import_page(page_id) + + def import_page(self, page_id: str): + pass + + def update_image_ids(self, page_id): + page = self.pages[page_id] + + if page["header_image"]: + source_image_id = str(page["header_image"]["id"]) + local_image_id = self.image_importer.image_data[source_image_id]["local_id"] + + page["header_image"]["id"] = local_image_id + + class ImportExportImages: """ - Generic class for import/export of an Image from a wagtail instance + Generic class for import/export of a list of Images from a wagtail instance """ def __init__(self, image_ids, source_site=None) -> None: + self.user = User.objects.filter(is_superuser=True).first() + self.image_ids = set(image_ids) self.source_site = source_site @@ -162,8 +197,6 @@ def import_images(self) -> None: image = self.get_or_create_image(image_data) image_data["local_id"] = image.id - print(self.image_data) - def get_or_create_image(self, image_data) -> Image: filename = image_data["filename"] imported_filename = f"template_image_{filename.lower()}" From 2ad21fd89d1d64821ba8d6e849468778cf733fd3 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 14 Oct 2024 19:33:01 +0200 Subject: [PATCH 07/17] Import script working --- content_manager/constants.py | 12 ++ .../management/commands/create_demo_pages.py | 28 +---- .../commands/create_starter_pages.py | 2 +- .../commands/import_dsfr_pictograms.py | 3 +- content_manager/services/get_or_create.py | 111 ++++++++++++++++++ content_manager/services/import_export.py | 80 ++++++++++++- .../tests/test_services_get_or_create.py | 14 +++ content_manager/tests/test_utils.py | 11 +- content_manager/utils.py | 56 --------- 9 files changed, 221 insertions(+), 96 deletions(-) create mode 100644 content_manager/services/get_or_create.py create mode 100644 content_manager/tests/test_services_get_or_create.py diff --git a/content_manager/constants.py b/content_manager/constants.py index 16c0e85b..2bfb65cf 100644 --- a/content_manager/constants.py +++ b/content_manager/constants.py @@ -1,5 +1,17 @@ from django.utils.translation import gettext_lazy as _ +HEADER_FIELDS = [ + "header_image", + "header_with_title", + "header_color_class", + "header_large", + "header_darken", + "header_cta_text", + "header_cta_buttons", + "header_cta_label", + "header_cta_link", +] + BUTTON_TYPE_CHOICES = ( ("fr-btn", _("Primary")), ("fr-btn fr-btn--secondary", _("Secundary")), diff --git a/content_manager/management/commands/create_demo_pages.py b/content_manager/management/commands/create_demo_pages.py index df6b0250..7901a3bc 100644 --- a/content_manager/management/commands/create_demo_pages.py +++ b/content_manager/management/commands/create_demo_pages.py @@ -8,6 +8,7 @@ from blog.models import BlogIndexPage from content_manager.models import ContentPage, MegaMenu, MegaMenuCategory +from content_manager.utils import get_or_create_content_page from forms.models import FormField, FormPage ALL_ALLOWED_SLUGS = ["blog_index", "publications", "menu_page", "form"] @@ -50,12 +51,12 @@ def handle(self, *args, **kwargs): # to/do add example blog pages elif slug == "publications": - self.create_publication_pages(site, home_page, main_menu) + self.create_publication_pages(site, main_menu) elif slug == "menu_page": # A blank page that is just destined to have a list of its subpages. body = [("subpageslist", None)] - menu_page = self.create_content_page(slug, title="Pages d’exemple", body=body, parent_page=home_page) + menu_page = get_or_create_content_page(slug, title="Pages d’exemple", body=body, parent_page=home_page) # Inserts it right before the last entry contact_menu_entry = MainMenuItem.objects.filter(menu=main_menu).last() @@ -101,24 +102,7 @@ def create_blog_index(self, home_page) -> BlogIndexPage: return blog_index - def create_content_page(self, slug: str, title: str, body: list, parent_page: ContentPage) -> ContentPage: - """ - Creates a page for the site. - """ - - # Don't replace or duplicate an already existing page - already_exists = ContentPage.objects.filter(slug=slug).first() - if already_exists: - self.stdout.write(f"The {slug} page seem to already exist with id {already_exists.id}") - return already_exists - - new_page = parent_page.add_child(instance=ContentPage(title=title, body=body, slug=slug, show_in_menus=True)) - - self.stdout.write(self.style.SUCCESS(f"Page {slug} created with id {new_page.id}")) - - return new_page - - def create_publication_pages(self, site, home_page, main_menu): + def create_publication_pages(self, site, main_menu): slug = "publications" title = "Publications" body = [] @@ -126,7 +110,7 @@ def create_publication_pages(self, site, home_page, main_menu): text_raw = """

Veuillez trouver ici une liste de publications

""" body.append(("paragraph", RichText(text_raw))) - publications_page = self.create_content_page(slug=slug, title=title, body=body, parent_page=home_page) + publications_page = get_or_create_content_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} ) @@ -160,7 +144,7 @@ def create_publication_pages(self, site, home_page, main_menu): text += f"

{p}

\n" body.append(("paragraph", RichText(text))) - new_page = self.create_content_page( + new_page = get_or_create_content_page( slug=slugify(title), title=title, body=body, parent_page=publications_page ) diff --git a/content_manager/management/commands/create_starter_pages.py b/content_manager/management/commands/create_starter_pages.py index 980261d9..6b440095 100644 --- a/content_manager/management/commands/create_starter_pages.py +++ b/content_manager/management/commands/create_starter_pages.py @@ -8,7 +8,7 @@ from wagtailmenus.models.menuitems import FlatMenuItem, MainMenuItem from content_manager.models import ContentPage -from content_manager.utils import get_or_create_footer_menu, get_or_create_main_menu +from content_manager.services.get_or_create import get_or_create_footer_menu, get_or_create_main_menu from forms.models import FormField, FormPage ALL_ALLOWED_SLUGS = ["home", "mentions-legales", "accessibilite", "contact"] diff --git a/content_manager/management/commands/import_dsfr_pictograms.py b/content_manager/management/commands/import_dsfr_pictograms.py index e316f299..68483f74 100644 --- a/content_manager/management/commands/import_dsfr_pictograms.py +++ b/content_manager/management/commands/import_dsfr_pictograms.py @@ -4,7 +4,8 @@ from django.core.management.base import BaseCommand from wagtail.images.models import Image -from content_manager.utils import get_or_create_collection, import_image +from content_manager.services.get_or_create import get_or_create_collection +from content_manager.utils import import_image class Command(BaseCommand): diff --git a/content_manager/services/get_or_create.py b/content_manager/services/get_or_create.py new file mode 100644 index 00000000..6c125c2d --- /dev/null +++ b/content_manager/services/get_or_create.py @@ -0,0 +1,111 @@ +import sys + +from django.core.management.color import color_style +from wagtail.models import Collection, PageViewRestriction, Site +from wagtailmenus.models.menuitems import MainMenuItem +from wagtailmenus.models.menus import FlatMenu, MainMenu + +from content_manager.constants import HEADER_FIELDS +from content_manager.models import ContentPage + +style = color_style() + + +def get_or_create_collection(col_name: str) -> Collection: + qs = Collection.objects.filter(name=col_name) + if qs.count(): + return qs.first() + else: + root_coll = Collection.get_first_root_node() + result = root_coll.add_child(name=col_name) + return result + + +def get_or_create_content_page( + slug: str, + title: str, + body: list, + parent_page: ContentPage | None = None, + restriction_type: str | None = None, + page_fields: dict | None = None, +) -> ContentPage: + """ + Get a ContentPage, or creates it if it exists. + """ + + # 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 + + # Don't replace or duplicate an already existing page + already_exists = ContentPage.objects.filter(slug=slug).first() + if already_exists: + sys.stdout.write(f"The {slug} page seem to already exist with id {already_exists.id}") + return already_exists + + new_page = parent_page.add_child( + instance=ContentPage( + title=title, + body=body, + slug=slug, + show_in_menus=True, + ) + ) + + if page_fields and len(page_fields): + for k, v in page_fields.items(): + # Manage the actual image id + if k in HEADER_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_footer_menu() -> FlatMenu: + """ + Get the footer menu or create it if it doesn't already exist + + In any case, return it. + """ + + default_site = Site.objects.filter(is_default_site=True).first() + footer_menu = FlatMenu.objects.filter(handle="footer", site=default_site).first() + + if not footer_menu: + footer_menu = FlatMenu.objects.create(title="Pied de page", handle="footer", site=default_site) + + return footer_menu + + +def get_or_create_main_menu() -> MainMenu: + """ + Get the main menu or create it if it doesn't already exist + + In any case, return it. + """ + + default_site = Site.objects.filter(is_default_site=True).first() + main_menu = MainMenu.objects.filter(site=default_site).first() + + if not main_menu: + main_menu = MainMenu.objects.create(site=default_site, max_levels=2) + + # Init the main menu with the home page + home_page = default_site.root_page + + menu_item = { + "sort_order": 0, + "link_page": home_page, + "link_text": "Accueil", + "menu": main_menu, + } + MainMenuItem.objects.create(**menu_item) + + return main_menu diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py index 85c4fdca..a0cfc89c 100644 --- a/content_manager/services/import_export.py +++ b/content_manager/services/import_export.py @@ -12,7 +12,9 @@ from wagtail.images.models import Image from wagtail.utils.file import hash_filelike -from content_manager.utils import get_or_create_collection +from content_manager.constants import HEADER_FIELDS +from content_manager.models import ContentPage +from content_manager.services.get_or_create import get_or_create_collection, get_or_create_content_page PAGE_TEMPLATES_ROOT = settings.BASE_DIR / "content_manager/page_templates" TEMPLATES_DATA_FILE = PAGE_TEMPLATES_ROOT / "pages_data.json" @@ -101,16 +103,63 @@ def __init__(self) -> None: self.image_ids = page_templates_data["image_ids"] self.image_importer = ImportExportImages(self.image_ids) + self.page_templates_index = None + + def get_or_create_page_templates_index(self) -> ContentPage: + body = [("subpageslist", None)] + return get_or_create_content_page( + slug="page_templates_index", title="Modèles de pages", body=body, restriction_type="login" + ) def import_pages(self): self.image_importer.import_images() + self.page_templates_index = self.get_or_create_page_templates_index() for page_id in self.pages.keys(): self.update_image_ids(page_id) - self.import_page(page_id) - def import_page(self, page_id: str): - pass + raw_page = self.pages[page_id] + source_url = raw_page["meta"]["html_url"] + + page_exists = ContentPage.objects.filter(source_url=source_url).first() + if page_exists: + self.update_page(page_id, page_exists) + else: + self.import_page(page_id) + + def import_page(self, page_id: str) -> ContentPage: + raw_page = self.pages[page_id] + source_url = raw_page["meta"]["html_url"] + + page_dict = { + "slug": raw_page["meta"]["slug"], + "title": raw_page["title"], + "body": raw_page["body"], + "restriction_type": "login", + "parent_page": self.page_templates_index, + } + + page_fields = {"source_url": source_url} + + for field in HEADER_FIELDS: + if raw_page[field]: + page_fields[field] = raw_page[field] + + page_dict["page_fields"] = page_fields + return get_or_create_content_page(**page_dict) + + def update_page(self, page_id, page): + raw_page = self.pages[page_id] + page.slug = raw_page["meta"]["slug"] + page.title = raw_page["title"] + page.body = raw_page["body"] + + for field in HEADER_FIELDS: + if raw_page[field]: + setattr(page, field, raw_page[field]) + + page.save() + return page def update_image_ids(self, page_id): page = self.pages[page_id] @@ -119,7 +168,10 @@ def update_image_ids(self, page_id): source_image_id = str(page["header_image"]["id"]) local_image_id = self.image_importer.image_data[source_image_id]["local_id"] - page["header_image"]["id"] = local_image_id + # We need to replace the dictionary with the image itself + page["header_image"] = Image.objects.get(pk=local_image_id) + + page["body"] = update_streamfield_image_ids(page["body"], self.image_importer.image_data) class ImportExportImages: @@ -222,10 +274,26 @@ def get_or_create_image(self, image_data) -> Image: def remove_block_ids(json_object): """ - Parse a page JSON representation and strip the block IDs + Parse a page JSON StreamField representation and strip the block IDs """ if not isinstance(json_object, (dict, list)): return json_object if isinstance(json_object, list): return [remove_block_ids(v) for v in json_object] return {k: remove_block_ids(v) for k, v in json_object.items() if k != "id"} + + +def update_streamfield_image_ids(json_object, image_ids): + """ + Parse a page JSON StreamField representation and update the image IDs + """ + if isinstance(json_object, dict): + for k, v in json_object.items(): + v_str = str(v) + if k in ["image", "bg_image"] and v_str in image_ids: + json_object[k] = image_ids[v_str]["local_id"] + else: + update_streamfield_image_ids(v, image_ids) + elif isinstance(json_object, list): + return [update_streamfield_image_ids(v, image_ids) for v in json_object] + return json_object diff --git a/content_manager/tests/test_services_get_or_create.py b/content_manager/tests/test_services_get_or_create.py new file mode 100644 index 00000000..a83b6db1 --- /dev/null +++ b/content_manager/tests/test_services_get_or_create.py @@ -0,0 +1,14 @@ +from wagtail.test.utils import WagtailPageTestCase +from wagtailmenus.models.menus import FlatMenu + +from content_manager.services.get_or_create import get_or_create_footer_menu + + +class GetOrCreateTestCase(WagtailPageTestCase): + def test_get_or_create_footer_menu(self): + assert FlatMenu.objects.count() == 0 + + flat_menu = get_or_create_footer_menu() + + assert FlatMenu.objects.count() == 1 + assert flat_menu.handle == "footer" diff --git a/content_manager/tests/test_utils.py b/content_manager/tests/test_utils.py index ff6bbc45..1c8199d6 100644 --- a/content_manager/tests/test_utils.py +++ b/content_manager/tests/test_utils.py @@ -1,8 +1,7 @@ from wagtail.images.models import Image from wagtail.test.utils import WagtailPageTestCase -from wagtailmenus.models.menus import FlatMenu -from content_manager.utils import get_or_create_footer_menu, import_image +from content_manager.utils import import_image class UtilsTestCase(WagtailPageTestCase): @@ -12,11 +11,3 @@ def test_import_image(self): assert isinstance(image, Image) assert image.title == "Sample image" - - def test_get_or_create_footer_menu(self): - assert FlatMenu.objects.count() == 0 - - flat_menu = get_or_create_footer_menu() - - assert FlatMenu.objects.count() == 1 - assert flat_menu.handle == "footer" diff --git a/content_manager/utils.py b/content_manager/utils.py index f94e23b1..8e6d69ab 100644 --- a/content_manager/utils.py +++ b/content_manager/utils.py @@ -5,9 +5,6 @@ from bs4 import BeautifulSoup from django.core.files.images import ImageFile from wagtail.images.models import Image -from wagtail.models import Collection, Site -from wagtailmenus.models.menuitems import MainMenuItem -from wagtailmenus.models.menus import FlatMenu, MainMenu def import_image(full_path: str, title: str) -> Image: @@ -23,59 +20,6 @@ def import_image(full_path: str, title: str) -> Image: return image -def get_or_create_collection(col_name: str) -> Collection: - qs = Collection.objects.filter(name=col_name) - if qs.count(): - return qs.first() - else: - root_coll = Collection.get_first_root_node() - result = root_coll.add_child(name=col_name) - return result - - -def get_or_create_footer_menu() -> FlatMenu: - """ - Get the footer menu or create it if it doesn't already exist - - In any case, return it. - """ - - default_site = Site.objects.filter(is_default_site=True).first() - footer_menu = FlatMenu.objects.filter(handle="footer", site=default_site).first() - - if not footer_menu: - footer_menu = FlatMenu.objects.create(title="Pied de page", handle="footer", site=default_site) - - return footer_menu - - -def get_or_create_main_menu() -> MainMenu: - """ - Get the main menu or create it if it doesn't already exist - - In any case, return it. - """ - - default_site = Site.objects.filter(is_default_site=True).first() - main_menu = MainMenu.objects.filter(site=default_site).first() - - if not main_menu: - main_menu = MainMenu.objects.create(site=default_site, max_levels=2) - - # Init the main menu with the home page - home_page = default_site.root_page - - menu_item = { - "sort_order": 0, - "link_page": home_page, - "link_text": "Accueil", - "menu": main_menu, - } - MainMenuItem.objects.create(**menu_item) - - return main_menu - - def get_streamblock_raw_text(block) -> str: """ Get the raw text of a streamblock. From 8ba5f4a97672d9c771aa22d64896befb097fe8b0 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Tue, 15 Oct 2024 10:50:25 +0200 Subject: [PATCH 08/17] Update dependencies --- poetry.lock | 321 +++++++++++++++++++++++++++------------------------- 1 file changed, 167 insertions(+), 154 deletions(-) diff --git a/poetry.lock b/poetry.lock index 555a5589..b0f3f966 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,5 +1,4 @@ # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "anyascii" @@ -70,33 +69,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "24.8.0" +version = "24.10.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, - {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, - {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, - {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, - {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, - {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, - {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, - {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, - {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, - {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, - {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, - {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, - {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, - {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, - {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, - {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, - {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, - {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, - {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, - {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, - {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, - {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] [package.dependencies] @@ -110,7 +109,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -132,17 +131,17 @@ webencodings = "*" [[package]] name = "boto3" -version = "1.35.21" +version = "1.35.40" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.21-py3-none-any.whl", hash = "sha256:247f88eedce9ae4e014a8fc14a9473759bb8e391460d49396a3b600fb649f33b"}, - {file = "boto3-1.35.21.tar.gz", hash = "sha256:db5fbbd10248db060f2ccce3ae17764f1641c99c8b9f51d422c26ebe25703a1e"}, + {file = "boto3-1.35.40-py3-none-any.whl", hash = "sha256:9352f6d61f15c789231a5d608613f03425059072ed862c32e1ed102b17206abf"}, + {file = "boto3-1.35.40.tar.gz", hash = "sha256:33c6a7aeab316f7e0b3ad8552afe95a4a10bfd58519d00741c4d4f3047da8382"}, ] [package.dependencies] -botocore = ">=1.35.21,<1.36.0" +botocore = ">=1.35.40,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -151,13 +150,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.21" +version = "1.35.40" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.21-py3-none-any.whl", hash = "sha256:3db9ddfe521edc0753fc8c68caef71c7806e1d2d21ce8cbabc2065b7d79192f2"}, - {file = "botocore-1.35.21.tar.gz", hash = "sha256:db917e7d7b3a2eed1310c6496784bc813c91f020a021c2ab5f9df7d28cdb4f1d"}, + {file = "botocore-1.35.40-py3-none-any.whl", hash = "sha256:072cc47f29cb1de4fa77ce6632e4f0480af29b70816973ff415fbaa3f50bd1db"}, + {file = "botocore-1.35.40.tar.gz", hash = "sha256:547e0a983856c7d7aeaa30fca2a283873c57c07366cd806d2d639856341b3c31"}, ] [package.dependencies] @@ -166,7 +165,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.21.5)"] +crt = ["awscrt (==0.22.0)"] [[package]] name = "certifi" @@ -192,101 +191,116 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -353,13 +367,13 @@ files = [ [[package]] name = "distlib" -version = "0.3.8" +version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, - {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] [[package]] @@ -392,13 +406,13 @@ static3 = "*" [[package]] name = "django" -version = "5.1.1" +version = "5.1.2" 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.1-py3-none-any.whl", hash = "sha256:71603f27dac22a6533fb38d83072eea9ddb4017fead6f67f2562a40402d61c3f"}, - {file = "Django-5.1.1.tar.gz", hash = "sha256:021ffb7fdab3d2d388bc8c7c2434eb9c1f6f4d09e6119010bbb1694dda286bc2"}, + {file = "Django-5.1.2-py3-none-any.whl", hash = "sha256:f11aa87ad8d5617171e3f77e1d5d16f004b79a2cf5d2e1d2b97a6a1f8e9ba5ed"}, + {file = "Django-5.1.2.tar.gz", hash = "sha256:bd7376f90c99f96b643722eee676498706c9fd7dc759f55ebfaf2c08ebcdf4f0"}, ] [package.dependencies] @@ -891,13 +905,13 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "ipython" -version = "8.27.0" +version = "8.28.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, - {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, + {file = "ipython-8.28.0-py3-none-any.whl", hash = "sha256:530ef1e7bb693724d3cdc37287c80b07ad9b25986c007a53aa1857272dac3f35"}, + {file = "ipython-8.28.0.tar.gz", hash = "sha256:0d0d15ca1e01faeb868ef56bc7ee5a0de5bd66885735682e8a322ae289a13d1a"}, ] [package.dependencies] @@ -1040,7 +1054,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"}, ] @@ -1385,13 +1398,13 @@ virtualenv = ">=20.10.0" [[package]] name = "prompt-toolkit" -version = "3.0.47" +version = "3.0.48" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, - {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, + {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, + {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, ] [package.dependencies] @@ -1904,13 +1917,13 @@ files = [ [[package]] name = "s3transfer" -version = "0.10.2" +version = "0.10.3" description = "An Amazon S3 Transfer Manager" optional = false python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, - {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, + {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, + {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, ] [package.dependencies] @@ -2005,13 +2018,13 @@ docs = ["mkdocs (>=1.1,<1.2)", "mkdocs-material (>=6.2,<6.3)"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -2062,13 +2075,13 @@ files = [ [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] @@ -2101,13 +2114,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.26.5" +version = "20.26.6" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.26.5-py3-none-any.whl", hash = "sha256:4f3ac17b81fba3ce3bd6f4ead2749a72da5929c01774948e243db9ba41df4ff6"}, - {file = "virtualenv-20.26.5.tar.gz", hash = "sha256:ce489cac131aa58f4b25e321d6d186171f78e6cb13fafbf32a840cee67733ff4"}, + {file = "virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2"}, + {file = "virtualenv-20.26.6.tar.gz", hash = "sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48"}, ] [package.dependencies] @@ -2121,13 +2134,13 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wagtail" -version = "6.2.1" +version = "6.2.2" description = "A Django content management system." optional = false python-versions = ">=3.8" files = [ - {file = "wagtail-6.2.1-py3-none-any.whl", hash = "sha256:31d073ea8acdc973ef45c5719977a1bb122ad0fc3f01348f37e922128200b42a"}, - {file = "wagtail-6.2.1.tar.gz", hash = "sha256:0f136ef23b157997a44fa46543a320a31437350951cf13add8ea8b69cc5e8385"}, + {file = "wagtail-6.2.2-py3-none-any.whl", hash = "sha256:d0382603aef5d7e4a46529aa125857774a317c2870c9b6836767932969829429"}, + {file = "wagtail-6.2.2.tar.gz", hash = "sha256:506ac2b59dae85069ae754b45bc13b91cbd86e92d4f5d663658773b0ed7a16b9"}, ] [package.dependencies] From f7f2c8498286cf815bafb9aa51b08bc51906ac07 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Tue, 15 Oct 2024 14:42:42 +0200 Subject: [PATCH 09/17] update makefile --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 8739ccd9..96b353d4 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,7 @@ init: $(EXEC_CMD) poetry run python manage.py set_config $(EXEC_CMD) poetry run python manage.py import_dsfr_pictograms $(EXEC_CMD) poetry run python manage.py create_starter_pages + $(EXEC_CMD) poetry run python manage.py import_page_templates make index .PHONY: init-dev From f032337152bfd6ce9770374dbe98c6208b67fe57 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 16 Oct 2024 12:27:07 +0200 Subject: [PATCH 10/17] Update import_dsfr_pictograms command --- .../management/commands/import_dsfr_pictograms.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content_manager/management/commands/import_dsfr_pictograms.py b/content_manager/management/commands/import_dsfr_pictograms.py index 68483f74..da57cc60 100644 --- a/content_manager/management/commands/import_dsfr_pictograms.py +++ b/content_manager/management/commands/import_dsfr_pictograms.py @@ -12,7 +12,12 @@ class Command(BaseCommand): help = """Import all the pictograms from the DSFR""" def handle(self, *args, **kwargs): - call_command("collectstatic", interactive=False, clear=True) + call_command( + "collectstatic", + "--ignore=*.sass", + interactive=False, + clear=True, + ) picto_root = "staticfiles/dsfr/dist/artwork/pictograms/" picto_folders = os.listdir(picto_root) From 569b6bcefce994dc3ccd3beb8a97d2b32042000e Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 16 Oct 2024 12:34:14 +0200 Subject: [PATCH 11/17] Add medias folder to .env.example --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 33beaced..77940f9a 100644 --- a/.env.example +++ b/.env.example @@ -6,7 +6,7 @@ HOST_URL=localhost ALLOWED_HOSTS=localhost, 127.0.0.1 HOST_PORT=8000 SITE_NAME=Sites faciles -MEDIA_ROOT= +MEDIA_ROOT=medias # USE_DOCKER: Set 1 to use Docker USE_DOCKER=0 From c5c10e7520690204a4734cab1a7c7a80090bb738 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Wed, 16 Oct 2024 12:35:25 +0200 Subject: [PATCH 12/17] Fix the call to collectstatic --- content_manager/management/commands/import_dsfr_pictograms.py | 1 - 1 file changed, 1 deletion(-) diff --git a/content_manager/management/commands/import_dsfr_pictograms.py b/content_manager/management/commands/import_dsfr_pictograms.py index da57cc60..b185bddd 100644 --- a/content_manager/management/commands/import_dsfr_pictograms.py +++ b/content_manager/management/commands/import_dsfr_pictograms.py @@ -16,7 +16,6 @@ def handle(self, *args, **kwargs): "collectstatic", "--ignore=*.sass", interactive=False, - clear=True, ) picto_root = "staticfiles/dsfr/dist/artwork/pictograms/" From 961b541280433fabd8171ea3d9ce1b42f33dc29a Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Thu, 17 Oct 2024 16:43:46 +0200 Subject: [PATCH 13/17] Add API entry for the child pages --- content_manager/abstract.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content_manager/abstract.py b/content_manager/abstract.py index 4cce4664..619b1470 100644 --- a/content_manager/abstract.py +++ b/content_manager/abstract.py @@ -133,8 +133,15 @@ class SitesFacilesBasePage(Page): APIField("header_cta_buttons"), APIField("header_cta_label"), APIField("header_cta_link"), + APIField("public_child_pages"), ] + @property + def public_child_pages(self): + return [ + {"id": child.id, "slug": child.slug, "title": child.title} for child in self.get_children().live().public() + ] + def get_absolute_url(self): return self.url From 951ebb846308dc90eb11701e7bac6ec6cfffda69 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Thu, 17 Oct 2024 17:03:40 +0200 Subject: [PATCH 14/17] Add tests and update exported templates --- Makefile | 8 +- .../commands/create_starter_pages.py | 2 +- .../commands/export_page_templates.py | 7 +- .../commands/import_dsfr_pictograms.py | 2 +- .../page_templates/image_data.json | 151 +- .../page_templates/img/accessibility.png | Bin 0 -> 7740 bytes .../page_templates/img/undraw_cms_re_asu0.png | Bin 0 -> 22255 bytes .../page_templates/pages_data.json | 1637 ++++++++++++++++- .../{get_or_create.py => accessors.py} | 6 +- content_manager/services/import_export.py | 2 +- .../tests/test_services_accessors.py | 94 + .../tests/test_services_get_or_create.py | 14 - 12 files changed, 1877 insertions(+), 46 deletions(-) create mode 100644 content_manager/page_templates/img/accessibility.png create mode 100644 content_manager/page_templates/img/undraw_cms_re_asu0.png rename content_manager/services/{get_or_create.py => accessors.py} (96%) create mode 100644 content_manager/tests/test_services_accessors.py delete mode 100644 content_manager/tests/test_services_get_or_create.py diff --git a/Makefile b/Makefile index 96b353d4..9334b233 100644 --- a/Makefile +++ b/Makefile @@ -14,10 +14,6 @@ endif web-prompt: $(EXEC_CMD) bash -.PHONY: test-unit -test-unit: - $(EXEC_CMD) poetry run python manage.py test --settings config.settings_test - .PHONY: collectstatic collectstatic: $(EXEC_CMD) poetry run python manage.py collectstatic --noinput --ignore=*.sass @@ -85,3 +81,7 @@ runserver: .PHONY: test test: $(EXEC_CMD) poetry run python manage.py test --buffer --parallel + +.PHONY: test-unit +test-unit: + $(EXEC_CMD) poetry run python manage.py test --settings config.settings_test diff --git a/content_manager/management/commands/create_starter_pages.py b/content_manager/management/commands/create_starter_pages.py index 6b440095..f09b3fed 100644 --- a/content_manager/management/commands/create_starter_pages.py +++ b/content_manager/management/commands/create_starter_pages.py @@ -8,7 +8,7 @@ from wagtailmenus.models.menuitems import FlatMenuItem, MainMenuItem from content_manager.models import ContentPage -from content_manager.services.get_or_create import get_or_create_footer_menu, get_or_create_main_menu +from content_manager.services.accessors import get_or_create_footer_menu, get_or_create_main_menu from forms.models import FormField, FormPage ALL_ALLOWED_SLUGS = ["home", "mentions-legales", "accessibilite", "contact"] diff --git a/content_manager/management/commands/export_page_templates.py b/content_manager/management/commands/export_page_templates.py index 4f40f7e7..8748917c 100644 --- a/content_manager/management/commands/export_page_templates.py +++ b/content_manager/management/commands/export_page_templates.py @@ -10,16 +10,19 @@ class Command(BaseCommand): def handle(self, *args, **kwargs): """ - Export template pages + Export template pages. + + List is manually set for now """ - page_ids = ["32", "37"] + page_ids = ["32", "36", "37", "38", "39", "40", "41", "42", "43", "44"] image_ids = [] pages = {} for page_id in page_ids: + self.stdout.write(f"Exporting page {page_id}") page = ExportPage(page_id, SOURCE_URL) pages[page_id] = page.json_export image_ids += page.image_ids diff --git a/content_manager/management/commands/import_dsfr_pictograms.py b/content_manager/management/commands/import_dsfr_pictograms.py index b185bddd..85796883 100644 --- a/content_manager/management/commands/import_dsfr_pictograms.py +++ b/content_manager/management/commands/import_dsfr_pictograms.py @@ -4,7 +4,7 @@ from django.core.management.base import BaseCommand from wagtail.images.models import Image -from content_manager.services.get_or_create import get_or_create_collection +from content_manager.services.accessors import get_or_create_collection from content_manager.utils import import_image diff --git a/content_manager/page_templates/image_data.json b/content_manager/page_templates/image_data.json index 3029f288..50d57e6a 100644 --- a/content_manager/page_templates/image_data.json +++ b/content_manager/page_templates/image_data.json @@ -4,7 +4,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/6/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Home.original.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091837Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=29a5dd3fed7c782f8aad4cf846f8beff370c3227519cc3069c617d0eb47c46ec" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Home.original.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=42f6dfce758104169d6dd027d4df7543dfd4d1ded5488ed7c1f2a9dd9e79672e" }, "filename": "Home.original.png", "is_pictogram": false, @@ -19,7 +19,7 @@ "Pictogrammes", "System" ], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Information?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091840Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=32b89c6ad720338caf5f438659fa0e9452d5180d0d539f94d5120a60b6bee938" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Information?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=5c2e592fec7b5a4d988f226c887002d02152b87e27f8c4af4dab67ad444d8710" }, "filename": "Pictogrammes DSFR \u2014 System \u2014 Information", "is_pictogram": true, @@ -34,7 +34,7 @@ "Pictogrammes", "System" ], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Success?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091841Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=abf599a51e9d609d82a2d556110b6b9c32de9b34faee792334ce88a814a0b287" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__Success?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9704ebf348b14fc4f179019e341c341d7f98bc802bc75bd5afbc85320558dc60" }, "filename": "Pictogrammes DSFR \u2014 System \u2014 Success", "is_pictogram": true, @@ -45,7 +45,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/81/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_Website_builder_re_ii6e.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091844Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=02b9dea4701aaafbfdfa44bc2a67c0a7d55ab591b7b8004847bec17c5ca58983" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_Website_builder_re_ii6e.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=469138868118d11ba7cc21f42050190df55a265d62dd758850f5d8b3ae4f3af7" }, "filename": "undraw_Website_builder_re_ii6e.png", "is_pictogram": false, @@ -56,7 +56,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/84/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_building_websites_i78t_1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091846Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=0aa28a6b26bed696bfb8f3e45fa16884bda76017669116626f7e74b31f47fcff" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_building_websites_i78t_1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=24d59986227890188189a07737ca98ce9e58cdcd63459dd66cc2502528ac903b" }, "filename": "undraw_building_websites_i78t_1.png", "is_pictogram": false, @@ -67,7 +67,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/96/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091834Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c25b20702eb1b843dd012317dc34b7274df03db56f2933ccb478fef23b28d801" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=1c8109f7152cc509831cdbaf95dc9a34c5dda58cfccb2716428a5a8cecd10a55" }, "title": "Header", "filename": "Design_sans_titre.png", @@ -78,7 +78,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/112/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre_1.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091842Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=e9c5928ba2758c5e62bb56d13baede0427480a1d7f223dc9c7b05542b6df0aa6" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre_1.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=91058dce71945db628cd57ba9ba9b5cd0be649bf8d187485c3a8ef97395a3f7e" }, "title": "Design sans titre (3)", "filename": "Design_sans_titre_1.svg", @@ -89,7 +89,7 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/116/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_female_avatar_efig.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091849Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9a1b5cb8171e790875d08322dfa07322cc9c98b8d8b5b274ba79c34c38e2d5b3" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_female_avatar_efig.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150226Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=35691c1f6f5d8f7b8b63d65ff14a71fe9608c8b08033c433967e348b86b9ac8a" }, "title": "undraw_female_avatar_efig", "filename": "undraw_female_avatar_efig.svg", @@ -100,10 +100,143 @@ "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/117/", "tags": [], - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_male_avatar_g98d.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091851Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=cf92f76d46edbcde80ef87fa21d0e23e55775ab1722f77ae055d1c298a52610c" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_male_avatar_g98d.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150226Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=cbb8547ef3af291dd06aeb86d38ccd3c033baf3ed9eacfaf08248e9f9bdf1011" }, "title": "undraw_male_avatar_g98d", "filename": "undraw_male_avatar_g98d.svg", "is_pictogram": false + }, + "1": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/1/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_cms_re_asu0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=afbc51605652a19fc60c7241542af693d6969c904838b8df69809445300ef2eb" + }, + "title": "CMS", + "filename": "undraw_cms_re_asu0.png", + "is_pictogram": false + }, + "140": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/140/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/claudio-schwarz-VaeGMpaSlck-unsplash.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T145734Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=1c4adc18d3801aa80a8f1ccf26e9718d88780e68ea75a73b6ae8a7b6235a68f2" + }, + "title": "claudio-schwarz-VaeGMpaSlck-unsplash", + "filename": "claudio-schwarz-VaeGMpaSlck-unsplash.jpg", + "is_pictogram": false + }, + "142": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/142/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/daniele-d-andreti-6rVzFCjy2XE-unsplash.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T145734Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=e8ec980cdd689f9564e12b20d2e6f5eeb2b6b7241b01e2a52708fffffbcc3536" + }, + "title": "daniele-d-andreti-6rVzFCjy2XE-unsplash", + "filename": "daniele-d-andreti-6rVzFCjy2XE-unsplash.jpg", + "is_pictogram": false + }, + "143": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/143/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/guzel-maksutova-B30XL_m3fso-unsplash.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T145734Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=31f1c007535702bd19bbd7be8681ddce1c8f47d195d73dddec1d7cd5521a9ec7" + }, + "title": "guzel-maksutova-B30XL_m3fso-unsplash", + "filename": "guzel-maksutova-B30XL_m3fso-unsplash.jpg", + "is_pictogram": false + }, + "144": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/144/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/changqing-lu-wLGArh9WwPs-unsplash.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T145735Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f72e4c0dfd49095cb3346a7bee1d931baf2d43828004de948bb93e710b1b91a7" + }, + "title": "changqing-lu-wLGArh9WwPs-unsplash", + "filename": "changqing-lu-wLGArh9WwPs-unsplash.jpg", + "is_pictogram": false + }, + "145": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/145/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/sara-darcaj-YzamNB_T4WQ-unsplash.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T145735Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=e5b01dc4dceb76a5c88fc820af5aa955b8f707ce7adb7cc85a93004cba770475" + }, + "title": "sara-darcaj-YzamNB_T4WQ-unsplash", + "filename": "sara-darcaj-YzamNB_T4WQ-unsplash.jpg", + "is_pictogram": false + }, + "28": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/28/", + "tags": [ + "Digital", + "DSFR", + "Pictogrammes" + ], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__Digital__Avatar?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150226Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fd78600ff5d29a51e1229e1f907b5858ea326350c930f001249a73a03f4e7221" + }, + "title": "Pictogrammes DSFR \u2014 Digital \u2014 Avatar", + "filename": "Pictogrammes DSFR \u2014 Digital \u2014 Avatar", + "is_pictogram": true + }, + "66": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/66/", + "tags": [ + "DSFR", + "Leisure", + "Pictogrammes" + ], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__Leisure__Digital_Art?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=72dfa95a22846e00d370d99a381e080f1fd6bed376dee6f24a35bbc1ad191c54" + }, + "title": "Pictogrammes DSFR \u2014 Leisure \u2014 Digital Art", + "filename": "Pictogrammes DSFR \u2014 Leisure \u2014 Digital Art", + "is_pictogram": true + }, + "78": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/78/", + "tags": [ + "DSFR", + "Pictogrammes", + "System" + ], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Pictogrammes_DSFR__System__System?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ec91ba0784397b9c34803a0025a0e1a25cb39bd99c7a3845c59e901bc1827e74" + }, + "title": "Pictogrammes DSFR \u2014 System \u2014 System", + "filename": "Pictogrammes DSFR \u2014 System \u2014 System", + "is_pictogram": true + }, + "82": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/82/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/accessibility.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150225Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=165ff75c1760dada72524eef11e9b4d4be0a45641d0ff0e3f472cbe2a7c94bae" + }, + "title": "picto accessibility", + "filename": "accessibility.png", + "is_pictogram": false + }, + "120": { + "meta": { + "type": "wagtailimages.Image", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/120/", + "tags": [], + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/undraw_personal_info_re_ur1n.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T145737Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=cda557501dff58fd85c3b862bdbd08512ed9ffcd89d7dbbb6e11475458715038" + }, + "title": "undraw_personal_info_re_ur1n", + "filename": "undraw_personal_info_re_ur1n.svg", + "is_pictogram": false } } \ No newline at end of file diff --git a/content_manager/page_templates/img/accessibility.png b/content_manager/page_templates/img/accessibility.png new file mode 100644 index 0000000000000000000000000000000000000000..7bdccab6a6b5cc6f630239c6999ab382076b4e2c GIT binary patch literal 7740 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 Sp@C|!klSHTm--)q&ixIUaJJ9@ literal 0 HcmV?d00001 diff --git a/content_manager/page_templates/pages_data.json b/content_manager/page_templates/pages_data.json index c5153661..79167830 100644 --- a/content_manager/page_templates/pages_data.json +++ b/content_manager/page_templates/pages_data.json @@ -7,9 +7,22 @@ 84, 116, 117, + 82, + 77, + 66, + 78, 96, 84, - 6 + 6, + 81, + 6, + 28, + 81, + 84, + 77, + 1, + 81, + 84 ], "pages": { "32": { @@ -648,22 +661,22 @@ "meta": { "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/112/", - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre_1.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091829Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=7bb10d1af3a622d97bf1708dc06757e979fb55d830c71da5e3d692a62ab79a97" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre_1.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150223Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=707af07bef74bb659ac1e063b523a1816e921287390fd08728392ccd51a5a023" }, "title": "Design sans titre (3)" }, "header_image_render": { - "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-1200x627.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091829Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6828841e027ced00ec658c395e9941d9b62f2ec3adbc68a82a7fb776e8ea1ba7", - "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-1200x627.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091829Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6828841e027ced00ec658c395e9941d9b62f2ec3adbc68a82a7fb776e8ea1ba7", + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-1200x627.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150223Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f743ef14d0b81f88bc5b46a05b5851b145a8fa9ab8aee50aa798479eafab7382", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-1200x627.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150223Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f743ef14d0b81f88bc5b46a05b5851b145a8fa9ab8aee50aa798479eafab7382", "width": 518, "height": 270, "alt": "Design sans titre (3)" }, "header_image_thumbnail": { - "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-376x211.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091832Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=79d904e3a9cb1ac73e41be35eb8af8e37afd329aa5095fbd2ccf7ca79124455f", - "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-376x211.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091832Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=79d904e3a9cb1ac73e41be35eb8af8e37afd329aa5095fbd2ccf7ca79124455f", - "width": 376.0, - "height": 211.0, + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-376x211.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150223Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=df61c9fc0994f92970046839b0f6c5149505b60b87e45c07b010fc53e501349b", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre_1.2e16d0ba.fill-376x211.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150223Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=df61c9fc0994f92970046839b0f6c5149505b60b87e45c07b010fc53e501349b", + "width": 376, + "height": 211, "alt": "Design sans titre (3)" }, "header_with_title": true, @@ -695,6 +708,346 @@ "header_cta_label": null, "header_cta_link": null }, + "36": { + "id": 36, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/36/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/exemples-de-tuiles/", + "slug": "exemples-de-tuiles", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:26:02.224329+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Tuiles", + "body": [ + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Tuiles simples ins\u00e9r\u00e9es dans une grille d'\u00e9l\u00e9ments

" + }, + { + "type": "item_grid", + "value": { + "column_width": "4", + "items": [ + { + "type": "tile", + "value": { + "title": "Tuile simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Tuile simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Tuile simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + } + ] + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Tuiles \u00e9labor\u00e9es ins\u00e9r\u00e9es dans une grille d'\u00e9l\u00e9ments

" + }, + { + "type": "item_grid", + "value": { + "column_width": "6", + "items": [ + { + "type": "tile", + "value": { + "title": "Tuile avec un lien et un badge", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 82, + "link": { + "page": 42, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [ + { + "type": "badges", + "value": [ + { + "type": "badge", + "value": { + "text": "Badge \"nouveau\"", + "color": "new", + "hide_icon": false + } + } + ] + } + ], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Tuile avec un texte de d\u00e9tail et un tag", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 78, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Tag avec ic\u00f4ne", + "is_small": false, + "color": "green-tilleul-verveine", + "icon_class": "fr-icon-chat-check-line", + "link": { + "page": null, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "detail_text": "Texte de d\u00e9tail : Lorem ipsum dolor sit amet", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "tile", + "value": { + "title": "Tuile avec un document \u00e0 t\u00e9l\u00e9charger", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": 66, + "link": { + "page": null, + "document": 1, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + } + ] + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text", + "value": "

Tuiles horizontales, sur fond pleine largeur

" + }, + { + "type": "tile", + "value": { + "title": "Tuile horizontale sans image avec des tags", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": null, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Tag 1", + "is_small": false, + "color": "green-tilleul-verveine", + "icon_class": "", + "link": { + "page": null, + "document": null, + "external_url": "" + } + } + }, + { + "type": "tag", + "value": { + "label": "Tag 2", + "is_small": false, + "color": "green-bourgeon", + "icon_class": "", + "link": { + "page": 42, + "document": null, + "external_url": "" + } + } + }, + { + "type": "tag", + "value": { + "label": "Tag 3", + "is_small": false, + "color": "green-emeraude", + "icon_class": "", + "link": { + "page": 42, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": true + } + }, + { + "type": "tile", + "value": { + "title": "Tuile horizontale avec une image et un lien", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": 77, + "link": { + "page": 42, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": true + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, "37": { "id": 37, "meta": { @@ -879,20 +1232,20 @@ "meta": { "type": "wagtailimages.Image", "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/images/96/", - "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=201cd1c5a240d33620af2a0a6235ab58376d9ebdad65078d8bfd32b8aef26147" + "download_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/original_images/Design_sans_titre.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150224Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d578177d1962d7eef7a556e8a835eb75463adb54b2e30c9058e5c53503b57cc2" }, "title": "Header" }, "header_image_render": { - "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ca12b2d04b21c362d0ed32d39286dcf2d61271fe772001a060aa2b468991307f", - "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ca12b2d04b21c362d0ed32d39286dcf2d61271fe772001a060aa2b468991307f", + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150224Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c18c4159c4fb17af683f4a9044bd30c81bd7ad763586acb8b8c1d40934dc9279", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-1200x627.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150224Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c18c4159c4fb17af683f4a9044bd30c81bd7ad763586acb8b8c1d40934dc9279", "width": 839, "height": 438, "alt": "Header" }, "header_image_thumbnail": { - "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3358baaa812873bb494b0646fa5696195d34b73004f5a7ee91c92cacfe3667bd", - "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241003%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241003T091833Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3358baaa812873bb494b0646fa5696195d34b73004f5a7ee91c92cacfe3667bd", + "url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150224Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c083418f12b716205bda368fcc066ee79737ad33f8b977aed3db251a829ef296", + "full_url": "https://cellar-c2.services.clever-cloud.com/storage-demo/images/Design_sans_titre.319bb898.fill-376x211.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ZWM9OJBMLHVWM86C0Y2S%2F20241017%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20241017T150224Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c083418f12b716205bda368fcc066ee79737ad33f8b977aed3db251a829ef296", "width": 376, "height": 211, "alt": "Header" @@ -925,6 +1278,1264 @@ ], "header_cta_label": null, "header_cta_link": null + }, + "38": { + "id": 38, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/38/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/page-de-contenu-avec-menu-lat%C3%A9ral/", + "slug": "page-de-contenu-avec-menu-lat\u00e9ral", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:32:49.092767+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Page de contenu avec menu lat\u00e9ral", + "body": [ + { + "type": "fullwidthbackgroundwithsidemenu", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "main_content": [ + { + "type": "item_grid", + "value": { + "column_width": "6", + "items": [ + { + "type": "card", + "value": { + "title": "Comment cr\u00e9er un menu lat\u00e9ral ?", + "heading_tag": "h2", + "description": "

Choisissez le bloc \"Fond pleine largeur avec menu lat\u00e9ral\". Le menu appara\u00eetra \u00e0 gauche de la page. Vous pourrez ensuite choisir une page \"racine\", et l'ensemble de ses sous-pages appara\u00eetront automatiquement dans le menu, refl\u00e9tant l'arborescence de votre site.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Et pour la partie de droite de la page ?", + "heading_tag": "h2", + "description": "

Vous pouvez ins\u00e9rer le contenu de votre choix dans cette partie. Pour cet exemple, nous avons opt\u00e9 pour une \"grille d'\u00e9l\u00e9ments\", dans laquelle nous avons ins\u00e9r\u00e9 des \"cartes verticales\".

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ], + "sidemenu_title": "Titre de votre menu lat\u00e9ral", + "sidemenu_content": [ + { + "type": "pagetree", + "value": { + "page": 34 + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "39": { + "id": 39, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/39/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/blocs-simples-de-textes-et-dimages/", + "slug": "blocs-simples-de-textes-et-dimages", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:31:35.383776+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Blocs simples de textes et d'images", + "body": [ + { + "type": "imageandtext", + "value": { + "image": 81, + "image_side": "right", + "image_ratio": "5", + "text": "

Bloc \"Image et texte\"

Vous pouvez choisir la disposition de l'image (gauche ou droite) et ses dimensions. Vous pouvez \u00e9galement mettre ce texte en forme (gras, italique, listes \u00e0 puce, listes num\u00e9rot\u00e9es, liens hypertexte...).


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "link": { + "page": null, + "document": null, + "external_url": "", + "text": "", + "icon": "", + "size": "" + }, + "link_label": "", + "page": null, + "link_url": "" + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text", + "value": "

Texte avec mise en forme

Vous pouvez mettre le texte en forme (gras, italique, listes \u00e0 puce, listes num\u00e9rot\u00e9es, liens hypertexte...).

Pour cet exemple, nous avons ins\u00e9r\u00e9 le bloc de texte dans un \"fond pleine largeur\", qui peut \u00eatre une couleur ou l'image de votre choix. Ici, nous avons choisi la couleur \"Bleu France\".


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + } + ] + } + }, + { + "type": "paragraph", + "value": "

Image seule

Utilisez un bloc 'image\" pour cela. Vous pourrez choisir les dimensions de l'image, et l'agr\u00e9menter si vous le souhaitez d'un titre, d'une l\u00e9gende et d'un lien.

Pour garantir l'accessibilit\u00e9 de votre site, n'oubliez pas de renseigner une alternative textuelle pour chaque image.

" + }, + { + "type": "image", + "value": { + "title": "", + "heading_tag": "h3", + "image": 6, + "alt": "Une image d'illustration.", + "width": "", + "image_ratio": "fr-ratio-32x9", + "caption": "Vous pouvez ajouter une l\u00e9gende ici.", + "url": "" + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Options de mise en forme des textes

De nombreuses options existent pour mettre vos textes en forme. N'h\u00e9sitez pas \u00e0 les utiliser pour am\u00e9liorer la lisibilit\u00e9 de vos contenus.

En-t\u00eate 2

En-t\u00eate 3

En-t\u00eate 4

  1. liste 1
  2. liste 2
  3. liste 3
  • liste \u00e0 puce
  • liste \u00e0 puce
  • liste \u00e0 puce

Lien interne

Lien externe

Lien email

Un document \u00e0 t\u00e9l\u00e9charger

Un texte simple

Un texte en gras

Un texte en italique

Une ligne horizontale :


" + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "40": { + "id": 40, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/40/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/options-de-mise-en-valeur-de-textes/", + "slug": "options-de-mise-en-valeur-de-textes", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:29:51.465461+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Options de mise en valeur de textes", + "body": [ + { + "type": "paragraph", + "value": "

Utilisez ces blocs particuliers pour mettre des textes en valeur, et attirer l'attention de vos lecteurs. Vous pouvez personnaliser ces blocs avec des ic\u00f4nes, des boutons, des couleurs et des images.

" + }, + { + "type": "paragraph", + "value": "

Messages d'alerte

" + }, + { + "type": "alert", + "value": { + "title": "Message d'alerte - succ\u00e8s", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + "level": "success", + "heading_tag": "h3" + } + }, + { + "type": "alert", + "value": { + "title": "Message d'alerte - information", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + "level": "info", + "heading_tag": "h3" + } + }, + { + "type": "alert", + "value": { + "title": "Message d'alerte - erreur", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + "level": "error", + "heading_tag": "h3" + } + }, + { + "type": "alert", + "value": { + "title": "Message d'alerte - avertissement", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + "level": "warning", + "heading_tag": "h3" + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Mise en avant

" + }, + { + "type": "callout", + "value": { + "title": "Titre", + "heading_tag": "h4", + "icon_class": "fr-icon-flag-line", + "text": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "button": { + "page": 39, + "document": null, + "external_url": "", + "text": "Bouton secondaire", + "button_type": "fr-btn fr-btn--secondary", + "icon_class": "", + "icon_side": "" + }, + "color": "" + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Mise en exergue

" + }, + { + "type": "highlight", + "value": { + "text": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "color": "", + "size": "" + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Citation

" + }, + { + "type": "quote", + "value": { + "image": 28, + "quote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + "author_name": "Nom de l'auteur", + "author_title": "Titre de l'auteur", + "color": "" + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "41": { + "id": 41, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/41/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/grilles-d%C3%A9l%C3%A9ments/", + "slug": "grilles-d\u00e9l\u00e9ments", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:27:10.483371+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Grilles d'\u00e9l\u00e9ments", + "body": [ + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Utilisez ce type de bloc pour structurer des \u00e9l\u00e9ments en rang\u00e9es et en colonnes. Vous pouvez y ins\u00e9rer les \u00e9l\u00e9ments de votre choix.

Pour cela, il suffit de choisir le bloc \"grille d'\u00e9l\u00e9ment\", puis de choisir la largeur des colonnes :

  • 3/12 pour une grille \u00e0 4 colonnes
  • 4/12 pour une grille \u00e0 3 colonnes
  • 6/12 pour une grille \u00e0 2 colonnes

Le nombre de rang\u00e9es augmentera en fonction du nombre d'\u00e9l\u00e9ments que vous ajoutez dans la grille.

" + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text", + "value": "

Exemple de grille avec des cartes verticales

Pour cette grille, nous avons r\u00e9gl\u00e9 la largeur de colonnes sur 6/12.

" + }, + { + "type": "item_grid", + "value": { + "column_width": "6", + "items": [ + { + "type": "card", + "value": { + "title": "Carte verticale", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": null, + "image_ratio": "fr-ratio-1x1", + "image_badge": [], + "link": { + "page": 41, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte verticale", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": 41, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte verticale", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": 41, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte verticale", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": 41, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Exemple de grille avec des tuiles et des images

Pour cette grille, nous avons r\u00e9gl\u00e9 la largeur de colonnes sur 4/12.

" + }, + { + "type": "item_grid", + "value": { + "column_width": "4", + "items": [ + { + "type": "tile", + "value": { + "title": "Tuile", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 77, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "image", + "value": { + "title": "", + "heading_tag": "h3", + "image": 84, + "alt": "", + "width": "fr-content-media--sm", + "image_ratio": "fr-ratio-4x3", + "caption": "", + "url": "" + } + }, + { + "type": "tile", + "value": { + "title": "Tuile", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 77, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "image", + "value": { + "title": "", + "heading_tag": "h3", + "image": 81, + "alt": "", + "width": "fr-content-media--sm", + "image_ratio": "fr-ratio-4x3", + "caption": "", + "url": "" + } + }, + { + "type": "tile", + "value": { + "title": "Tuile", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 77, + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "top_detail_badges_tags": [], + "detail_text": "", + "is_small": false, + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false, + "is_horizontal": false + } + }, + { + "type": "image", + "value": { + "title": "", + "heading_tag": "h3", + "image": 1, + "alt": "", + "width": "fr-content-media--sm", + "image_ratio": "fr-ratio-4x3", + "caption": "", + "url": "" + } + } + ] + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "42": { + "id": 42, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/42/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/accord%C3%A9ons/", + "slug": "accord\u00e9ons", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:23:07.932797+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Accord\u00e9ons", + "body": [ + { + "type": "paragraph", + "value": "

Les accord\u00e9ons sont id\u00e9aux pour cr\u00e9er des sections \"questions fr\u00e9quentes\". Vous pouvez appliquer la mise en forme de votre choix sur les textes (gras, italique, listes, liens...).

" + }, + { + "type": "accordions", + "value": [ + { + "type": "title", + "value": "Titre de l'accord\u00e9on" + }, + { + "type": "accordion", + "value": { + "title": "Titre de la section ou question", + "content": "

Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + } + }, + { + "type": "accordion", + "value": { + "title": "Titre de la section ou question", + "content": "

Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + } + }, + { + "type": "accordion", + "value": { + "title": "Titre de la section ou question", + "content": "

Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + } + }, + { + "type": "accordion", + "value": { + "title": "Titre de la section ou question", + "content": "

Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + } + } + ] + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "43": { + "id": 43, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/43/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/exemples-de-cartes/", + "slug": "exemples-de-cartes", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:25:06.220370+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Cartes", + "body": [ + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "", + "content": [ + { + "type": "text", + "value": "

Cartes simples ins\u00e9r\u00e9es dans une grille d'\u00e9l\u00e9ments

" + }, + { + "type": "item_grid", + "value": { + "column_width": "4", + "items": [ + { + "type": "card", + "value": { + "title": "Carte verticale simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte verticale simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte verticale simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "grey", + "content": [ + { + "type": "text", + "value": "

Cartes verticales \u00e9labor\u00e9es ins\u00e9r\u00e9es dans une grille d'\u00e9l\u00e9ments

" + }, + { + "type": "item_grid", + "value": { + "column_width": "6", + "items": [ + { + "type": "card", + "value": { + "title": "Carte avec d\u00e9tail du haut et lien", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 84, + "image_ratio": "fr-ratio-4x3", + "image_badge": [], + "link": { + "page": 43, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "D\u00e9tail du haut avec ic\u00f4ne", + "top_detail_icon": "fr-icon-quote-line", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte avec d\u00e9tail du bas et document \u00e0 t\u00e9l\u00e9charger", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 84, + "image_ratio": "fr-ratio-4x3", + "image_badge": [], + "link": { + "page": null, + "document": 1, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "fr-icon-quote-line", + "top_detail_badges_tags": [], + "bottom_detail_text": "D\u00e9tail du bas avec ic\u00f4ne", + "bottom_detail_icon": "fr-icon-attachment-line", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte avec badge et bouton", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 84, + "image_ratio": "fr-ratio-4x3", + "image_badge": [ + { + "type": "badge", + "value": { + "text": "Badge info", + "color": "info", + "hide_icon": false + } + } + ], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "fr-icon-quote-line", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "fr-icon-attachment-line", + "call_to_action": [ + { + "type": "buttons", + "value": [ + { + "type": "button", + "value": { + "page": 43, + "document": null, + "external_url": "", + "text": "Bouton d'appel \u00e0 action", + "button_type": "fr-btn fr-btn--secondary", + "icon_class": "", + "icon_side": "" + } + } + ] + } + ], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte avec des tags et des liens", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 84, + "image_ratio": "fr-ratio-4x3", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "fr-icon-quote-line", + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Tag 1", + "is_small": false, + "color": "green-tilleul-verveine", + "icon_class": "", + "link": { + "page": 43, + "document": null, + "external_url": "" + } + } + }, + { + "type": "tag", + "value": { + "label": "Tag 2", + "is_small": false, + "color": "green-bourgeon", + "icon_class": "", + "link": { + "page": 43, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "bottom_detail_text": "", + "bottom_detail_icon": "fr-icon-attachment-line", + "call_to_action": [ + { + "type": "links", + "value": [ + { + "type": "link", + "value": { + "page": 43, + "document": null, + "external_url": "", + "text": "Lien 1" + } + }, + { + "type": "link", + "value": { + "page": 43, + "document": null, + "external_url": "", + "text": "Lien 2" + } + } + ] + } + ], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ] + } + }, + { + "type": "fullwidthbackground", + "value": { + "bg_image": null, + "bg_color_class": "blue-france", + "content": [ + { + "type": "text", + "value": "

Cartes horizontales, sur fond pleine largeur

" + }, + { + "type": "card", + "value": { + "title": "Carte horizontale simple", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": null, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte horizontale sans image avec un document \u00e0 t\u00e9l\u00e9charger et un tag", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": null, + "image_ratio": "", + "image_badge": [], + "link": { + "page": null, + "document": 1, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [ + { + "type": "tags", + "value": [ + { + "type": "tag", + "value": { + "label": "Tag 1", + "is_small": false, + "color": "green-tilleul-verveine", + "icon_class": "", + "link": { + "page": null, + "document": null, + "external_url": "" + } + } + } + ] + } + ], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + }, + { + "type": "card", + "value": { + "title": "Carte horizontale avec image, un lien de t\u00e9l\u00e9chargement et un badge", + "heading_tag": "h3", + "description": "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

", + "image": 81, + "image_ratio": "fr-card--horizontal-tier", + "image_badge": [ + { + "type": "badge", + "value": { + "text": "Badge \"Succ\u00e8s\"", + "color": "success", + "hide_icon": false + } + } + ], + "link": { + "page": null, + "document": 1, + "external_url": "" + }, + "url": "", + "document": null, + "top_detail_text": "", + "top_detail_icon": "", + "top_detail_badges_tags": [], + "bottom_detail_text": "", + "bottom_detail_icon": "", + "call_to_action": [], + "grey_background": false, + "no_background": false, + "no_border": false, + "shadow": false + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null + }, + "44": { + "id": 44, + "meta": { + "type": "content_manager.ContentPage", + "detail_url": "https://sites-faciles.beta.numerique.gouv.fr/api/v2/pages/44/", + "html_url": "http://sites-faciles.beta.numerique.gouv.fr/exemples/etapiers/", + "slug": "etapiers", + "show_in_menus": true, + "first_published_at": "2024-09-16T17:20:49.058230+02:00", + "alias_of": null, + "locale": "fr" + }, + "title": "Etapiers", + "body": [ + { + "type": "paragraph", + "value": "

Les \u00e9tapiers servent \u00e0 illustrer des processus. Vous pouvez choisir le nombre d'\u00e9tapes, et indiquer l'\u00e9tape actuelle.

" + }, + { + "type": "stepper", + "value": { + "title": "Titre", + "total": 4, + "current": 3, + "steps": [ + { + "type": "step", + "value": { + "title": "Etape 1", + "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + } + }, + { + "type": "step", + "value": { + "title": "Etape 2", + "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + } + }, + { + "type": "step", + "value": { + "title": "Etape 3", + "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + } + }, + { + "type": "step", + "value": { + "title": "Etape 4", + "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + } + } + ] + } + } + ], + "header_image": null, + "header_image_render": null, + "header_image_thumbnail": null, + "header_with_title": false, + "header_color_class": null, + "header_large": false, + "header_darken": false, + "header_cta_text": "", + "header_cta_buttons": [], + "header_cta_label": null, + "header_cta_link": null } } } \ No newline at end of file diff --git a/content_manager/services/get_or_create.py b/content_manager/services/accessors.py similarity index 96% rename from content_manager/services/get_or_create.py rename to content_manager/services/accessors.py index 6c125c2d..c473287c 100644 --- a/content_manager/services/get_or_create.py +++ b/content_manager/services/accessors.py @@ -10,6 +10,11 @@ style = color_style() +""" +Methods to get or create various type of contents. +Moved from utils to avoid circular module dependencies. +""" + def get_or_create_collection(col_name: str) -> Collection: qs = Collection.objects.filter(name=col_name) @@ -55,7 +60,6 @@ def get_or_create_content_page( if page_fields and len(page_fields): for k, v in page_fields.items(): - # Manage the actual image id if k in HEADER_FIELDS: setattr(new_page, k, v) new_page.save() diff --git a/content_manager/services/import_export.py b/content_manager/services/import_export.py index a0cfc89c..b94c7021 100644 --- a/content_manager/services/import_export.py +++ b/content_manager/services/import_export.py @@ -14,7 +14,7 @@ from content_manager.constants import HEADER_FIELDS from content_manager.models import ContentPage -from content_manager.services.get_or_create import get_or_create_collection, get_or_create_content_page +from content_manager.services.accessors import get_or_create_collection, get_or_create_content_page PAGE_TEMPLATES_ROOT = settings.BASE_DIR / "content_manager/page_templates" TEMPLATES_DATA_FILE = PAGE_TEMPLATES_ROOT / "pages_data.json" diff --git a/content_manager/tests/test_services_accessors.py b/content_manager/tests/test_services_accessors.py new file mode 100644 index 00000000..84bc4c7f --- /dev/null +++ b/content_manager/tests/test_services_accessors.py @@ -0,0 +1,94 @@ +from wagtail.models import Collection, PageViewRestriction +from wagtail.test.utils import WagtailPageTestCase +from wagtailmenus.models.menus import FlatMenu + +from content_manager.services.accessors import ( + get_or_create_collection, + get_or_create_content_page, + get_or_create_footer_menu, +) +from content_manager.utils import import_image + + +class FooterMenuAccessorTestCase(WagtailPageTestCase): + def test_get_or_create_footer_menu(self): + assert FlatMenu.objects.count() == 0 + + flat_menu = get_or_create_footer_menu() + + assert FlatMenu.objects.count() == 1 + assert flat_menu.handle == "footer" + + +class CollectionAccessorTestCase(WagtailPageTestCase): + def test_get_or_create_collection(self): + assert Collection.objects.count() == 1 + + new_coll = get_or_create_collection("New collection") + + assert Collection.objects.count() == 2 + assert new_coll.name == "New collection" + + duplicate_coll = get_or_create_collection("New collection") + + assert duplicate_coll.pk == new_coll.pk + assert Collection.objects.count() == 2 + + +class ContentPageAccessorTestCase(WagtailPageTestCase): + def setUp(self): + self.sample_body = [("subpageslist", None)] + + def test_get_or_create_content_page_creates_page(self): + example_page = get_or_create_content_page("example_page", title="Pages d’exemple", body=self.sample_body) + + assert example_page.title == "Pages d’exemple" + assert example_page.get_parent().slug == "home" + + def test_get_or_create_content_page_doesnt_overwrite_existing_page(self): + example_page = get_or_create_content_page("new_page", title="New page", body=self.sample_body) + + duplicate_example_page = get_or_create_content_page("new_page", title="Duplicate Page", body=self.sample_body) + + assert example_page.pk == duplicate_example_page.pk + assert example_page.title == duplicate_example_page.title == "New page" + + def test_get_or_create_content_page_with_parent(self): + main_page = get_or_create_content_page("main_page", title="Main page", body=self.sample_body) + + sub_page = get_or_create_content_page( + "sub_page", title="Sub page", body=self.sample_body, parent_page=main_page + ) + + assert sub_page.get_parent().slug == main_page.slug + + def test_get_or_create_private_content_page(self): + private = get_or_create_content_page( + "private", title="Private page", body=self.sample_body, restriction_type="login" + ) + + assert PageViewRestriction.objects.filter(page_id=private.pk).first().restriction_type == "login" + + def test_get_or_create_content_page_with_header_fields(self): + image_file = "static/artwork/technical-error.svg" + image = import_image(image_file, "Sample image") + + header_fields = { + "header_image": image, + "header_color_class": "blue-france", + "header_with_title": True, + "header_large": True, + "header_darken": True, + "header_cta_text": "Call to action", + } + + page_with_header = get_or_create_content_page( + "page_with_header", title="Page with header", body=self.sample_body, page_fields=header_fields + ) + + assert page_with_header.header_image.title == "Sample image" + assert page_with_header.header_color_class == "blue-france" + assert page_with_header.header_with_title is True + assert page_with_header.header_large is True + assert page_with_header.header_darken is True + assert page_with_header.header_cta_text == "Call to action" diff --git a/content_manager/tests/test_services_get_or_create.py b/content_manager/tests/test_services_get_or_create.py deleted file mode 100644 index a83b6db1..00000000 --- a/content_manager/tests/test_services_get_or_create.py +++ /dev/null @@ -1,14 +0,0 @@ -from wagtail.test.utils import WagtailPageTestCase -from wagtailmenus.models.menus import FlatMenu - -from content_manager.services.get_or_create import get_or_create_footer_menu - - -class GetOrCreateTestCase(WagtailPageTestCase): - def test_get_or_create_footer_menu(self): - assert FlatMenu.objects.count() == 0 - - flat_menu = get_or_create_footer_menu() - - assert FlatMenu.objects.count() == 1 - assert flat_menu.handle == "footer" From 657214d41273fbed73a2ed4c0ad2da934d3a4180 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 21 Oct 2024 15:29:52 +0200 Subject: [PATCH 15/17] Update deployment scripts --- .github/workflows/ci.yml | 4 ++++ content_manager/management/commands/create_demo_pages.py | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b992ea1..82f0a092 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,5 +44,9 @@ jobs: - name: 🤹‍ Run the unit tests run: | make test-unit + - name: 🎨 Deploy starter content + run: | + make init + poetry run python manage.py create_demo_pages env: DJANGO_DEBUG: True diff --git a/content_manager/management/commands/create_demo_pages.py b/content_manager/management/commands/create_demo_pages.py index 7901a3bc..c84923bd 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.utils import get_or_create_content_page +from content_manager.services.accessors import get_or_create_content_page from forms.models import FormField, FormPage ALL_ALLOWED_SLUGS = ["blog_index", "publications", "menu_page", "form"] @@ -36,6 +36,7 @@ def handle(self, *args, **kwargs): # First, add the home page to the main menu if not already done home_page = site.root_page + locale = home_page.locale main_menu = MainMenu.objects.first() if not main_menu: main_menu = MainMenu.objects.create(site=site) @@ -67,7 +68,7 @@ def handle(self, *args, **kwargs): contact_menu_entry.save() elif slug == "form": - menu_page = ContentPage.objects.get(slug="menu_page") + menu_page = ContentPage.objects.get(slug="menu_page", locale=locale) self.create_form_page("form_with_all_fields", parent_page=menu_page) else: raise ValueError(f"Valeur inconnue : {slug}") @@ -159,7 +160,7 @@ def create_form_page(self, slug: str, parent_page: ContentPage) -> None: """ # Don't replace a manually created page - already_exists = ContentPage.objects.filter(slug=slug).first() + already_exists = FormPage.objects.filter(slug=slug).first() if already_exists: self.stdout.write(f"The page seem to already exist with id {already_exists.id}") return From 861ca6de545cb571b5e932d7874f6761c861a383 Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 21 Oct 2024 16:29:27 +0200 Subject: [PATCH 16/17] Expose the chil page content type in the API --- content_manager/abstract.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/content_manager/abstract.py b/content_manager/abstract.py index 619b1470..52c87522 100644 --- a/content_manager/abstract.py +++ b/content_manager/abstract.py @@ -139,7 +139,13 @@ class SitesFacilesBasePage(Page): @property def public_child_pages(self): return [ - {"id": child.id, "slug": child.slug, "title": child.title} for child in self.get_children().live().public() + { + "id": child.id, + "slug": child.slug, + "title": child.title, + "type": f"{child.content_type.app_label}.{child.content_type.model}", + } + for child in self.get_children().live().public() ] def get_absolute_url(self): From d34739ebaf8ec347d933548b2cc80ecf13eb8aef Mon Sep 17 00:00:00 2001 From: Sylvain Boissel Date: Mon, 21 Oct 2024 16:41:29 +0200 Subject: [PATCH 17/17] Update messages --- .../locale/fr/LC_MESSAGES/django.mo | Bin 22688 -> 22850 bytes .../locale/fr/LC_MESSAGES/django.po | 379 +++++++++--------- 2 files changed, 194 insertions(+), 185 deletions(-) diff --git a/content_manager/locale/fr/LC_MESSAGES/django.mo b/content_manager/locale/fr/LC_MESSAGES/django.mo index 54f287c37093b39eee9c5db0d47566fd1f425f48..6162dfc81660e5061fc7ce26845bcce84959e2a4 100644 GIT binary patch delta 6461 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 bRCy+FS)E_z>n(zLhNs;3xVoBK&jkGeH;2c5 delta 6302 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 L2r2H7ebxUD(d~_8 diff --git a/content_manager/locale/fr/LC_MESSAGES/django.po b/content_manager/locale/fr/LC_MESSAGES/django.po index c8f0c1f6..c27e86aa 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-09-17 12:04+0200\n" -"PO-Revision-Date: 2024-09-17 12:06+0200\n" +"POT-Creation-Date: 2024-10-21 16:37+0200\n" +"PO-Revision-Date: 2024-10-21 16:38+0200\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:923 -#: content_manager/blocks.py:964 content_manager/blocks.py:997 +#: content_manager/abstract.py:39 content_manager/blocks.py:931 +#: content_manager/blocks.py:972 content_manager/blocks.py:1005 msgid "Background color" msgstr "Couleur de fond" -#: content_manager/abstract.py:43 content_manager/blocks.py:925 -#: content_manager/blocks.py:966 content_manager/blocks.py:999 +#: content_manager/abstract.py:43 content_manager/blocks.py:933 +#: content_manager/blocks.py:974 content_manager/blocks.py:1007 msgid "Uses the French Design System colors" msgstr "Utilise les couleurs du système de design de l'État" @@ -49,7 +49,7 @@ msgid "Call to action text" msgstr "Texte de l’appel à action" #: content_manager/abstract.py:60 content_manager/blocks.py:324 -#: content_manager/blocks.py:638 +#: content_manager/blocks.py:644 msgid "" "Please use only one primary button. If you use icons, align them on the same " "side." @@ -62,7 +62,7 @@ msgid "Call to action label" msgstr "Libellé de l’appel à action" #: content_manager/abstract.py:71 content_manager/abstract.py:80 -#: content_manager/blocks.py:649 content_manager/blocks.py:656 +#: content_manager/blocks.py:655 content_manager/blocks.py:662 msgid "" "This field is obsolete and will be removed in the near future. Please " "replace with the CTA buttons above." @@ -75,26 +75,34 @@ msgid "Call to action link" msgstr "Lien de l’appel à action" #: content_manager/abstract.py:87 +msgid "Source URL" +msgstr "URL source" + +#: content_manager/abstract.py:88 +msgid "For imported pages, to allow updates." +msgstr "Utilisé pour les pages importées, pour permettre les mises à jour." + +#: content_manager/abstract.py:94 msgid "Body" msgstr "Corps" -#: content_manager/abstract.py:91 +#: content_manager/abstract.py:98 msgid "Common page configuration" msgstr "Configuration commune" -#: content_manager/abstract.py:102 content_manager/blocks.py:642 +#: content_manager/abstract.py:109 content_manager/blocks.py:648 msgid "Call-to-action buttons" msgstr "Boutons de l’appel à action" -#: content_manager/abstract.py:107 +#: content_manager/abstract.py:114 msgid "Header options" msgstr "Options d’en-tête" -#: content_manager/abstract.py:143 +#: content_manager/abstract.py:163 msgid "Base page" msgstr "Page de base" -#: content_manager/abstract.py:144 +#: content_manager/abstract.py:164 msgid "Base pages" msgstr "Pages de base" @@ -131,8 +139,8 @@ msgid "Link label" msgstr "Libellé du lien" #: content_manager/blocks.py:107 content_manager/blocks.py:282 -#: content_manager/blocks.py:386 content_manager/blocks.py:526 -#: content_manager/blocks.py:587 +#: content_manager/blocks.py:386 content_manager/blocks.py:529 +#: content_manager/blocks.py:590 msgid "Link" msgstr "Lien" @@ -141,7 +149,7 @@ msgid "Button type" msgstr "Type de bouton" #: content_manager/blocks.py:116 content_manager/blocks.py:147 -#: content_manager/blocks.py:200 content_manager/blocks.py:451 +#: content_manager/blocks.py:200 content_manager/blocks.py:454 msgid "Icon" msgstr "Icône" @@ -150,7 +158,7 @@ msgid "Icon side" msgstr "Côté de l’icône" #: content_manager/blocks.py:130 content_manager/blocks.py:138 -#: content_manager/blocks.py:454 +#: content_manager/blocks.py:457 msgid "Button" msgstr "Bouton" @@ -158,7 +166,7 @@ msgstr "Bouton" msgid "Only used for internal links." msgstr "Uniquement pour les liens internes." -#: content_manager/blocks.py:154 content_manager/blocks.py:474 +#: content_manager/blocks.py:154 content_manager/blocks.py:477 msgid "Size" msgstr "Taille" @@ -196,12 +204,12 @@ msgstr "Badge" #: content_manager/blocks.py:192 content_manager/blocks.py:263 #: content_manager/blocks.py:374 content_manager/blocks.py:418 -#: content_manager/blocks.py:423 content_manager/blocks.py:444 -#: content_manager/blocks.py:486 content_manager/blocks.py:561 -#: content_manager/blocks.py:616 content_manager/blocks.py:625 -#: content_manager/blocks.py:667 content_manager/blocks.py:781 -#: content_manager/blocks.py:811 content_manager/blocks.py:880 -#: content_manager/blocks.py:936 content_manager/models.py:393 +#: content_manager/blocks.py:423 content_manager/blocks.py:447 +#: content_manager/blocks.py:489 content_manager/blocks.py:564 +#: content_manager/blocks.py:619 content_manager/blocks.py:628 +#: content_manager/blocks.py:673 content_manager/blocks.py:787 +#: content_manager/blocks.py:817 content_manager/blocks.py:888 +#: content_manager/blocks.py:944 content_manager/models.py:393 msgid "Title" msgstr "Titre" @@ -223,33 +231,33 @@ msgid "Tag" msgstr "Tag" #: content_manager/blocks.py:265 content_manager/blocks.py:376 -#: content_manager/blocks.py:432 content_manager/blocks.py:446 -#: content_manager/blocks.py:563 content_manager/blocks.py:783 -#: content_manager/blocks.py:813 content_manager/blocks.py:938 +#: content_manager/blocks.py:435 content_manager/blocks.py:449 +#: content_manager/blocks.py:566 content_manager/blocks.py:789 +#: content_manager/blocks.py:819 content_manager/blocks.py:946 msgid "Heading level" msgstr "Niveau de titre" #: content_manager/blocks.py:268 content_manager/blocks.py:379 -#: content_manager/blocks.py:435 content_manager/blocks.py:449 -#: content_manager/blocks.py:567 +#: content_manager/blocks.py:438 content_manager/blocks.py:452 +#: content_manager/blocks.py:570 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:382 -#: content_manager/blocks.py:419 content_manager/blocks.py:453 -#: content_manager/blocks.py:467 content_manager/blocks.py:881 -#: content_manager/blocks.py:968 +#: content_manager/blocks.py:419 content_manager/blocks.py:456 +#: content_manager/blocks.py:470 content_manager/blocks.py:889 +#: content_manager/blocks.py:976 msgid "Content" msgstr "Contenu" #: content_manager/blocks.py:271 content_manager/blocks.py:384 -#: content_manager/blocks.py:506 content_manager/blocks.py:569 -#: content_manager/blocks.py:595 content_manager/blocks.py:843 +#: content_manager/blocks.py:509 content_manager/blocks.py:572 +#: content_manager/blocks.py:598 content_manager/blocks.py:849 msgid "Image" msgstr "Image" #: content_manager/blocks.py:273 content_manager/blocks.py:346 -#: content_manager/blocks.py:581 +#: content_manager/blocks.py:584 msgid "Image ratio" msgstr "Ratio de l’image" @@ -261,13 +269,13 @@ msgstr "Badge de la zone image" msgid "Only used if the card has an image." msgstr "Uniquement utilisé si la carte a une image." -#: content_manager/blocks.py:286 content_manager/blocks.py:654 +#: content_manager/blocks.py:286 content_manager/blocks.py:660 msgid "Link (obsolete)" msgstr "Lien (obsolète)" #: content_manager/blocks.py:290 content_manager/blocks.py:298 -#: content_manager/blocks.py:534 content_manager/blocks.py:542 -#: content_manager/blocks.py:550 +#: content_manager/blocks.py:537 content_manager/blocks.py:545 +#: content_manager/blocks.py:553 msgid "" "This field is obsolete and will be removed in the near future. Please " "replace with the Link field above." @@ -378,24 +386,24 @@ msgstr "Tuile horizontale" msgid "Accordion" msgstr "Accordéon" -#: content_manager/blocks.py:428 +#: content_manager/blocks.py:431 msgid "Message title" msgstr "Titre du message" -#: content_manager/blocks.py:429 +#: content_manager/blocks.py:432 msgid "Message text" msgstr "Texte du message" -#: content_manager/blocks.py:430 +#: content_manager/blocks.py:433 msgid "Message type" msgstr "Type de message" -#: content_manager/blocks.py:456 content_manager/blocks.py:469 -#: content_manager/blocks.py:600 +#: content_manager/blocks.py:459 content_manager/blocks.py:472 +#: content_manager/blocks.py:603 msgid "Color" msgstr "Couleur" -#: content_manager/blocks.py:487 +#: content_manager/blocks.py:490 msgid "" "Accessibility: The title should describe, in a clear and concise manner, the " "embedded content." @@ -403,133 +411,133 @@ msgstr "" "Accessibilité : Le titre doit décrire, de façon claire et concise, le " "contenu embarqué." -#: content_manager/blocks.py:490 +#: content_manager/blocks.py:493 msgid "URL of the iframe" msgstr "URL de l‘iframe" -#: content_manager/blocks.py:491 +#: content_manager/blocks.py:494 msgid "Example for Tally: https://tally.so/embed/w2jMRa" msgstr "Exemple pour Tally : https://tally.so/embed/w2jMRa" -#: content_manager/blocks.py:493 +#: content_manager/blocks.py:496 msgid "Height (in pixels)" msgstr "Hauteur (en pixels)" -#: content_manager/blocks.py:495 +#: content_manager/blocks.py:498 msgid "Parameters" msgstr "Paramètres" -#: content_manager/blocks.py:496 +#: content_manager/blocks.py:499 msgid "For example: \"allow='geolocation'\"." msgstr "Par exemple : « allow='geolocation' »." -#: content_manager/blocks.py:508 +#: content_manager/blocks.py:511 msgid "Side where the image is displayed" msgstr "Côté où afficher l’image" -#: content_manager/blocks.py:510 content_manager/constants.py:11 +#: content_manager/blocks.py:513 content_manager/constants.py:23 msgid "Left" msgstr "Gauche" -#: content_manager/blocks.py:511 content_manager/constants.py:12 +#: content_manager/blocks.py:514 content_manager/constants.py:24 msgid "Right" msgstr "Droite" -#: content_manager/blocks.py:516 +#: content_manager/blocks.py:519 msgid "Image width" msgstr "Largeur de l’image" -#: content_manager/blocks.py:524 content_manager/blocks.py:632 -#: content_manager/blocks.py:842 content_manager/blocks.py:1011 +#: content_manager/blocks.py:527 content_manager/blocks.py:638 +#: content_manager/blocks.py:848 content_manager/blocks.py:1019 msgid "Rich text" msgstr "Texte avec mise en forme" -#: content_manager/blocks.py:528 +#: content_manager/blocks.py:531 msgid "The link is shown at the bottom of the text block, with an arrow" msgstr "Le lien est affiché en bas du bloc de texte, avec une flèche" -#: content_manager/blocks.py:531 +#: content_manager/blocks.py:534 msgid "Link label (obsolete)" msgstr "Libellé du lien (obsolète)" -#: content_manager/blocks.py:539 +#: content_manager/blocks.py:542 msgid "Internal link (obsolete)" msgstr "Lien interne (obsolète)" -#: content_manager/blocks.py:547 +#: content_manager/blocks.py:550 msgid "Link URL (obsolete)" msgstr "URL du lien (obsolète)" -#: content_manager/blocks.py:571 +#: content_manager/blocks.py:574 msgid "Alternative text (textual description of the image)" msgstr "Alternative textuelle (description textuelle de l’image)" -#: content_manager/blocks.py:575 content_manager/blocks.py:688 +#: content_manager/blocks.py:578 content_manager/blocks.py:694 msgid "Witdh" msgstr "Largeur" -#: content_manager/blocks.py:586 content_manager/blocks.py:677 +#: content_manager/blocks.py:589 content_manager/blocks.py:683 msgid "Caption" msgstr "Légende" -#: content_manager/blocks.py:596 content_manager/blocks.py:848 -#: content_manager/blocks.py:1017 +#: content_manager/blocks.py:599 content_manager/blocks.py:855 +#: content_manager/blocks.py:1026 msgid "Quote" msgstr "Citation" -#: content_manager/blocks.py:597 +#: content_manager/blocks.py:600 msgid "Author name" msgstr "Nom de l’auteur" -#: content_manager/blocks.py:598 +#: content_manager/blocks.py:601 msgid "Author title" msgstr "Titre de l’auteur" -#: content_manager/blocks.py:611 +#: content_manager/blocks.py:614 msgid "Top margin" msgstr "Espacement au dessus" -#: content_manager/blocks.py:612 +#: content_manager/blocks.py:615 msgid "Bottom margin" msgstr "Espacement en dessous" -#: content_manager/blocks.py:617 +#: content_manager/blocks.py:620 msgid "Detail" msgstr "Détail" -#: content_manager/blocks.py:621 +#: content_manager/blocks.py:624 msgid "Step" msgstr "Étape" -#: content_manager/blocks.py:626 +#: content_manager/blocks.py:629 msgid "Number of steps" msgstr "Nombre d’étapes" -#: content_manager/blocks.py:627 +#: content_manager/blocks.py:630 msgid "Current step" msgstr "Étape actuelle" -#: content_manager/blocks.py:628 +#: content_manager/blocks.py:631 msgid "Steps" msgstr "Étapes" -#: content_manager/blocks.py:647 +#: content_manager/blocks.py:653 msgid "Call to action label (obsolete)" msgstr "Libellé de l’appel à action (obsolète)" -#: content_manager/blocks.py:668 +#: content_manager/blocks.py:674 msgid "Transcription content" msgstr "Contenu de la transcription" -#: content_manager/blocks.py:676 +#: content_manager/blocks.py:682 msgid "Video title" msgstr "Titre de la vidéo" -#: content_manager/blocks.py:679 +#: content_manager/blocks.py:685 msgid "Video URL" msgstr "URL de la vidéo" -#: content_manager/blocks.py:681 +#: content_manager/blocks.py:687 msgid "" "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 " @@ -540,164 +548,173 @@ msgstr "" "nocookie.com/embed/gLzXOViPX-0) Pour Youtube, cliquez sur « Intégrer la " "vidéo » puis cochez « Activer le mode de confidentialité avancé »." -#: content_manager/blocks.py:694 +#: content_manager/blocks.py:700 msgid "Video ratio" msgstr "Ratio de la vidéo" -#: content_manager/blocks.py:699 content_manager/blocks.py:845 -#: content_manager/blocks.py:1019 +#: content_manager/blocks.py:705 content_manager/blocks.py:851 +#: content_manager/blocks.py:1028 msgid "Transcription" msgstr "Transcription" -#: content_manager/blocks.py:787 content_manager/blocks.py:817 -#: content_manager/blocks.py:942 +#: content_manager/blocks.py:793 content_manager/blocks.py:823 +#: content_manager/blocks.py:950 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:789 +#: content_manager/blocks.py:795 msgid "Blog" msgstr "Blog" -#: content_manager/blocks.py:791 content_manager/blocks.py:821 +#: content_manager/blocks.py:797 content_manager/blocks.py:827 msgid "Number of entries" msgstr "Nombre d’articles" -#: content_manager/blocks.py:793 content_manager/blocks.py:823 +#: content_manager/blocks.py:799 content_manager/blocks.py:829 #: 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:794 content_manager/blocks.py:824 +#: content_manager/blocks.py:800 content_manager/blocks.py:830 #: 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:795 content_manager/blocks.py:825 +#: content_manager/blocks.py:801 content_manager/blocks.py:831 #: 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:798 content_manager/blocks.py:828 +#: content_manager/blocks.py:804 content_manager/blocks.py:834 #: 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:799 content_manager/blocks.py:829 +#: content_manager/blocks.py:805 content_manager/blocks.py:835 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:802 content_manager/blocks.py:832 +#: content_manager/blocks.py:808 content_manager/blocks.py:838 msgid "Show filters" msgstr "Afficher les filtres" -#: content_manager/blocks.py:819 +#: content_manager/blocks.py:825 msgid "Event calendar" msgstr "Agenda" -#: content_manager/blocks.py:844 content_manager/blocks.py:1018 +#: content_manager/blocks.py:850 content_manager/blocks.py:1027 msgid "Video" msgstr "Vidéo" -#: content_manager/blocks.py:846 content_manager/blocks.py:1015 -msgid "Callout" -msgstr "Mise en avant" +#: content_manager/blocks.py:852 content_manager/blocks.py:1023 +msgid "Accordions" +msgstr "Accordéons" -#: content_manager/blocks.py:846 content_manager/blocks.py:847 -#: content_manager/blocks.py:848 content_manager/blocks.py:851 -#: content_manager/blocks.py:852 content_manager/blocks.py:863 -#: content_manager/blocks.py:913 content_manager/blocks.py:953 -#: content_manager/blocks.py:954 content_manager/blocks.py:1015 -#: content_manager/blocks.py:1016 content_manager/blocks.py:1017 -#: content_manager/blocks.py:1023 content_manager/blocks.py:1024 -#: content_manager/blocks.py:1025 content_manager/blocks.py:1026 -#: content_manager/blocks.py:1027 +#: content_manager/blocks.py:852 content_manager/blocks.py:853 +#: content_manager/blocks.py:854 content_manager/blocks.py:855 +#: content_manager/blocks.py:856 content_manager/blocks.py:859 +#: content_manager/blocks.py:860 content_manager/blocks.py:871 +#: content_manager/blocks.py:921 content_manager/blocks.py:961 +#: content_manager/blocks.py:962 content_manager/blocks.py:1023 +#: content_manager/blocks.py:1024 content_manager/blocks.py:1025 +#: content_manager/blocks.py:1026 content_manager/blocks.py:1032 +#: content_manager/blocks.py:1033 content_manager/blocks.py:1034 +#: content_manager/blocks.py:1035 msgid "DSFR components" msgstr "Composants du DSFR" -#: content_manager/blocks.py:847 content_manager/blocks.py:1016 +#: content_manager/blocks.py:853 content_manager/blocks.py:1024 +msgid "Callout" +msgstr "Mise en avant" + +#: content_manager/blocks.py:854 content_manager/blocks.py:1025 msgid "Highlight" msgstr "Mise en exergue" -#: content_manager/blocks.py:849 +#: content_manager/blocks.py:856 content_manager/blocks.py:1032 +msgid "Stepper" +msgstr "Étapier" + +#: content_manager/blocks.py:857 msgid "Text and call to action" msgstr "Texte et appel à action" -#: content_manager/blocks.py:850 content_manager/blocks.py:1022 +#: content_manager/blocks.py:858 content_manager/blocks.py:1031 msgid "Single link" msgstr "Lien isolé" -#: content_manager/blocks.py:851 content_manager/blocks.py:1029 +#: content_manager/blocks.py:859 content_manager/blocks.py:1037 msgid "Iframe" msgstr "Iframe" -#: content_manager/blocks.py:852 content_manager/blocks.py:1024 +#: content_manager/blocks.py:860 content_manager/blocks.py:1034 msgid "Tile" msgstr "Tuile" -#: content_manager/blocks.py:853 content_manager/blocks.py:1051 +#: content_manager/blocks.py:861 content_manager/blocks.py:1059 msgid "Blog recent entries" msgstr "Articles récents du blog" -#: content_manager/blocks.py:853 content_manager/blocks.py:855 -#: content_manager/blocks.py:1046 content_manager/blocks.py:1051 -#: content_manager/blocks.py:1055 +#: content_manager/blocks.py:861 content_manager/blocks.py:863 +#: content_manager/blocks.py:1054 content_manager/blocks.py:1059 +#: content_manager/blocks.py:1063 msgid "Website structure" msgstr "Structure du site" -#: content_manager/blocks.py:855 content_manager/blocks.py:1055 +#: content_manager/blocks.py:863 content_manager/blocks.py:1063 msgid "Event calendar recent entries" msgstr "Articles récents de l’agenda" -#: content_manager/blocks.py:863 content_manager/blocks.py:913 +#: content_manager/blocks.py:871 content_manager/blocks.py:921 msgid "Vertical card" msgstr "Carte verticale" -#: content_manager/blocks.py:868 content_manager/blocks.py:893 +#: content_manager/blocks.py:876 content_manager/blocks.py:901 msgid "Column width" msgstr "Largeur de colonne" -#: content_manager/blocks.py:872 +#: content_manager/blocks.py:880 msgid "Items" msgstr "Éléments" -#: content_manager/blocks.py:885 +#: content_manager/blocks.py:893 msgid "Tab" msgstr "Onglet" -#: content_manager/blocks.py:903 +#: content_manager/blocks.py:911 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:906 +#: content_manager/blocks.py:914 msgid "Column content" msgstr "Contenu de la colonnne" -#: content_manager/blocks.py:914 +#: content_manager/blocks.py:922 msgid "Adjustable column" msgstr "Colonne ajustable" -#: content_manager/blocks.py:914 content_manager/blocks.py:955 -#: content_manager/blocks.py:1030 content_manager/blocks.py:1031 -#: content_manager/blocks.py:1032 content_manager/blocks.py:1033 -#: content_manager/blocks.py:1037 +#: content_manager/blocks.py:922 content_manager/blocks.py:963 +#: content_manager/blocks.py:1038 content_manager/blocks.py:1039 +#: content_manager/blocks.py:1040 content_manager/blocks.py:1041 +#: content_manager/blocks.py:1045 msgid "Page structure" msgstr "Structure de la page" -#: content_manager/blocks.py:921 content_manager/blocks.py:962 -#: content_manager/blocks.py:995 +#: content_manager/blocks.py:929 content_manager/blocks.py:970 +#: content_manager/blocks.py:1003 msgid "Background image" msgstr "Image de fond" -#: content_manager/blocks.py:928 +#: content_manager/blocks.py:936 msgid "Background color, hexadecimal format (obsolete)" msgstr "Couleur de fond, format hexadécimal (obsolète)" -#: content_manager/blocks.py:931 +#: content_manager/blocks.py:939 msgid "" "This field is obsolete and will be removed in the near future. Replace it " "with the background color." @@ -705,35 +722,35 @@ msgstr "" "Ce champ est obsolète et sera prochainement supprimé. Merci de le remplacer " "avec la couleur de fond." -#: content_manager/blocks.py:933 +#: content_manager/blocks.py:941 msgid "Incorrect color format, must be #fff or #f5f5f5" msgstr "Format de couleur incorrect, doit être #fff ou #f5f5f5" -#: content_manager/blocks.py:944 +#: content_manager/blocks.py:952 msgid "Columns" msgstr "Colonnes" -#: content_manager/blocks.py:952 content_manager/blocks.py:1013 +#: content_manager/blocks.py:960 content_manager/blocks.py:1021 msgid "Image and text" msgstr "Image et texte" -#: content_manager/blocks.py:953 content_manager/blocks.py:1023 +#: content_manager/blocks.py:961 content_manager/blocks.py:1033 msgid "Horizontal card" msgstr "Carte horizontale" -#: content_manager/blocks.py:954 content_manager/blocks.py:1026 +#: content_manager/blocks.py:962 content_manager/blocks.py:1035 msgid "Tabs" msgstr "Onglets" -#: content_manager/blocks.py:955 content_manager/blocks.py:1032 +#: content_manager/blocks.py:963 content_manager/blocks.py:1040 msgid "Item grid" msgstr "Grille d’éléments" -#: content_manager/blocks.py:976 +#: content_manager/blocks.py:984 msgid "Parent page" msgstr "Page parente" -#: content_manager/blocks.py:986 content_manager/blocks.py:1068 +#: content_manager/blocks.py:994 content_manager/blocks.py:1076 msgid "" "Warning: Use HTML block with caution. Malicious code can compromise the " "security of the site." @@ -741,156 +758,148 @@ msgstr "" "Avertissement : Utilisez le bloc HTML avec précaution. Un code malveillant " "peut compromettre la sécurité du site." -#: content_manager/blocks.py:988 +#: content_manager/blocks.py:996 msgid "Page tree" msgstr "Arborescence de pages" -#: content_manager/blocks.py:1001 +#: content_manager/blocks.py:1009 msgid "Main content" msgstr "Contenu principal" -#: content_manager/blocks.py:1002 +#: content_manager/blocks.py:1010 msgid "Side menu title" msgstr "Titre du menu latéral" -#: content_manager/blocks.py:1003 +#: content_manager/blocks.py:1011 msgid "Side menu content" msgstr "Contenu du menu latéral" -#: content_manager/blocks.py:1014 +#: content_manager/blocks.py:1022 msgid "Alert message" msgstr "Message d’alerte" -#: content_manager/blocks.py:1020 +#: content_manager/blocks.py:1029 msgid "Badge list" msgstr "Liste de badges" -#: content_manager/blocks.py:1021 +#: content_manager/blocks.py:1030 msgid "Tag list" msgstr "Liste de tags" -#: content_manager/blocks.py:1025 -msgid "Accordions" -msgstr "Accordéons" - -#: content_manager/blocks.py:1027 -msgid "Stepper" -msgstr "Étapier" - -#: content_manager/blocks.py:1028 +#: content_manager/blocks.py:1036 msgid "Markdown" msgstr "Markdown" -#: content_manager/blocks.py:1028 content_manager/blocks.py:1029 -#: content_manager/blocks.py:1070 +#: content_manager/blocks.py:1036 content_manager/blocks.py:1037 +#: content_manager/blocks.py:1078 msgid "Expert syntax" msgstr "Syntaxe experte" -#: content_manager/blocks.py:1030 +#: content_manager/blocks.py:1038 msgid "Separator" msgstr "Séparateur" -#: content_manager/blocks.py:1031 +#: content_manager/blocks.py:1039 msgid "Multiple columns" msgstr "Multi-colonnes" -#: content_manager/blocks.py:1033 +#: content_manager/blocks.py:1041 msgid "Full width background" msgstr "Fond pleine largeur" -#: content_manager/blocks.py:1037 +#: content_manager/blocks.py:1045 msgid "Full width background with side menu" msgstr "Fond pleine largeur avec menu latéral" -#: content_manager/blocks.py:1043 +#: content_manager/blocks.py:1051 msgid "Subpages list" msgstr "Liste des sous-pages" -#: content_manager/blocks.py:1044 +#: content_manager/blocks.py:1052 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." -#: content_manager/constants.py:4 +#: content_manager/constants.py:16 msgid "Primary" msgstr "Primaire" -#: content_manager/constants.py:5 +#: content_manager/constants.py:17 msgid "Secundary" msgstr "Secondaire" -#: content_manager/constants.py:6 +#: content_manager/constants.py:18 msgid "Tertiary" msgstr "Tertiaire" -#: content_manager/constants.py:7 +#: content_manager/constants.py:19 msgid "Tertiary without border" msgstr "Tertiaire sans bordure" -#: content_manager/constants.py:22 content_manager/constants.py:31 +#: content_manager/constants.py:34 content_manager/constants.py:43 msgid "Heading 2" msgstr "En-tête 2" -#: content_manager/constants.py:23 content_manager/constants.py:32 +#: content_manager/constants.py:35 content_manager/constants.py:44 msgid "Heading 3" msgstr "En-tête 3" -#: content_manager/constants.py:24 content_manager/constants.py:33 +#: content_manager/constants.py:36 content_manager/constants.py:45 msgid "Heading 4" msgstr "En-tête 4" -#: content_manager/constants.py:25 content_manager/constants.py:34 +#: content_manager/constants.py:37 content_manager/constants.py:46 msgid "Heading 5" msgstr "En-tête 5" -#: content_manager/constants.py:26 +#: content_manager/constants.py:38 msgid "Heading 6" msgstr "En-tête 6" -#: content_manager/constants.py:27 +#: content_manager/constants.py:39 msgid "Paragraph" msgstr "Paragraphe" -#: content_manager/constants.py:43 +#: content_manager/constants.py:55 msgid "Error" msgstr "Erreur" -#: content_manager/constants.py:44 +#: content_manager/constants.py:56 msgid "Success" msgstr "Succès" -#: content_manager/constants.py:45 +#: content_manager/constants.py:57 msgid "Information" msgstr "Information" -#: content_manager/constants.py:46 +#: content_manager/constants.py:58 msgid "Warning" msgstr "Avertissement" -#: content_manager/constants.py:68 content_manager/constants.py:80 -#: content_manager/constants.py:86 +#: content_manager/constants.py:80 content_manager/constants.py:92 +#: content_manager/constants.py:98 msgid "Small" msgstr "Petit" -#: content_manager/constants.py:69 content_manager/constants.py:81 -#: content_manager/constants.py:87 +#: content_manager/constants.py:81 content_manager/constants.py:93 +#: content_manager/constants.py:99 msgid "Medium" msgstr "Medium" -#: content_manager/constants.py:70 content_manager/constants.py:82 -#: content_manager/constants.py:88 +#: content_manager/constants.py:82 content_manager/constants.py:94 +#: content_manager/constants.py:100 msgid "Large" msgstr "Large" -#: content_manager/constants.py:74 +#: content_manager/constants.py:86 msgid "No icon" msgstr "Pas d’icône" -#: content_manager/constants.py:75 +#: content_manager/constants.py:87 msgid "Icon on the right side" msgstr "Icône du côté droit" -#: content_manager/constants.py:76 +#: content_manager/constants.py:88 msgid "Icon on the left side" msgstr "Icône du côté gauche"