diff --git a/.env.example b/.env.example index aaec1a44..33beaced 100644 --- a/.env.example +++ b/.env.example @@ -26,3 +26,18 @@ S3_BUCKET_NAME= S3_BUCKET_REGION=eu-west-3 # S3_LOCATION: If the S3 bucket is shared, add a unique folder name S3_LOCATION= + +# (optional) Email settings +DEFAULT_FROM_EMAIL= +EMAIL_HOST= +EMAIL_PORT= +EMAIL_HOST_USER= +EMAIL_HOST_PASSWORD= +EMAIL_USE_TLS= +EMAIL_USE_SSL= +EMAIL_TIMEOUT=30 +EMAIL_SSL_KEYFILE= +EMAIL_SSL_CERTFILE= +WAGTAIL_PASSWORD_RESET_ENABLED=False +# WAGTAIL_PASSWORD_RESET_ENABLED: set to true to be able to send the email +# from the DEFAULT_FROM_EMAIL through the defined SMTP parameters diff --git a/blog/locale/fr/LC_MESSAGES/django.mo b/blog/locale/fr/LC_MESSAGES/django.mo index 658e1d45..ff0b1516 100644 Binary files a/blog/locale/fr/LC_MESSAGES/django.mo and b/blog/locale/fr/LC_MESSAGES/django.mo differ diff --git a/blog/locale/fr/LC_MESSAGES/django.po b/blog/locale/fr/LC_MESSAGES/django.po index 32a04c73..d565a42d 100644 --- a/blog/locale/fr/LC_MESSAGES/django.po +++ b/blog/locale/fr/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:08+0200\n" -"PO-Revision-Date: 2024-06-04 15:17+0200\n" +"POT-Creation-Date: 2024-06-24 12:44+0200\n" +"PO-Revision-Date: 2024-06-24 12:44+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -18,19 +18,19 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 3.4.2\n" -#: blog/blocks.py:9 blog/models.py:290 +#: blog/blocks.py:9 blog/models.py:289 msgid "Name" msgstr "Nom" -#: blog/blocks.py:10 blog/models.py:291 +#: blog/blocks.py:10 blog/models.py:290 msgid "Role" msgstr "Fonction" -#: blog/blocks.py:11 blog/models.py:292 +#: blog/blocks.py:11 blog/models.py:291 msgid "Organization" msgstr "Organisation" -#: blog/blocks.py:12 blog/models.py:293 +#: blog/blocks.py:12 blog/models.py:292 msgid "Contact info" msgstr "Informations de contact" @@ -42,81 +42,81 @@ msgstr "Texte riche" msgid "Contact card" msgstr "Carte contact" -#: blog/models.py:36 +#: blog/models.py:35 msgid "Posts per page" msgstr "Articles par page" -#: blog/models.py:46 +#: blog/models.py:45 msgid "Blog index" msgstr "Index de blog" -#: blog/models.py:74 blog/templates/blog/tags_list_page.html:20 +#: blog/models.py:73 blog/templates/blog/tags_list_page.html:20 #: blog/views.py:149 msgid "Tags" msgstr "Étiquettes" -#: blog/models.py:97 blog/models.py:170 blog/models.py:265 +#: blog/models.py:96 blog/models.py:169 blog/models.py:264 #: blog/templates/blog/categories_list_page.html:20 blog/views.py:117 msgid "Categories" msgstr "Catégories" -#: blog/models.py:109 blog/templates/blog/blog_index_page.html:59 +#: blog/models.py:108 blog/templates/blog/blog_index_page.html:59 msgid "Posts written by" msgstr "Articles écrits par" -#: blog/models.py:172 +#: blog/models.py:171 msgid "Post date" msgstr "Date de publication" -#: blog/models.py:174 +#: blog/models.py:173 msgid "Author entries can be created in Snippets > Persons" msgstr "Les auteurs peuvent être créés via Fragments > Personnes" -#: blog/models.py:193 +#: blog/models.py:192 msgid "Scheduled publishing" msgstr "Publication planifiée" -#: blog/models.py:201 +#: blog/models.py:200 msgid "Tags and Categories" msgstr "Étiquettes et Catégories" -#: blog/models.py:209 +#: blog/models.py:208 msgid "Blog page" msgstr "Page de blog" -#: blog/models.py:214 +#: blog/models.py:213 msgid "Category name" msgstr "Nom de la catégorie" -#: blog/models.py:221 +#: blog/models.py:220 msgid "Parent category" msgstr "Catégorie parente" -#: blog/models.py:227 +#: blog/models.py:226 msgid "Description" msgstr "Description" -#: blog/models.py:228 +#: blog/models.py:227 msgid "Displayed on the top of the category page" msgstr "Affiché en haut de la page de la catégorie" -#: blog/models.py:234 +#: blog/models.py:233 msgid "Text displayed at the end of every page in the category" msgstr "Texte affiché à la fin de chaque page de la catégorie" -#: blog/models.py:245 +#: blog/models.py:244 msgid "Parent category cannot be self." msgstr "La catégorie ne peut être sa propre parente." -#: blog/models.py:247 +#: blog/models.py:246 msgid "Cannot have circular Parents." msgstr "Il est impossible d’avoir des parents circulaires." -#: blog/models.py:264 blog/models.py:276 +#: blog/models.py:263 blog/models.py:275 msgid "Category" msgstr "Catégorie" -#: blog/models.py:310 +#: blog/models.py:309 msgid "Person" msgstr "Personne" diff --git a/config/settings.py b/config/settings.py index 92f0deba..3a6f9515 100644 --- a/config/settings.py +++ b/config/settings.py @@ -143,7 +143,6 @@ def show_toolbar(request): WSGI_APPLICATION = "config.wsgi.application" - # Database # https://docs.djangoproject.com/en/4.1/ref/settings/#databases @@ -177,9 +176,6 @@ def show_toolbar(request): }, ] -WAGTAIL_PASSWORD_RESET_ENABLED = os.getenv("WAGTAIL_PASSWORD_RESET_ENABLED", False) - - # Internationalization # https://docs.djangoproject.com/en/3.2/topics/i18n/ @@ -310,6 +306,24 @@ def show_toolbar(request): WAGTAILIMAGES_EXTENSIONS = ["gif", "jpg", "jpeg", "png", "webp", "svg"] +# Email settings +DEFAULT_FROM_EMAIL = os.getenv("DEFAULT_FROM_EMAIL", "") + +if DEFAULT_FROM_EMAIL: + EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" + EMAIL_HOST = os.getenv("EMAIL_HOST", None) + EMAIL_PORT = os.getenv("EMAIL_PORT", None) + EMAIL_HOST_USER = os.getenv("EMAIL_HOST_USER", None) + EMAIL_HOST_PASSWORD = os.getenv("EMAIL_HOST_PASSWORD", None) + EMAIL_USE_TLS = os.getenv("EMAIL_USE_TLS", None) + EMAIL_USE_SSL = os.getenv("EMAIL_USE_SSL", None) + EMAIL_TIMEOUT = int(os.getenv("EMAIL_TIMEOUT", 30)) + EMAIL_SSL_KEYFILE = os.getenv("EMAIL_SSL_KEYFILE", None) + EMAIL_SSL_CERTFILE = os.getenv("EMAIL_SSL_CERTFILE", None) + +WAGTAIL_PASSWORD_RESET_ENABLED = os.getenv("WAGTAIL_PASSWORD_RESET_ENABLED", False) + +# CSRF CSRF_TRUSTED_ORIGINS = [] for host in ALLOWED_HOSTS: CSRF_TRUSTED_ORIGINS.append("https://" + host) diff --git a/content_manager/locale/fr/LC_MESSAGES/django.mo b/content_manager/locale/fr/LC_MESSAGES/django.mo index 035ce734..0043cc12 100644 Binary files a/content_manager/locale/fr/LC_MESSAGES/django.mo and b/content_manager/locale/fr/LC_MESSAGES/django.mo differ diff --git a/content_manager/locale/fr/LC_MESSAGES/django.po b/content_manager/locale/fr/LC_MESSAGES/django.po index 7b21ae91..0c79cbcf 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-06-17 17:45+0200\n" -"PO-Revision-Date: 2024-06-17 17:46+0200\n" +"POT-Creation-Date: 2024-06-24 12:44+0200\n" +"PO-Revision-Date: 2024-06-24 12:45+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:37 content_manager/blocks.py:721 -#: content_manager/blocks.py:760 +#: content_manager/abstract.py:37 content_manager/blocks.py:720 +#: content_manager/blocks.py:759 msgid "Background color" msgstr "Couleur de fond" -#: content_manager/abstract.py:41 content_manager/blocks.py:723 -#: content_manager/blocks.py:762 +#: content_manager/abstract.py:41 content_manager/blocks.py:722 +#: content_manager/blocks.py:761 msgid "Uses the French Design System colors" msgstr "Utilise les couleurs du système de design de l'État" @@ -48,7 +48,7 @@ msgstr "Assombrir l’image de fond" msgid "Call to action text" msgstr "Texte de l’appel à action" -#: content_manager/abstract.py:54 content_manager/blocks.py:616 +#: content_manager/abstract.py:54 content_manager/blocks.py:615 msgid "Call to action label" msgstr "Libellé de l’appel à action" @@ -76,11 +76,11 @@ msgstr "Page de base" msgid "Base pages" msgstr "Pages de base" -#: content_manager/blocks.py:53 +#: content_manager/blocks.py:52 msgid "Page" msgstr "Page" -#: content_manager/blocks.py:55 +#: content_manager/blocks.py:54 msgid "" "Link to a page of this site. Use either this, the document, or the external " "URL parameter." @@ -88,157 +88,157 @@ msgstr "" "Lien vers une page du site. Utilisez soit ce champ, soit le champ document, " "soit le champ URL externe." -#: content_manager/blocks.py:58 +#: content_manager/blocks.py:57 msgid "Document" msgstr "Document" -#: content_manager/blocks.py:59 +#: content_manager/blocks.py:58 msgid "Use either this, the external URL or the page parameter." msgstr "Utilisez soit ce champ, soit le champ URL externe, soit le champ Page." -#: content_manager/blocks.py:63 +#: content_manager/blocks.py:62 msgid "External URL" msgstr "URL externe" -#: content_manager/blocks.py:65 +#: content_manager/blocks.py:64 msgid "Use either this, the document or the page parameter." msgstr "Utilisez soit ce champ, soit le champ Document, soit le champ Page." -#: content_manager/blocks.py:74 +#: content_manager/blocks.py:73 msgid "Link label" msgstr "Libellé du lien" -#: content_manager/blocks.py:82 content_manager/blocks.py:271 -#: content_manager/blocks.py:368 content_manager/blocks.py:508 -#: content_manager/blocks.py:569 content_manager/blocks.py:620 +#: content_manager/blocks.py:81 content_manager/blocks.py:270 +#: content_manager/blocks.py:367 content_manager/blocks.py:507 +#: content_manager/blocks.py:568 content_manager/blocks.py:619 msgid "Link" msgstr "Lien" -#: content_manager/blocks.py:90 +#: content_manager/blocks.py:89 msgid "Button type" msgstr "Type de bouton" -#: content_manager/blocks.py:98 content_manager/blocks.py:106 -#: content_manager/blocks.py:436 +#: content_manager/blocks.py:97 content_manager/blocks.py:105 +#: content_manager/blocks.py:435 msgid "Button" msgstr "Bouton" -#: content_manager/blocks.py:136 content_manager/blocks.py:189 -#: content_manager/blocks.py:433 +#: content_manager/blocks.py:135 content_manager/blocks.py:188 +#: content_manager/blocks.py:432 msgid "Icon" msgstr "Icône" -#: content_manager/blocks.py:137 +#: content_manager/blocks.py:136 msgid "Only used for internal links." msgstr "Uniquement pour les liens internes." -#: content_manager/blocks.py:143 content_manager/blocks.py:456 +#: content_manager/blocks.py:142 content_manager/blocks.py:455 msgid "Size" msgstr "Taille" -#: content_manager/blocks.py:157 +#: content_manager/blocks.py:156 msgid "New" msgstr "Nouveau" -#: content_manager/blocks.py:157 +#: content_manager/blocks.py:156 msgid "Grey" msgstr "Gris" -#: content_manager/blocks.py:158 +#: content_manager/blocks.py:157 msgid "System colors" msgstr "Couleurs système" -#: content_manager/blocks.py:159 +#: content_manager/blocks.py:158 msgid "Illustration colors" msgstr "Couleurs illustratives" -#: content_manager/blocks.py:164 +#: content_manager/blocks.py:163 msgid "Badge label" msgstr "Texte du badge" -#: content_manager/blocks.py:165 +#: content_manager/blocks.py:164 msgid "Badge color" msgstr "Couleur du badge" -#: content_manager/blocks.py:166 +#: content_manager/blocks.py:165 msgid "Hide badge icon" msgstr "Masquer l’icône du badge" -#: content_manager/blocks.py:173 +#: content_manager/blocks.py:172 msgid "Badge" msgstr "Badge" -#: content_manager/blocks.py:181 content_manager/blocks.py:252 -#: content_manager/blocks.py:358 content_manager/blocks.py:400 -#: content_manager/blocks.py:405 content_manager/blocks.py:426 -#: content_manager/blocks.py:468 content_manager/blocks.py:543 -#: content_manager/blocks.py:598 content_manager/blocks.py:607 -#: content_manager/blocks.py:628 content_manager/blocks.py:734 +#: content_manager/blocks.py:180 content_manager/blocks.py:251 +#: content_manager/blocks.py:357 content_manager/blocks.py:399 +#: content_manager/blocks.py:404 content_manager/blocks.py:425 +#: content_manager/blocks.py:467 content_manager/blocks.py:542 +#: content_manager/blocks.py:597 content_manager/blocks.py:606 +#: content_manager/blocks.py:627 content_manager/blocks.py:733 #: content_manager/models.py:275 msgid "Title" msgstr "Titre" -#: content_manager/blocks.py:182 +#: content_manager/blocks.py:181 msgid "Small tag" msgstr "Petit tag" -#: content_manager/blocks.py:184 +#: content_manager/blocks.py:183 msgid "Tag color" msgstr "Couleur du tag" -#: content_manager/blocks.py:187 +#: content_manager/blocks.py:186 msgid "Only for clickable tags" msgstr "Uniquement pour les tags cliquables" -#: content_manager/blocks.py:197 +#: content_manager/blocks.py:196 msgctxt "DSFR Tag" msgid "Tag" msgstr "Tag" -#: content_manager/blocks.py:254 content_manager/blocks.py:360 -#: content_manager/blocks.py:414 content_manager/blocks.py:428 -#: content_manager/blocks.py:545 content_manager/blocks.py:736 +#: content_manager/blocks.py:253 content_manager/blocks.py:359 +#: content_manager/blocks.py:413 content_manager/blocks.py:427 +#: content_manager/blocks.py:544 content_manager/blocks.py:735 msgid "Heading level" msgstr "Niveau de titre" -#: content_manager/blocks.py:257 content_manager/blocks.py:363 -#: content_manager/blocks.py:417 content_manager/blocks.py:431 -#: content_manager/blocks.py:549 +#: content_manager/blocks.py:256 content_manager/blocks.py:362 +#: content_manager/blocks.py:416 content_manager/blocks.py:430 +#: content_manager/blocks.py:548 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:259 content_manager/blocks.py:365 -#: content_manager/blocks.py:401 content_manager/blocks.py:435 -#: content_manager/blocks.py:449 content_manager/blocks.py:764 +#: content_manager/blocks.py:258 content_manager/blocks.py:364 +#: content_manager/blocks.py:400 content_manager/blocks.py:434 +#: content_manager/blocks.py:448 content_manager/blocks.py:763 msgid "Content" msgstr "Contenu" -#: content_manager/blocks.py:260 content_manager/blocks.py:366 -#: content_manager/blocks.py:488 content_manager/blocks.py:551 -#: content_manager/blocks.py:577 content_manager/blocks.py:670 +#: content_manager/blocks.py:259 content_manager/blocks.py:365 +#: content_manager/blocks.py:487 content_manager/blocks.py:550 +#: content_manager/blocks.py:576 content_manager/blocks.py:669 msgid "Image" msgstr "Image" -#: content_manager/blocks.py:262 content_manager/blocks.py:330 -#: content_manager/blocks.py:563 +#: content_manager/blocks.py:261 content_manager/blocks.py:329 +#: content_manager/blocks.py:562 msgid "Image ratio" msgstr "Ratio de l’image" -#: content_manager/blocks.py:268 +#: content_manager/blocks.py:267 msgid "Image area badge" msgstr "Badge de la zone image" -#: content_manager/blocks.py:268 +#: content_manager/blocks.py:267 msgid "Only used if the card has an image." msgstr "Uniquement utilisé si la carte a une image." -#: content_manager/blocks.py:275 +#: content_manager/blocks.py:274 msgid "Link (obsolete)" msgstr "Lien (obsolète)" -#: content_manager/blocks.py:279 content_manager/blocks.py:287 -#: content_manager/blocks.py:516 content_manager/blocks.py:524 -#: content_manager/blocks.py:532 +#: content_manager/blocks.py:278 content_manager/blocks.py:286 +#: content_manager/blocks.py:515 content_manager/blocks.py:523 +#: content_manager/blocks.py:531 msgid "" "This field is obsolete and will be removed in the near future. Please " "replace with the Link field above." @@ -246,59 +246,59 @@ msgstr "" "Ce champ est obsolète et sera prochainement supprimé. Merci de le remplacer " "avec le champ Lien ci-dessus." -#: content_manager/blocks.py:283 +#: content_manager/blocks.py:282 msgid "or Document (obsolete)" msgstr "ou Document (obsolète)" -#: content_manager/blocks.py:290 +#: content_manager/blocks.py:289 msgid "Top detail: text" msgstr "Détail du haut : texte" -#: content_manager/blocks.py:291 +#: content_manager/blocks.py:290 msgid "Top detail: icon" msgstr "Détail du haut : icône" -#: content_manager/blocks.py:297 content_manager/blocks.py:376 +#: content_manager/blocks.py:296 content_manager/blocks.py:375 msgid "Top detail: badges or tags" msgstr "Détail du haut : badges ou tags" -#: content_manager/blocks.py:302 content_manager/blocks.py:336 +#: content_manager/blocks.py:301 content_manager/blocks.py:335 msgid "Bottom detail: text" msgstr "Détail du bas : texte" -#: content_manager/blocks.py:303 +#: content_manager/blocks.py:302 msgid "Incompatible with the bottom call-to-action." msgstr "Incompatible avec l’appel à action en bas de carte." -#: content_manager/blocks.py:306 +#: content_manager/blocks.py:305 msgid "Bottom detail: icon" msgstr "Détail du bas : icône" -#: content_manager/blocks.py:312 +#: content_manager/blocks.py:311 msgid "Bottom call-to-action: links or buttons" msgstr "Appel à action en bas de la carte" -#: content_manager/blocks.py:313 +#: content_manager/blocks.py:312 msgid "Incompatible with the bottom detail text." msgstr "Incompatible avec le détail du bas." -#: content_manager/blocks.py:317 +#: content_manager/blocks.py:316 msgid "Card with grey background" msgstr "Carte avec arrière-plan gris" -#: content_manager/blocks.py:318 +#: content_manager/blocks.py:317 msgid "Card without background" msgstr "Carte sans arrière-plan" -#: content_manager/blocks.py:319 +#: content_manager/blocks.py:318 msgid "Card without border" msgstr "Carte sans bordure" -#: content_manager/blocks.py:320 +#: content_manager/blocks.py:319 msgid "Card with a shadow" msgstr "Carte avec une ombre" -#: content_manager/blocks.py:338 +#: content_manager/blocks.py:337 msgid "" "Incompatible with the bottom call-to-action. If the card links to a " "downloadable document, the values are pre-filled." @@ -306,67 +306,67 @@ msgstr "" "Incompatible avec l’appel à action en bas de carte. Si la carte pointe vers " "un document téléchargeable, les valeurs sont pré-remplies." -#: content_manager/blocks.py:366 +#: content_manager/blocks.py:365 msgid "Prefer SVG files." msgstr "Privilégier les fichiers SVG." -#: content_manager/blocks.py:381 +#: content_manager/blocks.py:380 msgid "Detail text" msgstr "Texte de détail" -#: content_manager/blocks.py:383 +#: content_manager/blocks.py:382 msgid "" "If the tile links to a downloadable document, the values are pre-filled." msgstr "" "Si la tuile pointe vers un document téléchargeable, les valeurs sont pré-" "remplies." -#: content_manager/blocks.py:385 +#: content_manager/blocks.py:384 msgid "Small tile" msgstr "Petite tuile" -#: content_manager/blocks.py:386 +#: content_manager/blocks.py:385 msgid "Tile with grey background" msgstr "Tuile avec arrière-plan gris" -#: content_manager/blocks.py:387 +#: content_manager/blocks.py:386 msgid "Tile without background" msgstr "Tuile sans arrière-plan" -#: content_manager/blocks.py:388 +#: content_manager/blocks.py:387 msgid "Tile without border" msgstr "Tuile sans bordure" -#: content_manager/blocks.py:389 +#: content_manager/blocks.py:388 msgid "Tile with a shadow" msgstr "Tuile avec une ombre" -#: content_manager/blocks.py:390 +#: content_manager/blocks.py:389 msgid "Horizontal tile" msgstr "Tuile horizontale" -#: content_manager/blocks.py:406 +#: content_manager/blocks.py:405 msgid "Accordion" msgstr "Accordéon" -#: content_manager/blocks.py:410 +#: content_manager/blocks.py:409 msgid "Message title" msgstr "Titre du message" -#: content_manager/blocks.py:411 +#: content_manager/blocks.py:410 msgid "Message text" msgstr "Texte du message" -#: content_manager/blocks.py:412 +#: content_manager/blocks.py:411 msgid "Message type" msgstr "Type de message" -#: content_manager/blocks.py:438 content_manager/blocks.py:451 -#: content_manager/blocks.py:582 +#: content_manager/blocks.py:437 content_manager/blocks.py:450 +#: content_manager/blocks.py:581 msgid "Color" msgstr "Couleur" -#: content_manager/blocks.py:469 +#: content_manager/blocks.py:468 msgid "" "Accessibility: The title should describe, in a clear and concise manner, the " "embedded content." @@ -374,133 +374,133 @@ msgstr "" "Accessibilité : Le titre doit décrire, de façon claire et concise, le " "contenu embarqué." -#: content_manager/blocks.py:472 +#: content_manager/blocks.py:471 msgid "URL of the iframe" msgstr "URL de l‘iframe" -#: content_manager/blocks.py:473 +#: content_manager/blocks.py:472 msgid "Example for Tally: https://tally.so/embed/w2jMRa" msgstr "Exemple pour Tally : https://tally.so/embed/w2jMRa" -#: content_manager/blocks.py:475 +#: content_manager/blocks.py:474 msgid "Height (in pixels)" msgstr "Hauteur (en pixels)" -#: content_manager/blocks.py:477 +#: content_manager/blocks.py:476 msgid "Parameters" msgstr "Paramètres" -#: content_manager/blocks.py:478 +#: content_manager/blocks.py:477 msgid "For example: \"allow='geolocation'\"." msgstr "Par exemple : « allow='geolocation' »." -#: content_manager/blocks.py:490 +#: content_manager/blocks.py:489 msgid "Side where the image is displayed" msgstr "Côté où afficher l’image" -#: content_manager/blocks.py:492 +#: content_manager/blocks.py:491 msgid "Left" msgstr "Gauche" -#: content_manager/blocks.py:493 +#: content_manager/blocks.py:492 msgid "Right" msgstr "Droite" -#: content_manager/blocks.py:498 +#: content_manager/blocks.py:497 msgid "Image width" msgstr "Largeur de l’image" -#: content_manager/blocks.py:506 content_manager/blocks.py:614 -#: content_manager/blocks.py:669 content_manager/blocks.py:772 +#: content_manager/blocks.py:505 content_manager/blocks.py:613 +#: content_manager/blocks.py:668 content_manager/blocks.py:771 msgid "Rich text" msgstr "Texte avec mise en forme" -#: content_manager/blocks.py:510 +#: content_manager/blocks.py:509 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:513 +#: content_manager/blocks.py:512 msgid "Link label (obsolete)" msgstr "Libellé du lien (obsolète)" -#: content_manager/blocks.py:521 +#: content_manager/blocks.py:520 msgid "Internal link (obsolete)" msgstr "Lien interne (obsolète)" -#: content_manager/blocks.py:529 +#: content_manager/blocks.py:528 msgid "Link URL (obsolete)" msgstr "URL du lien (obsolète)" -#: content_manager/blocks.py:553 +#: content_manager/blocks.py:552 msgid "Alternative text (textual description of the image)" msgstr "Alternative textuelle (description textuelle de l’image)" -#: content_manager/blocks.py:557 content_manager/blocks.py:649 +#: content_manager/blocks.py:556 content_manager/blocks.py:648 msgid "Witdh" msgstr "Largeur" -#: content_manager/blocks.py:568 content_manager/blocks.py:638 +#: content_manager/blocks.py:567 content_manager/blocks.py:637 msgid "Caption" msgstr "Légende" -#: content_manager/blocks.py:578 content_manager/blocks.py:675 -#: content_manager/blocks.py:778 +#: content_manager/blocks.py:577 content_manager/blocks.py:674 +#: content_manager/blocks.py:777 msgid "Quote" msgstr "Citation" -#: content_manager/blocks.py:579 +#: content_manager/blocks.py:578 msgid "Author name" msgstr "Nom de l’auteur" -#: content_manager/blocks.py:580 +#: content_manager/blocks.py:579 msgid "Author title" msgstr "Titre de l’auteur" -#: content_manager/blocks.py:593 +#: content_manager/blocks.py:592 msgid "Top margin" msgstr "Espacement au dessus" -#: content_manager/blocks.py:594 +#: content_manager/blocks.py:593 msgid "Bottom margin" msgstr "Espacement en dessous" -#: content_manager/blocks.py:599 +#: content_manager/blocks.py:598 msgid "Detail" msgstr "Détail" -#: content_manager/blocks.py:603 +#: content_manager/blocks.py:602 msgid "Step" msgstr "Étape" -#: content_manager/blocks.py:608 +#: content_manager/blocks.py:607 msgid "Number of steps" msgstr "Nombre d’étapes" -#: content_manager/blocks.py:609 +#: content_manager/blocks.py:608 msgid "Current step" msgstr "Étape actuelle" -#: content_manager/blocks.py:610 +#: content_manager/blocks.py:609 msgid "Steps" msgstr "Étapes" -#: content_manager/blocks.py:617 +#: content_manager/blocks.py:616 msgid "The link appears as a button under the text block" msgstr "Le lien apparaît comme un bouton sous le bloc de texte" -#: content_manager/blocks.py:629 +#: content_manager/blocks.py:628 msgid "Transcription content" msgstr "Contenu de la transcription" -#: content_manager/blocks.py:637 +#: content_manager/blocks.py:636 msgid "Video title" msgstr "Titre de la vidéo" -#: content_manager/blocks.py:640 +#: content_manager/blocks.py:639 msgid "Video URL" msgstr "URL de la vidéo" -#: content_manager/blocks.py:642 +#: content_manager/blocks.py:641 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 " @@ -511,88 +511,88 @@ 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:655 +#: content_manager/blocks.py:654 msgid "Video ratio" msgstr "Ratio de la vidéo" -#: content_manager/blocks.py:660 content_manager/blocks.py:672 -#: content_manager/blocks.py:780 +#: content_manager/blocks.py:659 content_manager/blocks.py:671 +#: content_manager/blocks.py:779 msgid "Transcription" msgstr "Transcription" -#: content_manager/blocks.py:671 content_manager/blocks.py:779 +#: content_manager/blocks.py:670 content_manager/blocks.py:778 msgid "Video" msgstr "Vidéo" -#: content_manager/blocks.py:673 content_manager/blocks.py:776 +#: content_manager/blocks.py:672 content_manager/blocks.py:775 msgid "Callout" msgstr "Mise en avant" -#: content_manager/blocks.py:673 content_manager/blocks.py:674 -#: content_manager/blocks.py:675 content_manager/blocks.py:678 -#: content_manager/blocks.py:679 content_manager/blocks.py:686 -#: content_manager/blocks.py:711 content_manager/blocks.py:751 -#: content_manager/blocks.py:776 content_manager/blocks.py:777 -#: content_manager/blocks.py:778 content_manager/blocks.py:784 -#: content_manager/blocks.py:785 content_manager/blocks.py:786 -#: content_manager/blocks.py:787 +#: content_manager/blocks.py:672 content_manager/blocks.py:673 +#: content_manager/blocks.py:674 content_manager/blocks.py:677 +#: content_manager/blocks.py:678 content_manager/blocks.py:685 +#: content_manager/blocks.py:710 content_manager/blocks.py:750 +#: content_manager/blocks.py:775 content_manager/blocks.py:776 +#: content_manager/blocks.py:777 content_manager/blocks.py:783 +#: content_manager/blocks.py:784 content_manager/blocks.py:785 +#: content_manager/blocks.py:786 msgid "DSFR components" msgstr "Composants du DSFR" -#: content_manager/blocks.py:674 content_manager/blocks.py:777 +#: content_manager/blocks.py:673 content_manager/blocks.py:776 msgid "Highlight" msgstr "Mise en exergue" -#: content_manager/blocks.py:676 +#: content_manager/blocks.py:675 msgid "Text and call to action" msgstr "Texte et appel à action" -#: content_manager/blocks.py:677 content_manager/blocks.py:783 +#: content_manager/blocks.py:676 content_manager/blocks.py:782 msgid "Single link" msgstr "Lien isolé" -#: content_manager/blocks.py:678 content_manager/blocks.py:789 +#: content_manager/blocks.py:677 content_manager/blocks.py:788 msgid "Iframe" msgstr "Iframe" -#: content_manager/blocks.py:679 content_manager/blocks.py:785 +#: content_manager/blocks.py:678 content_manager/blocks.py:784 msgid "Tile" msgstr "Tuile" -#: content_manager/blocks.py:686 content_manager/blocks.py:711 +#: content_manager/blocks.py:685 content_manager/blocks.py:710 msgid "Vertical card" msgstr "Carte verticale" -#: content_manager/blocks.py:691 +#: content_manager/blocks.py:690 msgid "Column width" msgstr "Largeur de colonne" -#: content_manager/blocks.py:701 +#: content_manager/blocks.py:700 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:704 +#: content_manager/blocks.py:703 msgid "Column content" msgstr "Contenu de la colonnne" -#: content_manager/blocks.py:712 +#: content_manager/blocks.py:711 msgid "Adjustable column" msgstr "Colonne ajustable" -#: content_manager/blocks.py:712 content_manager/blocks.py:790 -#: content_manager/blocks.py:791 content_manager/blocks.py:792 +#: content_manager/blocks.py:711 content_manager/blocks.py:789 +#: content_manager/blocks.py:790 content_manager/blocks.py:791 msgid "Page structure" msgstr "Structure de la page" -#: content_manager/blocks.py:719 content_manager/blocks.py:758 +#: content_manager/blocks.py:718 content_manager/blocks.py:757 msgid "Background image" msgstr "Image de fond" -#: content_manager/blocks.py:726 +#: content_manager/blocks.py:725 msgid "Background color, hexadecimal format (obsolete)" msgstr "Couleur de fond, format hexadécimal (obsolète)" -#: content_manager/blocks.py:729 +#: content_manager/blocks.py:728 msgid "" "This field is obsolete and will be removed in the near future. Replace it " "with the background color." @@ -600,81 +600,81 @@ msgstr "" "Ce champ est obsolète et sera prochainement supprimé. Merci de le remplacer " "avec la couleur de fond." -#: content_manager/blocks.py:731 +#: content_manager/blocks.py:730 msgid "Incorrect color format, must be #fff or #f5f5f5" msgstr "Format de couleur incorrect, doit être #fff ou #f5f5f5" -#: content_manager/blocks.py:740 +#: content_manager/blocks.py:739 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:742 +#: content_manager/blocks.py:741 msgid "Columns" msgstr "Colonnes" -#: content_manager/blocks.py:750 content_manager/blocks.py:774 +#: content_manager/blocks.py:749 content_manager/blocks.py:773 msgid "Image and text" msgstr "Image et texte" -#: content_manager/blocks.py:751 content_manager/blocks.py:784 +#: content_manager/blocks.py:750 content_manager/blocks.py:783 msgid "Horizontal card" msgstr "Carte horizontale" -#: content_manager/blocks.py:775 +#: content_manager/blocks.py:774 msgid "Alert message" msgstr "Message d’alerte" -#: content_manager/blocks.py:781 +#: content_manager/blocks.py:780 msgid "Badge list" msgstr "Liste de badges" -#: content_manager/blocks.py:782 +#: content_manager/blocks.py:781 msgid "Tag list" msgstr "Liste de tags" -#: content_manager/blocks.py:786 +#: content_manager/blocks.py:785 msgid "Accordions" msgstr "Accordéons" -#: content_manager/blocks.py:787 +#: content_manager/blocks.py:786 msgid "Stepper" msgstr "Étapier" -#: content_manager/blocks.py:788 +#: content_manager/blocks.py:787 msgid "Markdown" msgstr "Markdown" -#: content_manager/blocks.py:788 content_manager/blocks.py:789 -#: content_manager/blocks.py:815 +#: content_manager/blocks.py:787 content_manager/blocks.py:788 +#: content_manager/blocks.py:814 msgid "Expert syntax" msgstr "Syntaxe experte" -#: content_manager/blocks.py:790 +#: content_manager/blocks.py:789 msgid "Separator" msgstr "Séparateur" -#: content_manager/blocks.py:791 +#: content_manager/blocks.py:790 msgid "Multiple columns" msgstr "Multi-colonnes" -#: content_manager/blocks.py:792 +#: content_manager/blocks.py:791 msgid "Full width background" msgstr "Fond pleine largeur" -#: content_manager/blocks.py:796 +#: content_manager/blocks.py:795 msgid "Subpages list" msgstr "Liste des sous-pages" -#: content_manager/blocks.py:797 +#: content_manager/blocks.py:796 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/blocks.py:799 +#: content_manager/blocks.py:798 msgid "Website structure" msgstr "Structure du site" -#: content_manager/blocks.py:813 +#: content_manager/blocks.py:812 msgid "" "Warning: Use HTML block with caution. Malicious code can compromise the " "security of the site." @@ -682,86 +682,86 @@ msgstr "" "Avertissement : Utilisez le bloc HTML avec précaution. Un code malveillant " "peut compromettre la sécurité du site." -#: content_manager/constants.py:5 +#: content_manager/constants.py:4 msgid "Primary" msgstr "Primaire" -#: content_manager/constants.py:6 +#: content_manager/constants.py:5 msgid "Secundary" msgstr "Secondaire" -#: content_manager/constants.py:7 +#: content_manager/constants.py:6 msgid "Tertiary" msgstr "Tertiaire" -#: content_manager/constants.py:8 +#: content_manager/constants.py:7 msgid "Tertiary without border" msgstr "Tertiaire sans bordure" -#: content_manager/constants.py:12 +#: content_manager/constants.py:11 msgid "Heading 2" msgstr "En-tête 2" -#: content_manager/constants.py:13 +#: content_manager/constants.py:12 msgid "Heading 3" msgstr "En-tête 3" -#: content_manager/constants.py:14 +#: content_manager/constants.py:13 msgid "Heading 4" msgstr "En-tête 4" -#: content_manager/constants.py:15 +#: content_manager/constants.py:14 msgid "Heading 5" msgstr "En-tête 5" -#: content_manager/constants.py:16 +#: content_manager/constants.py:15 msgid "Heading 6" msgstr "En-tête 6" -#: content_manager/constants.py:17 +#: content_manager/constants.py:16 msgid "Paragraph" msgstr "Paragraphe" -#: content_manager/constants.py:27 +#: content_manager/constants.py:26 msgid "Error" msgstr "Erreur" -#: content_manager/constants.py:28 +#: content_manager/constants.py:27 msgid "Success" msgstr "Succès" -#: content_manager/constants.py:29 +#: content_manager/constants.py:28 msgid "Information" msgstr "Information" -#: content_manager/constants.py:30 +#: content_manager/constants.py:29 msgid "Warning" msgstr "Avertissement" -#: content_manager/constants.py:44 content_manager/constants.py:56 -#: content_manager/constants.py:62 +#: content_manager/constants.py:43 content_manager/constants.py:55 +#: content_manager/constants.py:61 msgid "Small" msgstr "Petit" -#: content_manager/constants.py:45 content_manager/constants.py:57 -#: content_manager/constants.py:63 +#: content_manager/constants.py:44 content_manager/constants.py:56 +#: content_manager/constants.py:62 msgid "Medium" msgstr "Medium" -#: content_manager/constants.py:46 content_manager/constants.py:58 -#: content_manager/constants.py:64 +#: content_manager/constants.py:45 content_manager/constants.py:57 +#: content_manager/constants.py:63 msgid "Large" msgstr "Large" -#: content_manager/constants.py:50 +#: content_manager/constants.py:49 msgid "No icon" msgstr "Pas d’icône" -#: content_manager/constants.py:51 +#: content_manager/constants.py:50 msgid "Icon on the right side" msgstr "Icône du côté droit" -#: content_manager/constants.py:52 +#: content_manager/constants.py:51 msgid "Icon on the left side" msgstr "Icône du côté gauche" @@ -970,7 +970,7 @@ msgstr "Voir sur le site" msgid "Tags" msgstr "Étiquettes" -#: content_manager/urls.py:9 +#: content_manager/urls.py:8 msgid "search/" msgstr "recherche/" diff --git a/dashboard/locale/fr/LC_MESSAGES/django.mo b/dashboard/locale/fr/LC_MESSAGES/django.mo index 75e1aa54..49c3ebde 100644 Binary files a/dashboard/locale/fr/LC_MESSAGES/django.mo and b/dashboard/locale/fr/LC_MESSAGES/django.mo differ diff --git a/dashboard/locale/fr/LC_MESSAGES/django.po b/dashboard/locale/fr/LC_MESSAGES/django.po index 570138db..0f49e2e3 100644 --- a/dashboard/locale/fr/LC_MESSAGES/django.po +++ b/dashboard/locale/fr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:08+0200\n" -"PO-Revision-Date: 2024-06-04 15:18+0200\n" +"POT-Creation-Date: 2024-06-24 15:24+0200\n" +"PO-Revision-Date: 2024-06-24 15:26+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -19,6 +19,105 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 3.4.2\n" +#: dashboard/templates/wagtailadmin/account/password_reset/complete.html:5 +msgid "Password change successful" +msgstr "Mot de passe changé avec succès" + +#: dashboard/templates/wagtailadmin/account/password_reset/complete.html:6 +msgid "Log in" +msgstr "Connexion" + +#: dashboard/templates/wagtailadmin/account/password_reset/confirm.html:11 +msgid "Set your new password" +msgstr "Définissez votre nouveau mot de passe" + +#: dashboard/templates/wagtailadmin/account/password_reset/confirm.html:20 +#: dashboard/templates/wagtailadmin/account/password_reset/form.html:18 +msgid "Reset password" +msgstr "Réinitialiser le mot de passe" + +#: dashboard/templates/wagtailadmin/account/password_reset/confirm.html:28 +msgid "Invalid password reset link" +msgstr "Lien de réinitialisation de mot de passe invalide" + +#: dashboard/templates/wagtailadmin/account/password_reset/confirm.html:30 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used." +msgstr "" +"Le lien de réinitialisation de mot de passe était invalide, probablement " +"parce qu’il a déjà été utilisé." + +#: dashboard/templates/wagtailadmin/account/password_reset/confirm.html:34 +msgid "Request a new password reset" +msgstr "Demander une nouvelle réinitialisation de mot de passe" + +#: dashboard/templates/wagtailadmin/account/password_reset/done.html:5 +msgid "Check your email" +msgstr "Consultez vos e-mails" + +#: dashboard/templates/wagtailadmin/account/password_reset/done.html:7 +msgid "" +"A link to reset your password has been emailed to you if an account exists " +"for this address." +msgstr "" +"Un lien pour réinitialiser votre mot de passe vous a été envoyé par e-mail " +"si un compte existe pour cette adresse." + +#: dashboard/templates/wagtailadmin/account/password_reset/form.html:10 +msgid "Reset your password" +msgstr "Réinitialisez votre mot de passe" + #: dashboard/templates/wagtailadmin/login.html:10 msgid "Connection" msgstr "Connexion" + +#: dashboard/templates/wagtailadmin/login.html:17 +msgid "Log in with your account" +msgstr "Se connecter avec son compte" + +#: dashboard/templates/wagtailadmin/login.html:20 +msgid "Unless otherwise stated, all fields are mandatory." +msgstr "Sauf mention contraire, tous les champs sont obligatoires." + +#: dashboard/templates/wagtailadmin/login.html:26 +msgid "Error: Your username and password do not match, please try again." +msgstr "" +"Erreur : Votre identifiant et mot de passe ne correspondent pas, merci de " +"réessayer." + +#: dashboard/templates/wagtailadmin/login.html:33 +msgid "" +"Error: Your account does not have access to this page. To continue, please " +"log in with an authorized account." +msgstr "" +"Erreur : Votre compte n’a pas accès à cette page. Pour continuer, merci de " +"vous connecter avec un compte autorisé." + +#: dashboard/templates/wagtailadmin/login.html:46 +msgid "Username:" +msgstr "Identifiant :" + +#: dashboard/templates/wagtailadmin/login.html:52 +msgid "Password:" +msgstr "Mot de passe :" + +#: dashboard/templates/wagtailadmin/login.html:55 +msgid "Show password" +msgstr "Afficher le mot de passe" + +#: dashboard/templates/wagtailadmin/login.html:60 +msgid "Show" +msgstr "Afficher" + +#: dashboard/templates/wagtailadmin/login.html:66 +msgid "Forgotten password?" +msgstr "Mot de passe oublié ?" + +#: dashboard/templates/wagtailadmin/login.html:74 +msgid "Remember me" +msgstr "Se souvenir de moi" + +#: dashboard/templates/wagtailadmin/login.html:81 +msgid "Connect" +msgstr "Se connecter" diff --git a/dashboard/templates/wagtailadmin/account/password_reset/complete.html b/dashboard/templates/wagtailadmin/account/password_reset/complete.html new file mode 100644 index 00000000..12f0dc41 --- /dev/null +++ b/dashboard/templates/wagtailadmin/account/password_reset/complete.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% load widget_tweaks wagtailadmin_tags i18n static dsfr_tags %} +{% block content %} +
+

{% translate "Password change successful" %}

+ {% translate "Log in" %} +
+{% endblock content %} diff --git a/dashboard/templates/wagtailadmin/account/password_reset/confirm.html b/dashboard/templates/wagtailadmin/account/password_reset/confirm.html new file mode 100644 index 00000000..fb5c3fa3 --- /dev/null +++ b/dashboard/templates/wagtailadmin/account/password_reset/confirm.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} +{% load widget_tweaks wagtailadmin_tags i18n static dsfr_tags %} +{% block content %} +
+ {% if validlink %} +
+
+
+
+
+

{% translate "Set your new password" %}

+ + {% include "wagtailadmin/shared/non_field_errors.html" %} + +
+ {% csrf_token %} + + {% dsfr_form %} + + +
+
+
+
+
+
+ {% else %} +

{% translate "Invalid password reset link" %}

+ + +
+ {% translate "Request a new password reset" %} +
+ {% endif %} +
+{% endblock content %} diff --git a/dashboard/templates/wagtailadmin/account/password_reset/done.html b/dashboard/templates/wagtailadmin/account/password_reset/done.html new file mode 100644 index 00000000..a9ddb603 --- /dev/null +++ b/dashboard/templates/wagtailadmin/account/password_reset/done.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} +{% load widget_tweaks wagtailadmin_tags i18n static dsfr_tags %} +{% block content %} +
+

{% translate "Check your email" %}

+ +
+{% endblock content %} diff --git a/dashboard/templates/wagtailadmin/account/password_reset/form.html b/dashboard/templates/wagtailadmin/account/password_reset/form.html new file mode 100644 index 00000000..fb4a5072 --- /dev/null +++ b/dashboard/templates/wagtailadmin/account/password_reset/form.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} +{% load widget_tweaks wagtailadmin_tags i18n static dsfr_tags %} +{% block content %} +
+
+
+
+
+
+

{% translate "Reset your password" %}

+ {% include "wagtailadmin/shared/non_field_errors.html" %} + +
+ {% csrf_token %} + + {% dsfr_form %} + + +
+
+
+
+
+
+
+{% endblock content %} diff --git a/dashboard/templates/wagtailadmin/login.html b/dashboard/templates/wagtailadmin/login.html index 822d70fc..5f62b15d 100644 --- a/dashboard/templates/wagtailadmin/login.html +++ b/dashboard/templates/wagtailadmin/login.html @@ -1,98 +1,99 @@ {% extends "base.html" %} {% load widget_tweaks i18n static dsfr_tags %} {% block content %} -
-
-
-
-
-
-

{% translate "Connection" %}

-
-
-
- -

Se connecter avec son compte

-
-
-

Sauf mention contraire, tous les champs sont obligatoires.

-
- {% if form.errors %} -
-

Erreur : Votre identifiant et mot de passe ne correspondent pas, merci de réessayer.

-
- {% endif %} - {% if next %} - {% if user.is_authenticated %} -
-

- Erreur : Votre compte n’a pas accès à cette page. Pour continuer, merci de vous connecter - avec un compte autorisé. -

-
- {% endif %} - {% endif %} - {% dsfr_django_messages %} -
-
-
- {% csrf_token %} - {% url 'wagtailadmin_home' as home_url %} - -
- - {{ form.username |add_class:"fr-input" }} -
-
-
-
- - {{ form.password |add_class:"fr-password__input fr-input" }} -
- - -
-
- {% if show_password_reset %} - Mot de passe oublié ? - {% endif %} -
-
-
-
-
- {{ form.remember }} - -
-
-
-
-
    -
  • - -
  • -
-
-
-
+
+
+
+
+
+
+

{% translate "Connection" %}

+
+
+
+ +

{% translate "Log in with your account" %}

+
+
+

{% translate "Unless otherwise stated, all fields are mandatory." %}

+
+ {% if form.errors %} +
+

{% translate "Error: Your username and password do not match, please try again." %}

+
+ {% endif %} + {% if next %} + {% if user.is_authenticated %} +
+

+ {% translate "Error: Your account does not have access to this page. To continue, please log in with an authorized account." %} +

+ {% endif %} + {% endif %} + {% dsfr_django_messages %} +
+
+
+ {% csrf_token %} + {% url 'wagtailadmin_home' as home_url %} + +
+ + {{ form.username |add_class:"fr-input" }} +
+
+
+
+ + {{ form.password |add_class:"fr-password__input fr-input" }} +
+ {% translate "Show password" as show_password %} + + +
+ {% if show_password_reset %} + {% translate "Forgotten password?" %} + {% endif %} +
+
+
+
+
+ {{ form.remember }} + +
+
+
+
+
    +
  • + {% translate "Connect" as connect_label %} + +
  • +
-
+ + +
+
+
+
{% endblock content %} {% block extra_css %} - + {% endblock extra_css %}