From 9430b8b0c8b132aab605234b2079af5addef3988 Mon Sep 17 00:00:00 2001 From: Jean-Marie Favreau Date: Fri, 14 Mar 2025 18:39:19 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d'une=20interface=20d'=C3=A9dition=20du?= =?UTF-8?q?=20profil=20de=20l'utilisateur=20courant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agenda_culturel/forms.py | 10 + .../locale/fr/LC_MESSAGES/django.po | 772 +++++++++--------- .../templates/agenda_culturel/side-nav.html | 1 + .../agenda_culturel/userprofile_form.html | 22 + src/agenda_culturel/urls.py | 2 + src/agenda_culturel/views.py | 16 + 6 files changed, 449 insertions(+), 374 deletions(-) create mode 100644 src/agenda_culturel/templates/agenda_culturel/userprofile_form.html diff --git a/src/agenda_culturel/forms.py b/src/agenda_culturel/forms.py index 19e7915..93d2607 100644 --- a/src/agenda_culturel/forms.py +++ b/src/agenda_culturel/forms.py @@ -35,6 +35,7 @@ from .models import ( Place, RecurrentImport, Tag, + UserProfile, ) from .templatetags.event_extra import event_field_verbose_name, field_to_html from .templatetags.utils_extra import int_to_abc @@ -971,3 +972,12 @@ class MessageEventForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["message"].label = _("Add a comment") + + +class UserProfileForm(ModelForm): + + user = CharField(widget=HiddenInput()) + + class Meta: + model = UserProfile + fields = "__all__" diff --git a/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po b/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po index d171e1d..8085322 100644 --- a/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po +++ b/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: agenda_culturel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-03-14 14:08+0100\n" +"POT-Creation-Date: 2025-03-14 18:36+0100\n" "PO-Revision-Date: 2023-10-29 14:16+0000\n" "Last-Translator: Jean-Marie Favreau \n" "Language-Team: Jean-Marie Favreau \n" @@ -142,12 +142,12 @@ msgstr "dernier créé d'abord" msgid "Imported from" msgstr "Importé depuis" -#: agenda_culturel/filters.py:470 agenda_culturel/models.py:727 -#: agenda_culturel/models.py:2693 +#: agenda_culturel/filters.py:470 agenda_culturel/models.py:760 +#: agenda_culturel/models.py:2726 msgid "Status" msgstr "Status" -#: agenda_culturel/filters.py:471 agenda_culturel/models.py:2459 +#: agenda_culturel/filters.py:471 agenda_culturel/models.py:2492 msgid "Closed" msgstr "Fermé" @@ -156,7 +156,7 @@ msgid "Open" msgstr "Ouvert" #: agenda_culturel/filters.py:475 agenda_culturel/filters.py:476 -#: agenda_culturel/models.py:2453 +#: agenda_culturel/models.py:2486 msgid "Spam" msgstr "Spam" @@ -164,7 +164,7 @@ msgstr "Spam" msgid "Non spam" msgstr "Non spam" -#: agenda_culturel/filters.py:481 agenda_culturel/models.py:2474 +#: agenda_culturel/filters.py:481 agenda_culturel/models.py:2507 msgid "Type" msgstr "Type" @@ -176,115 +176,66 @@ msgstr "Rechercher" msgid "In the past" msgstr "Dans le passé" -#: agenda_culturel/forms.py:98 +#: agenda_culturel/forms.py:99 msgid "Other" msgstr "Autres" -#: agenda_culturel/forms.py:141 +#: agenda_culturel/forms.py:142 msgid "Name of new tag" msgstr "Nom de la nouvelle étiquette" -#: agenda_culturel/forms.py:145 +#: agenda_culturel/forms.py:146 msgid "" "Force renaming despite the existence of events already using the chosen tag." msgstr "" "Forcer le renommage malgré l'existence d'événements utilisant déjà " "l'étiquette choisie." -#: agenda_culturel/forms.py:164 +#: agenda_culturel/forms.py:165 msgid "Your email" msgstr "Votre adresse email" -#: agenda_culturel/forms.py:165 agenda_culturel/models.py:2441 +#: agenda_culturel/forms.py:166 agenda_culturel/models.py:2474 msgid "Your email address" msgstr "Votre adresse email" -#: agenda_culturel/forms.py:171 agenda_culturel/models.py:2466 +#: agenda_culturel/forms.py:172 agenda_culturel/models.py:2499 msgid "Comments" msgstr "Commentaires" -#: agenda_culturel/forms.py:173 +#: agenda_culturel/forms.py:174 msgid "" "Your message for the moderation team (comments, clarifications, requests...)" msgstr "" "Votre message pour l'équipe de modération (commentaires, précisions, " "demandes, ...)" -#: agenda_culturel/forms.py:188 +#: agenda_culturel/forms.py:189 msgid "Receive notification of publication or leave a message for moderation" msgstr "Être notifié de la publication ou laisser un message à la modération" -#: agenda_culturel/forms.py:205 agenda_culturel/models.py:179 -#: agenda_culturel/models.py:735 agenda_culturel/models.py:2617 -#: agenda_culturel/models.py:2728 +#: agenda_culturel/forms.py:206 agenda_culturel/models.py:212 +#: agenda_culturel/models.py:768 agenda_culturel/models.py:2650 +#: agenda_culturel/models.py:2761 msgid "Category" msgstr "Catégorie" -#: agenda_culturel/forms.py:211 agenda_culturel/forms.py:244 -#: agenda_culturel/forms.py:272 agenda_culturel/forms.py:443 -#: agenda_culturel/models.py:232 agenda_culturel/models.py:852 +#: agenda_culturel/forms.py:212 agenda_culturel/forms.py:245 +#: agenda_culturel/forms.py:288 agenda_culturel/forms.py:467 +#: agenda_culturel/models.py:265 agenda_culturel/models.py:885 msgid "Tags" msgstr "Étiquettes" -#: agenda_culturel/forms.py:219 agenda_culturel/forms.py:603 -#: agenda_culturel/models.py:953 +#: agenda_culturel/forms.py:220 agenda_culturel/forms.py:630 +#: agenda_culturel/models.py:986 msgid "Event" msgstr "Événement" -#: agenda_culturel/forms.py:326 -msgid "Main fields" -msgstr "Champs principaux" - -#: agenda_culturel/forms.py:329 -msgid "Start of event" -msgstr "Début de l'événement" - -#: agenda_culturel/forms.py:333 -msgid "End of event" -msgstr "Fin de l'événement" - -#: agenda_culturel/forms.py:339 -msgid "This is a recurring event" -msgstr "Cet événement est récurrent" - -#: agenda_culturel/forms.py:351 -msgid "Details" -msgstr "Détails" - -#: agenda_culturel/forms.py:356 agenda_culturel/models.py:764 -#: agenda_culturel/models.py:2592 -msgid "Location" -msgstr "Localisation" - -#: agenda_culturel/forms.py:361 agenda_culturel/models.py:808 -msgid "Illustration" -msgstr "Illustration" - -#: agenda_culturel/forms.py:365 -msgid "URLs" -msgstr "URLs" - -#: agenda_culturel/forms.py:369 agenda_culturel/forms.py:374 -msgid "Meta information" -msgstr "Méta-informations" - -#: agenda_culturel/forms.py:389 -msgid "The end date must be after the start date." -msgstr "La date de fin doit être après la date de début." - -#: agenda_culturel/forms.py:405 -msgid "The end time cannot be earlier than the start time." -msgstr "L'heure de fin ne peut pas être avant l'heure de début." - -#: agenda_culturel/forms.py:444 -msgid "Select tags from existing ones." -msgstr "Sélectionner des étiquettes depuis celles existantes." - -#: agenda_culturel/forms.py:449 +#: agenda_culturel/forms.py:274 agenda_culturel/forms.py:473 msgid "New tags" msgstr "Nouvelles étiquettes" -#: agenda_culturel/forms.py:451 +#: agenda_culturel/forms.py:276 agenda_culturel/forms.py:475 msgid "" "Create new labels (sparingly). Note: by starting your tag with the " "characters “TW:”, youll create a “trigger warning” tag, and the associated " @@ -295,92 +246,141 @@ msgstr "" "étiquette “trigger warning”, et les événements associés seront annoncés " "comme tels." -#: agenda_culturel/forms.py:500 +#: agenda_culturel/forms.py:345 +msgid "Main fields" +msgstr "Champs principaux" + +#: agenda_culturel/forms.py:348 +msgid "Start of event" +msgstr "Début de l'événement" + +#: agenda_culturel/forms.py:352 +msgid "End of event" +msgstr "Fin de l'événement" + +#: agenda_culturel/forms.py:358 +msgid "This is a recurring event" +msgstr "Cet événement est récurrent" + +#: agenda_culturel/forms.py:370 +msgid "Details" +msgstr "Détails" + +#: agenda_culturel/forms.py:375 agenda_culturel/models.py:797 +#: agenda_culturel/models.py:2625 +msgid "Location" +msgstr "Localisation" + +#: agenda_culturel/forms.py:380 agenda_culturel/models.py:841 +msgid "Illustration" +msgstr "Illustration" + +#: agenda_culturel/forms.py:384 +msgid "URLs" +msgstr "URLs" + +#: agenda_culturel/forms.py:388 agenda_culturel/forms.py:395 +msgid "Meta information" +msgstr "Méta-informations" + +#: agenda_culturel/forms.py:412 +msgid "The end date must be after the start date." +msgstr "La date de fin doit être après la date de début." + +#: agenda_culturel/forms.py:428 +msgid "The end time cannot be earlier than the start time." +msgstr "L'heure de fin ne peut pas être avant l'heure de début." + +#: agenda_culturel/forms.py:468 +msgid "Select tags from existing ones." +msgstr "Sélectionner des étiquettes depuis celles existantes." + +#: agenda_culturel/forms.py:527 msgid "JSON in the format expected for the import." msgstr "JSON dans le format attendu pour l'import" -#: agenda_culturel/forms.py:522 +#: agenda_culturel/forms.py:549 msgid " (locally modified version)" msgstr " (version modifiée localement)" -#: agenda_culturel/forms.py:526 +#: agenda_culturel/forms.py:553 msgid " (synchronized on import version)" msgstr " (version synchronisée sur l'import)" -#: agenda_culturel/forms.py:530 +#: agenda_culturel/forms.py:557 msgid "Select {} as representative version." msgstr "Sélectionner {} comme version représentative" -#: agenda_culturel/forms.py:540 +#: agenda_culturel/forms.py:567 msgid "Update {} using some fields from other versions (interactive mode)." msgstr "" "Mettre à jour {} en utilisant quelques champs des autres versions (mode " "interactif)." -#: agenda_culturel/forms.py:547 +#: agenda_culturel/forms.py:574 msgid " Warning: a version is already locally modified." msgstr " Attention: une version a déjà été modifiée localement." -#: agenda_culturel/forms.py:554 +#: agenda_culturel/forms.py:581 msgid "Create a new version by merging (interactive mode)." msgstr "Créer une nouvelle version par fusion (mode interactif)." -#: agenda_culturel/forms.py:562 +#: agenda_culturel/forms.py:589 msgid "Make {} independent." msgstr "Rendre {} indépendant." -#: agenda_culturel/forms.py:565 +#: agenda_culturel/forms.py:592 msgid "Make all versions independent." msgstr "Rendre toutes les versions indépendantes." -#: agenda_culturel/forms.py:637 agenda_culturel/forms.py:650 +#: agenda_culturel/forms.py:664 agenda_culturel/forms.py:677 msgid "Value of version {}" msgstr "Valeur de la version {}" -#: agenda_culturel/forms.py:642 +#: agenda_culturel/forms.py:669 msgid "Value of the selected version" msgstr "Valeur de la version sélectionnée" -#: agenda_culturel/forms.py:812 +#: agenda_culturel/forms.py:839 msgid "Apply category {} to the event {}" msgstr "Appliquer la catégorie {} à l'événement {}" -#: agenda_culturel/forms.py:829 agenda_culturel/models.py:563 -#: agenda_culturel/models.py:2780 +#: agenda_culturel/forms.py:856 agenda_culturel/models.py:596 +#: agenda_culturel/models.py:2813 msgid "Place" msgstr "Lieu" -#: agenda_culturel/forms.py:831 +#: agenda_culturel/forms.py:858 msgid "Create a missing place" msgstr "Créer un lieu manquant" -#: agenda_culturel/forms.py:841 +#: agenda_culturel/forms.py:868 msgid "Add \"{}\" to the aliases of the place" msgstr "Ajouter « {} » aux alias du lieu" -#: agenda_culturel/forms.py:870 +#: agenda_culturel/forms.py:897 msgid "On saving, use aliases to detect all matching events with missing place" msgstr "" "Lors de l'enregistrement, utiliser des alias pour détecter tous les " "événements correspondants dont la place est manquante." -#: agenda_culturel/forms.py:883 +#: agenda_culturel/forms.py:910 msgid "Header" msgstr "Entête" -#: agenda_culturel/forms.py:886 agenda_culturel/models.py:525 +#: agenda_culturel/forms.py:913 agenda_culturel/models.py:558 msgid "Address" msgstr "Adresse" -#: agenda_culturel/forms.py:892 +#: agenda_culturel/forms.py:919 msgid "Meta" msgstr "Méta" -#: agenda_culturel/forms.py:895 +#: agenda_culturel/forms.py:922 msgid "Information" msgstr "Informations" -#: agenda_culturel/forms.py:947 +#: agenda_culturel/forms.py:974 msgid "Add a comment" msgstr "Ajouter un commentaire" @@ -413,94 +413,114 @@ msgstr "" "la page n'était pas encore peuplée des événements, le temps de chargement a " "sans doute été trop court" -#: agenda_culturel/models.py:62 agenda_culturel/models.py:109 -#: agenda_culturel/models.py:188 agenda_culturel/models.py:482 -#: agenda_culturel/models.py:523 agenda_culturel/models.py:629 -#: agenda_culturel/models.py:2433 agenda_culturel/models.py:2542 +#: agenda_culturel/models.py:63 +msgid "Expert moderation user" +msgstr "Utilisateur expert en modération" + +#: agenda_culturel/models.py:65 +msgid "" +"This user is an expert in moderation, and the interface features additional " +"functionalities." +msgstr "" +"Cet utilisateur est un expert en modération, et l'interface comporte des " +"fonctionnalités additionnelles." + +#: agenda_culturel/models.py:71 agenda_culturel/models.py:75 +msgid "User profile" +msgstr "" + +#: agenda_culturel/models.py:72 +msgid "User profiles" +msgstr "" + +#: agenda_culturel/models.py:95 agenda_culturel/models.py:142 +#: agenda_culturel/models.py:221 agenda_culturel/models.py:515 +#: agenda_culturel/models.py:556 agenda_culturel/models.py:662 +#: agenda_culturel/models.py:2466 agenda_culturel/models.py:2575 msgid "Name" msgstr "Nom" -#: agenda_culturel/models.py:63 agenda_culturel/models.py:109 +#: agenda_culturel/models.py:96 agenda_culturel/models.py:142 msgid "Category name" msgstr "Nom de la catégorie" -#: agenda_culturel/models.py:68 +#: agenda_culturel/models.py:101 msgid "Content" msgstr "Contenu" -#: agenda_culturel/models.py:69 +#: agenda_culturel/models.py:102 msgid "Text as shown to the visitors" msgstr "Texte tel que présenté aux visiteureuses" -#: agenda_culturel/models.py:73 +#: agenda_culturel/models.py:106 msgid "URL path" msgstr "Chemin URL" -#: agenda_culturel/models.py:74 +#: agenda_culturel/models.py:107 msgid "URL path where the content is included." msgstr "Chemin URL où le contenu est présent." -#: agenda_culturel/models.py:78 +#: agenda_culturel/models.py:111 msgid "Static content" msgstr "Contenu statique" -#: agenda_culturel/models.py:79 +#: agenda_culturel/models.py:112 msgid "Static contents" msgstr "Contenus statiques" -#: agenda_culturel/models.py:115 +#: agenda_culturel/models.py:148 msgid "Color" msgstr "Couleur" -#: agenda_culturel/models.py:116 +#: agenda_culturel/models.py:149 msgid "Color used as background for the category" msgstr "Couleur utilisée comme fond de la catégorie" -#: agenda_culturel/models.py:122 +#: agenda_culturel/models.py:155 msgid "Pictogram" msgstr "Pictogramme" -#: agenda_culturel/models.py:123 +#: agenda_culturel/models.py:156 msgid "Pictogram of the category (svg format)" msgstr "Pictogramme de la catégorie (format svg)" -#: agenda_culturel/models.py:130 +#: agenda_culturel/models.py:163 msgid "Position for ordering categories" msgstr "Position pour ordonner les catégories" -#: agenda_culturel/models.py:180 +#: agenda_culturel/models.py:213 msgid "Categories" msgstr "Catégories" -#: agenda_culturel/models.py:189 +#: agenda_culturel/models.py:222 msgid "Tag name" msgstr "Nom de l'étiquette" -#: agenda_culturel/models.py:195 agenda_culturel/models.py:546 -#: agenda_culturel/models.py:645 agenda_culturel/models.py:791 +#: agenda_culturel/models.py:228 agenda_culturel/models.py:579 +#: agenda_culturel/models.py:678 agenda_culturel/models.py:824 msgid "Description" msgstr "Description" -#: agenda_culturel/models.py:196 +#: agenda_culturel/models.py:229 msgid "Description of the tag" msgstr "Description de l'étiquette" -#: agenda_culturel/models.py:202 agenda_culturel/models.py:2400 -#: agenda_culturel/models.py:2447 +#: agenda_culturel/models.py:235 agenda_culturel/models.py:2433 +#: agenda_culturel/models.py:2480 msgid "Message" msgstr "Message" -#: agenda_culturel/models.py:204 +#: agenda_culturel/models.py:237 msgid "Message displayed to the user on each event associated with this tag." msgstr "" "Message affiché à l'utilisateur sur chaque événement associé à cette " "étiquette." -#: agenda_culturel/models.py:211 +#: agenda_culturel/models.py:244 msgid "Principal" msgstr "Principal" -#: agenda_culturel/models.py:213 +#: agenda_culturel/models.py:246 msgid "" "This tag is highlighted as a main tag for visitors, particularly in the " "filter." @@ -508,91 +528,91 @@ msgstr "" "Cette étiquette est mise en avant comme étiquette principale pour les " "visiteurs, en particulier dans le filtre." -#: agenda_culturel/models.py:219 +#: agenda_culturel/models.py:252 msgid "In excluded suggestions" msgstr "Dans les suggestions d'exclusion" -#: agenda_culturel/models.py:220 +#: agenda_culturel/models.py:253 msgid "This tag will be part of the excluded suggestions." msgstr "Cette étiquette fera partie des suggestions d'exclusion." -#: agenda_culturel/models.py:225 +#: agenda_culturel/models.py:258 msgid "In included suggestions" msgstr "Dans les suggestions d'inclusion." -#: agenda_culturel/models.py:226 +#: agenda_culturel/models.py:259 msgid "This tag will be part of the included suggestions." msgstr "Cette étiquette fera partie des suggestions d'inclusion." -#: agenda_culturel/models.py:231 +#: agenda_culturel/models.py:264 msgid "Tag" msgstr "Étiquette" -#: agenda_culturel/models.py:320 +#: agenda_culturel/models.py:353 msgid "Suggestions" msgstr "Suggestions" -#: agenda_culturel/models.py:321 +#: agenda_culturel/models.py:354 msgid "Others" msgstr "Autres" -#: agenda_culturel/models.py:334 +#: agenda_culturel/models.py:367 msgid "Representative event" msgstr "Événement représentatif" -#: agenda_culturel/models.py:336 +#: agenda_culturel/models.py:369 msgid "This event is the representative event of the duplicated events group" msgstr "" "Cet événement est l'événement représentatif du groupe d'événements dupliqués." -#: agenda_culturel/models.py:344 agenda_culturel/models.py:345 +#: agenda_culturel/models.py:377 agenda_culturel/models.py:378 msgid "Duplicated events" msgstr "Événements dupliqués" -#: agenda_culturel/models.py:483 +#: agenda_culturel/models.py:516 msgid "Name of the location" msgstr "Nom de la position" -#: agenda_culturel/models.py:494 +#: agenda_culturel/models.py:527 msgid "Main" msgstr "Principale" -#: agenda_culturel/models.py:496 +#: agenda_culturel/models.py:529 msgid "This location is one of the main locations (shown first higher values)." msgstr "" "Cette position est une position principale (affichage en premier des plus " "grandes valeurs)." -#: agenda_culturel/models.py:501 +#: agenda_culturel/models.py:534 msgid "Suggested distance (km)" msgstr "" -#: agenda_culturel/models.py:503 +#: agenda_culturel/models.py:536 msgid "" "If this distance is given, this location is part of the suggested filters." msgstr "" -#: agenda_culturel/models.py:512 +#: agenda_culturel/models.py:545 msgid "Reference location" msgstr "Position de référence" -#: agenda_culturel/models.py:513 +#: agenda_culturel/models.py:546 msgid "Reference locations" msgstr "Positions de référence" -#: agenda_culturel/models.py:523 +#: agenda_culturel/models.py:556 msgid "Name of the place" msgstr "Nom du lieu" -#: agenda_culturel/models.py:526 +#: agenda_culturel/models.py:559 msgid "Address of this place (without city name)" msgstr "Adresse de ce lieu (sans le nom de la ville)" -#: agenda_culturel/models.py:531 +#: agenda_culturel/models.py:564 msgid "Postcode" msgstr "Code postal" -#: agenda_culturel/models.py:533 +#: agenda_culturel/models.py:566 msgid "" "The post code is not displayed, but makes it easier to find an address when " "you enter it." @@ -600,23 +620,23 @@ msgstr "" "Le code postal ne sera pas affiché, mais facilite la recherche d'adresse au " "moment de la saisie." -#: agenda_culturel/models.py:538 +#: agenda_culturel/models.py:571 msgid "City" msgstr "Ville" -#: agenda_culturel/models.py:538 +#: agenda_culturel/models.py:571 msgid "City name" msgstr "Nom de la ville" -#: agenda_culturel/models.py:547 +#: agenda_culturel/models.py:580 msgid "Description of the place, including accessibility." msgstr "Description du lieu, inclus l'accessibilité." -#: agenda_culturel/models.py:554 +#: agenda_culturel/models.py:587 msgid "Alternative names" msgstr "Noms alternatifs" -#: agenda_culturel/models.py:556 +#: agenda_culturel/models.py:589 msgid "" "Alternative names or addresses used to match a place with the free-form " "location of an event." @@ -624,31 +644,31 @@ msgstr "" "Noms et adresses alternatives qui seront utilisées pour associer une adresse " "avec la localisation en forme libre d'un événement" -#: agenda_culturel/models.py:564 +#: agenda_culturel/models.py:597 msgid "Places" msgstr "Lieux" -#: agenda_culturel/models.py:630 +#: agenda_culturel/models.py:663 msgid "Organisation name" msgstr "Nom de l'organisme" -#: agenda_culturel/models.py:637 +#: agenda_culturel/models.py:670 msgid "Website" msgstr "Site internet" -#: agenda_culturel/models.py:638 +#: agenda_culturel/models.py:671 msgid "Website of the organisation" msgstr "Site internet de l'organisme" -#: agenda_culturel/models.py:646 +#: agenda_culturel/models.py:679 msgid "Description of the organisation." msgstr "Description de l'organisme" -#: agenda_culturel/models.py:653 +#: agenda_culturel/models.py:686 msgid "Principal place" msgstr "Lieu principal" -#: agenda_culturel/models.py:655 +#: agenda_culturel/models.py:688 msgid "" "Place mainly associated with this organizer. Mainly used if there is a " "similarity in the name, to avoid redundant displays." @@ -656,71 +676,71 @@ msgstr "" "Lieu principalement associé à cet organisateur. Principalement utilisé s'il " "y a une similarité de nom, pour éviter les affichages redondants." -#: agenda_culturel/models.py:663 +#: agenda_culturel/models.py:696 msgid "Organisation" msgstr "Organisme" -#: agenda_culturel/models.py:664 +#: agenda_culturel/models.py:697 msgid "Organisations" msgstr "Organismes" -#: agenda_culturel/models.py:675 agenda_culturel/models.py:2587 +#: agenda_culturel/models.py:708 agenda_culturel/models.py:2620 msgid "Published" msgstr "Publié" -#: agenda_culturel/models.py:676 +#: agenda_culturel/models.py:709 msgid "Draft" msgstr "Brouillon" -#: agenda_culturel/models.py:677 +#: agenda_culturel/models.py:710 msgid "Trash" msgstr "Corbeille" -#: agenda_culturel/models.py:686 +#: agenda_culturel/models.py:719 msgid "Author of the event creation" msgstr "Auteur de la création de l'événement" -#: agenda_culturel/models.py:695 +#: agenda_culturel/models.py:728 msgid "Author of the last importation" msgstr "Auteur de la dernière importation" -#: agenda_culturel/models.py:704 +#: agenda_culturel/models.py:737 msgid "Author of the last modification" msgstr "Auteur de la dernière modification" -#: agenda_culturel/models.py:713 +#: agenda_culturel/models.py:746 msgid "Author of the last moderation" msgstr "Auteur de la dernière modération" -#: agenda_culturel/models.py:724 +#: agenda_culturel/models.py:757 msgid "Title" msgstr "Titre" -#: agenda_culturel/models.py:741 +#: agenda_culturel/models.py:774 msgid "Start day" msgstr "Date de début" -#: agenda_culturel/models.py:743 +#: agenda_culturel/models.py:776 msgid "Start time" msgstr "Heure de début" -#: agenda_culturel/models.py:749 +#: agenda_culturel/models.py:782 msgid "End day" msgstr "Date de fin" -#: agenda_culturel/models.py:753 +#: agenda_culturel/models.py:786 msgid "End time" msgstr "Heure de fin" -#: agenda_culturel/models.py:756 +#: agenda_culturel/models.py:789 msgid "Recurrence" msgstr "Récurrence" -#: agenda_culturel/models.py:770 +#: agenda_culturel/models.py:803 msgid "Location (free form)" msgstr "Localisation (forme libre)" -#: agenda_culturel/models.py:772 +#: agenda_culturel/models.py:805 msgid "" "Address of the event in case its not available in the already known places " "(free form)" @@ -728,11 +748,11 @@ msgstr "" "Adresse d'un événement si elle n'est pas déjà présente dans la liste des " "lieux disponibles (forme libre)" -#: agenda_culturel/models.py:781 +#: agenda_culturel/models.py:814 msgid "Local event" msgstr "Événement de portée locale" -#: agenda_culturel/models.py:783 +#: agenda_culturel/models.py:816 msgid "" "If the event is a local event, it will not be proposed by default in daily, " "weekly or monthly views, unless the user has explicitly indicated that he " @@ -742,11 +762,11 @@ msgstr "" "les vues quotidiennes, hebdomadaires ou mensuelles, sauf si l'utilisateur a " "explicitement indiqué qu'il souhaite voir ces événements." -#: agenda_culturel/models.py:799 +#: agenda_culturel/models.py:832 msgid "Organisers" msgstr "Organisateurs" -#: agenda_culturel/models.py:801 +#: agenda_culturel/models.py:834 msgid "" "list of event organisers. Organizers will only be displayed if one of them " "does not normally use the venue." @@ -754,112 +774,112 @@ msgstr "" "Liste des organisateurs de l'événements. Les organisateurs seront affichés " "uniquement si au moins un d'entre eux n'utilise pas habituellement le lieu." -#: agenda_culturel/models.py:815 +#: agenda_culturel/models.py:848 msgid "Illustration (URL)" msgstr "Illustration (URL)" -#: agenda_culturel/models.py:816 +#: agenda_culturel/models.py:849 msgid "External URL of the illustration image" msgstr "URL externe de l'image illustrative" -#: agenda_culturel/models.py:822 +#: agenda_culturel/models.py:855 msgid "Illustration description" msgstr "Description de l'illustration" -#: agenda_culturel/models.py:823 +#: agenda_culturel/models.py:856 msgid "Alternative text used by screen readers for the image" msgstr "Texte alternatif utiliser par les lecteurs d'écrans pour l'image" -#: agenda_culturel/models.py:831 +#: agenda_culturel/models.py:864 msgid "Importation source" msgstr "Source d'importation" -#: agenda_culturel/models.py:832 +#: agenda_culturel/models.py:865 msgid "Importation source used to detect removed entries." msgstr "Source d'importation utilisée pour détecter les éléments supprimés/" -#: agenda_culturel/models.py:838 +#: agenda_culturel/models.py:871 msgid "UUIDs" msgstr "UUIDs" -#: agenda_culturel/models.py:839 +#: agenda_culturel/models.py:872 msgid "UUIDs from import to detect duplicated entries." msgstr "UUIDs utilisés pendant l'import pour détecter les entrées dupliquées" -#: agenda_culturel/models.py:845 +#: agenda_culturel/models.py:878 msgid "Online sources or ticketing" msgstr "Sources en ligne ou billetterie" -#: agenda_culturel/models.py:859 +#: agenda_culturel/models.py:892 msgid "Other versions" msgstr "" -#: agenda_culturel/models.py:954 +#: agenda_culturel/models.py:987 msgid "Events" msgstr "Événements" -#: agenda_culturel/models.py:1010 +#: agenda_culturel/models.py:1043 msgid "recurrent import" msgstr "import récurrent" -#: agenda_culturel/models.py:1012 +#: agenda_culturel/models.py:1045 msgid "a non authenticated user" msgstr "un utilisateur non connecté" -#: agenda_culturel/models.py:1488 +#: agenda_culturel/models.py:1521 msgid "Your event has been published" msgstr "Ton événement a été publié" -#: agenda_culturel/models.py:1493 +#: agenda_culturel/models.py:1526 msgid "Your message has not been retained" msgstr "Ton événement n'a pas été retenu" -#: agenda_culturel/models.py:1581 agenda_culturel/models.py:2397 +#: agenda_culturel/models.py:1614 agenda_culturel/models.py:2430 msgid "Warning" msgstr "Warning" -#: agenda_culturel/models.py:1583 agenda_culturel/models.py:1689 +#: agenda_culturel/models.py:1616 agenda_culturel/models.py:1722 msgid "the date has not been imported correctly." msgstr "la date n'a pas été importée correctement." -#: agenda_culturel/models.py:1671 +#: agenda_culturel/models.py:1704 msgid "during import process" msgstr "pendant le processus d'import" -#: agenda_culturel/models.py:1687 agenda_culturel/models.py:1697 -#: agenda_culturel/models.py:1708 +#: agenda_culturel/models.py:1720 agenda_culturel/models.py:1730 +#: agenda_culturel/models.py:1741 msgid "warning" msgstr "attention" -#: agenda_culturel/models.py:1699 +#: agenda_culturel/models.py:1732 msgid "the title has not been imported correctly." msgstr "le titre n'a pas été importé correctement." -#: agenda_culturel/models.py:1711 +#: agenda_culturel/models.py:1744 msgid "The import was unable to find an event in the page." msgstr "L'import a été incapable de trouver un événement dans la page." -#: agenda_culturel/models.py:2059 +#: agenda_culturel/models.py:2092 msgid "Updated field(s): " msgstr "Champ(s) mis à jour: " -#: agenda_culturel/models.py:2063 +#: agenda_culturel/models.py:2096 msgid "Update" msgstr "Mise à jour" -#: agenda_culturel/models.py:2064 +#: agenda_culturel/models.py:2097 msgid "update process" msgstr "processus de mise à jour" -#: agenda_culturel/models.py:2133 +#: agenda_culturel/models.py:2166 msgid "Import" msgstr "Import" -#: agenda_culturel/models.py:2134 +#: agenda_culturel/models.py:2167 msgid "import process" msgstr "processus d'import" -#: agenda_culturel/models.py:2136 +#: agenda_culturel/models.py:2169 msgid "" "The duration of the event is a little too long for direct publication. " "Moderators can choose to publish it or not." @@ -867,187 +887,187 @@ msgstr "" "La durée de l'événement est un peu trop longue pour qu'il soit publié " "directement. Les modérateurs peuvent choisir de le publier ou non." -#: agenda_culturel/models.py:2388 +#: agenda_culturel/models.py:2421 msgid "From contributor" msgstr "D'un·e contributeurice" -#: agenda_culturel/models.py:2389 +#: agenda_culturel/models.py:2422 msgid "Import process" msgstr "Processus d'import" -#: agenda_culturel/models.py:2390 +#: agenda_culturel/models.py:2423 msgid "Update process" msgstr "Processus de mise à jour" -#: agenda_culturel/models.py:2391 +#: agenda_culturel/models.py:2424 msgid "Contact form" msgstr "Formulaire de contact" -#: agenda_culturel/models.py:2392 +#: agenda_culturel/models.py:2425 msgid "Event report" msgstr "Signalemet d'événement" -#: agenda_culturel/models.py:2395 +#: agenda_culturel/models.py:2428 msgid "From contributor (without message)" msgstr "D'un·e contributeurice (sans message)" -#: agenda_culturel/models.py:2401 +#: agenda_culturel/models.py:2434 msgid "Messages" msgstr "Messages" -#: agenda_culturel/models.py:2410 +#: agenda_culturel/models.py:2443 msgid "Subject" msgstr "Sujet" -#: agenda_culturel/models.py:2411 +#: agenda_culturel/models.py:2444 msgid "The subject of your message" msgstr "Sujet de votre message" -#: agenda_culturel/models.py:2417 +#: agenda_culturel/models.py:2450 msgid "Related event" msgstr "Événement associé" -#: agenda_culturel/models.py:2418 +#: agenda_culturel/models.py:2451 msgid "The message is associated with this event." msgstr "Le message est associé à cet événement." -#: agenda_culturel/models.py:2426 +#: agenda_culturel/models.py:2459 msgid "Author of the message" msgstr "Auteur du message" -#: agenda_culturel/models.py:2434 +#: agenda_culturel/models.py:2467 msgid "Your name" msgstr "Votre nom" -#: agenda_culturel/models.py:2440 +#: agenda_culturel/models.py:2473 msgid "Email address" msgstr "Adresse email" -#: agenda_culturel/models.py:2447 +#: agenda_culturel/models.py:2480 msgid "Your message" msgstr "Votre message" -#: agenda_culturel/models.py:2454 +#: agenda_culturel/models.py:2487 msgid "This message is a spam." msgstr "Ce message est un spam." -#: agenda_culturel/models.py:2461 +#: agenda_culturel/models.py:2494 msgid "this message has been processed and no longer needs to be handled" msgstr "Ce message a été traité et ne nécessite plus d'être pris en charge" -#: agenda_culturel/models.py:2467 +#: agenda_culturel/models.py:2500 msgid "Comments on the message from the moderation team" msgstr "Commentaires sur ce message par l'équipe de modération" -#: agenda_culturel/models.py:2500 agenda_culturel/models.py:2675 +#: agenda_culturel/models.py:2533 agenda_culturel/models.py:2708 msgid "Recurrent import" msgstr "Import récurrent" -#: agenda_culturel/models.py:2501 +#: agenda_culturel/models.py:2534 msgid "Recurrent imports" msgstr "Imports récurrents" -#: agenda_culturel/models.py:2505 +#: agenda_culturel/models.py:2538 msgid "ical" msgstr "ical" -#: agenda_culturel/models.py:2506 +#: agenda_culturel/models.py:2539 msgid "ical no busy" msgstr "ical sans busy" -#: agenda_culturel/models.py:2507 +#: agenda_culturel/models.py:2540 msgid "ical no VC" msgstr "ical sans VC" -#: agenda_culturel/models.py:2508 +#: agenda_culturel/models.py:2541 msgid "ical naive timezone" msgstr "ical timezone naïve" -#: agenda_culturel/models.py:2509 +#: agenda_culturel/models.py:2542 msgid "lacoope.org" msgstr "lacoope.org" -#: agenda_culturel/models.py:2510 +#: agenda_culturel/models.py:2543 msgid "la comédie" msgstr "la comédie" -#: agenda_culturel/models.py:2511 +#: agenda_culturel/models.py:2544 msgid "le fotomat" msgstr "le fotomat" -#: agenda_culturel/models.py:2512 +#: agenda_culturel/models.py:2545 msgid "la puce à l'oreille" msgstr "la puce à loreille" -#: agenda_culturel/models.py:2513 +#: agenda_culturel/models.py:2546 msgid "Plugin wordpress MEC" msgstr "Plugin wordpress MEC" -#: agenda_culturel/models.py:2514 +#: agenda_culturel/models.py:2547 msgid "Événements d'une page FB" msgstr "Événements d'une page FB" -#: agenda_culturel/models.py:2515 +#: agenda_culturel/models.py:2548 msgid "Billetterie Clermont-Ferrand" msgstr "" -#: agenda_culturel/models.py:2516 +#: agenda_culturel/models.py:2549 msgid "Arachnée concert" msgstr "Arachnée concert" -#: agenda_culturel/models.py:2517 +#: agenda_culturel/models.py:2550 msgid "Le Rio" msgstr "Le Rio" -#: agenda_culturel/models.py:2518 +#: agenda_culturel/models.py:2551 msgid "La Raymonde" msgstr "La Raymone" -#: agenda_culturel/models.py:2519 +#: agenda_culturel/models.py:2552 msgid "Agenda apidae tourisme" msgstr "Agenda apidae tourisme" -#: agenda_culturel/models.py:2520 +#: agenda_culturel/models.py:2553 msgid "Agenda iguana (médiathèques)" msgstr "Agenda iguana (médiathèques)" -#: agenda_culturel/models.py:2521 +#: agenda_culturel/models.py:2554 msgid "Mille formes" msgstr "Mille Formes" -#: agenda_culturel/models.py:2522 +#: agenda_culturel/models.py:2555 msgid "Les Amis du Temps des Cerises" msgstr "Les Amis du Temps des Cerises" -#: agenda_culturel/models.py:2523 +#: agenda_culturel/models.py:2556 msgid "Mobilizon" msgstr "Mobilizon" -#: agenda_culturel/models.py:2526 +#: agenda_culturel/models.py:2559 msgid "simple" msgstr "simple" -#: agenda_culturel/models.py:2527 +#: agenda_culturel/models.py:2560 msgid "Headless Chromium" msgstr "chromium sans interface" -#: agenda_culturel/models.py:2530 +#: agenda_culturel/models.py:2563 msgid "Headless Chromium (pause)" msgstr "chromium sans interface (pause)" -#: agenda_culturel/models.py:2536 +#: agenda_culturel/models.py:2569 msgid "daily" msgstr "chaque jour" -#: agenda_culturel/models.py:2538 +#: agenda_culturel/models.py:2571 msgid "weekly" msgstr "chaque semaine" -#: agenda_culturel/models.py:2539 +#: agenda_culturel/models.py:2572 msgid "never" msgstr "jamais" -#: agenda_culturel/models.py:2544 +#: agenda_culturel/models.py:2577 msgid "" "Recurrent import name. Be careful to choose a name that is easy to " "understand, as it will be public and displayed on the sites About page." @@ -1055,151 +1075,151 @@ msgstr "" "Nom de l'import récurrent. Attention à choisir un nom compréhensible, car il " "sera public, et affiché sur la page à propos du site." -#: agenda_culturel/models.py:2551 +#: agenda_culturel/models.py:2584 msgid "Processor" msgstr "Processeur" -#: agenda_culturel/models.py:2557 +#: agenda_culturel/models.py:2590 msgid "Downloader" msgstr "Téléchargeur" -#: agenda_culturel/models.py:2564 +#: agenda_culturel/models.py:2597 msgid "Import recurrence" msgstr "Récurrence d'import" -#: agenda_culturel/models.py:2571 +#: agenda_culturel/models.py:2604 msgid "Source" msgstr "Source" -#: agenda_culturel/models.py:2572 +#: agenda_culturel/models.py:2605 msgid "URL of the source document" msgstr "URL du document source" -#: agenda_culturel/models.py:2577 +#: agenda_culturel/models.py:2610 msgid "Browsable url" msgstr "URL navigable" -#: agenda_culturel/models.py:2579 +#: agenda_culturel/models.py:2612 msgid "URL of the corresponding document that will be shown to visitors." msgstr "URL correspondant au document et qui sera montrée aux visiteurs" -#: agenda_culturel/models.py:2588 +#: agenda_culturel/models.py:2621 msgid "Status of each imported event (published or draft)" msgstr "Status de chaque événement importé (publié ou brouillon)" -#: agenda_culturel/models.py:2593 +#: agenda_culturel/models.py:2626 msgid "Address for each imported event" msgstr "Adresse de chaque événement importé" -#: agenda_culturel/models.py:2600 +#: agenda_culturel/models.py:2633 msgid "Force location" msgstr "Focer la localisation" -#: agenda_culturel/models.py:2601 +#: agenda_culturel/models.py:2634 msgid "force location even if another is detected." msgstr "Forcer la localisation même si une autre a été détectée." -#: agenda_culturel/models.py:2607 +#: agenda_culturel/models.py:2640 msgid "Organiser" msgstr "Organisateur" -#: agenda_culturel/models.py:2608 +#: agenda_culturel/models.py:2641 msgid "Organiser of each imported event" msgstr "Organisateur de chaque événement importé" -#: agenda_culturel/models.py:2618 +#: agenda_culturel/models.py:2651 msgid "Category of each imported event" msgstr "Catégorie de chaque événement importé" -#: agenda_culturel/models.py:2626 +#: agenda_culturel/models.py:2659 msgid "Tags for each imported event" msgstr "Étiquettes de chaque événement importé" -#: agenda_culturel/models.py:2627 +#: agenda_culturel/models.py:2660 msgid "A list of tags that describe each imported event." msgstr "Une liste d'étiquettes décrivant chaque événement importé" -#: agenda_culturel/models.py:2656 +#: agenda_culturel/models.py:2689 msgid "Running" msgstr "En cours" -#: agenda_culturel/models.py:2657 +#: agenda_culturel/models.py:2690 msgid "Canceled" msgstr "Annulé" -#: agenda_culturel/models.py:2658 +#: agenda_culturel/models.py:2691 msgid "Success" msgstr "Succès" -#: agenda_culturel/models.py:2659 +#: agenda_culturel/models.py:2692 msgid "Failed" msgstr "Erreur" -#: agenda_culturel/models.py:2662 +#: agenda_culturel/models.py:2695 msgid "Batch importation" msgstr "Importation par lot" -#: agenda_culturel/models.py:2663 +#: agenda_culturel/models.py:2696 msgid "Batch importations" msgstr "Importations par lot" -#: agenda_culturel/models.py:2676 +#: agenda_culturel/models.py:2709 msgid "Reference to the recurrent import processing" msgstr "Référence du processus d'import récurrent" -#: agenda_culturel/models.py:2684 +#: agenda_culturel/models.py:2717 msgid "URL (if not recurrent import)" msgstr "URL (si pas d'import récurrent)" -#: agenda_culturel/models.py:2685 +#: agenda_culturel/models.py:2718 msgid "Source URL if no RecurrentImport is associated." msgstr "URL source si aucun import récurrent n'est associé" -#: agenda_culturel/models.py:2700 +#: agenda_culturel/models.py:2733 msgid "Error message" msgstr "Votre message" -#: agenda_culturel/models.py:2704 +#: agenda_culturel/models.py:2737 msgid "Number of collected events" msgstr "Nombre d'événements collectés" -#: agenda_culturel/models.py:2707 +#: agenda_culturel/models.py:2740 msgid "Number of imported events" msgstr "Nombre d'événements importés" -#: agenda_culturel/models.py:2710 +#: agenda_culturel/models.py:2743 msgid "Number of updated events" msgstr "Nombre d'événements mis à jour" -#: agenda_culturel/models.py:2713 +#: agenda_culturel/models.py:2746 msgid "Number of removed events" msgstr "Nombre d'événements supprimés" -#: agenda_culturel/models.py:2721 +#: agenda_culturel/models.py:2754 msgid "Weight" msgstr "Poids" -#: agenda_culturel/models.py:2722 +#: agenda_culturel/models.py:2755 msgid "The lower is the weight, the earlier the filter is applied" msgstr "Plus le poids est léger, plus le filtre sera appliqué tôt" -#: agenda_culturel/models.py:2729 +#: agenda_culturel/models.py:2762 msgid "Category applied to the event" msgstr "Catégorie appliquée à l'événement" -#: agenda_culturel/models.py:2734 +#: agenda_culturel/models.py:2767 msgid "Contained in the title" msgstr "Contenu dans le titre" -#: agenda_culturel/models.py:2735 +#: agenda_culturel/models.py:2768 msgid "Text contained in the event title" msgstr "Texte contenu dans le titre de l'événement" -#: agenda_culturel/models.py:2741 +#: agenda_culturel/models.py:2774 msgid "Exact title extract" msgstr "Extrait exact du titre" -#: agenda_culturel/models.py:2743 +#: agenda_culturel/models.py:2776 msgid "" "If checked, the extract will be searched for in the title using the exact " "form (capitals, accents)." @@ -1207,19 +1227,19 @@ msgstr "" "Si coché, l'extrait sera recherché dans le titre en utilisant la forme " "exacte (majuscules, accents)" -#: agenda_culturel/models.py:2749 +#: agenda_culturel/models.py:2782 msgid "Contained in the description" msgstr "Contenu dans la description" -#: agenda_culturel/models.py:2750 +#: agenda_culturel/models.py:2783 msgid "Text contained in the description" msgstr "Texte contenu dans la description" -#: agenda_culturel/models.py:2756 +#: agenda_culturel/models.py:2789 msgid "Exact description extract" msgstr "Extrait exact de description" -#: agenda_culturel/models.py:2758 +#: agenda_culturel/models.py:2791 msgid "" "If checked, the extract will be searched for in the description using the " "exact form (capitals, accents)." @@ -1227,19 +1247,19 @@ msgstr "" "Si coché, l'extrait sera recherché dans la description en utilisant la forme " "exacte (majuscules, accents)" -#: agenda_culturel/models.py:2764 +#: agenda_culturel/models.py:2797 msgid "Contained in the location" msgstr "Contenu dans la localisation" -#: agenda_culturel/models.py:2765 +#: agenda_culturel/models.py:2798 msgid "Text contained in the event location" msgstr "Texte contenu dans la localisation de l'événement" -#: agenda_culturel/models.py:2771 +#: agenda_culturel/models.py:2804 msgid "Exact location extract" msgstr "Extrait exact de localisation" -#: agenda_culturel/models.py:2773 +#: agenda_culturel/models.py:2806 msgid "" "If checked, the extract will be searched for in the location using the exact " "form (capitals, accents)." @@ -1247,15 +1267,15 @@ msgstr "" "Si coché, l'extrait sera recherché dans la localisation en utilisant la " "forme exacte (majuscules, accents)" -#: agenda_culturel/models.py:2781 +#: agenda_culturel/models.py:2814 msgid "Location from place" msgstr "Localisation depuis le lieu" -#: agenda_culturel/models.py:2790 +#: agenda_culturel/models.py:2823 msgid "Categorisation rule" msgstr "Règle de catégorisation" -#: agenda_culturel/models.py:2791 +#: agenda_culturel/models.py:2824 msgid "Categorisation rules" msgstr "Règles de catégorisation" @@ -1263,43 +1283,43 @@ msgstr "Règles de catégorisation" msgid "French" msgstr "français" -#: agenda_culturel/views.py:156 +#: agenda_culturel/views.py:158 msgid "Recurrent import name" msgstr "Nome de l'import récurrent" -#: agenda_culturel/views.py:157 +#: agenda_culturel/views.py:159 msgid "Add another" msgstr "Ajouter un autre" -#: agenda_culturel/views.py:158 +#: agenda_culturel/views.py:160 msgid "Browse..." msgstr "Naviguer..." -#: agenda_culturel/views.py:159 +#: agenda_culturel/views.py:161 msgid "No file selected." msgstr "Pas de fichier sélectionné." -#: agenda_culturel/views.py:177 +#: agenda_culturel/views.py:179 msgid ": error 500" msgstr ": erreur 500" -#: agenda_culturel/views.py:178 +#: agenda_culturel/views.py:180 msgid "An internal error has occurred on site {} at address {}." msgstr "Une erreur interne s'est produite sur le site {} à l'adresse {}." -#: agenda_culturel/views.py:217 +#: agenda_culturel/views.py:219 msgid "Moderation rules" msgstr "Règles de modération" -#: agenda_culturel/views.py:225 +#: agenda_culturel/views.py:228 msgid "Import requirements" msgstr "Besoins pour l'import" -#: agenda_culturel/views.py:428 +#: agenda_culturel/views.py:434 msgid "The static content has been successfully updated." msgstr "Le contenu statique a été modifié avec succès." -#: agenda_culturel/views.py:439 +#: agenda_culturel/views.py:445 msgid "" "The event cannot be updated because the import process is not available for " "the referenced sources." @@ -1307,21 +1327,21 @@ msgstr "" "La mise à jour de l'événement n'est pas possible car le processus d'import " "n'est pas disponible pour les sources référencées." -#: agenda_culturel/views.py:452 +#: agenda_culturel/views.py:458 msgid "The event update has been queued and will be completed shortly." msgstr "" "La mise à jour de l'événement a été mise en attente et sera effectuée sous " "peu." -#: agenda_culturel/views.py:477 agenda_culturel/views.py:549 +#: agenda_culturel/views.py:486 agenda_culturel/views.py:565 msgid " A message has been sent to the person who proposed the event." msgstr " Un message a été envoyé à la personne qui a proposé l'événement." -#: agenda_culturel/views.py:481 +#: agenda_culturel/views.py:490 msgid "The event has been successfully modified." msgstr "L'événement a été modifié avec succès." -#: agenda_culturel/views.py:500 +#: agenda_culturel/views.py:509 msgid "" "Changes will be visible on a local copy of the event. The version identical " "to the imported source will be hidden." @@ -1329,19 +1349,19 @@ msgstr "" "Les modifications seront visibles sur une copie locale de l'événement. La " "version fidèle à la source importée sera masquée." -#: agenda_culturel/views.py:554 +#: agenda_culturel/views.py:570 msgid "The event {} has been moderated with success." msgstr "L'événement {} a été modéré avec succès." -#: agenda_culturel/views.py:690 +#: agenda_culturel/views.py:706 msgid "The event has been successfully deleted." msgstr "L'événement a été supprimé avec succès." -#: agenda_culturel/views.py:740 +#: agenda_culturel/views.py:756 msgid "Comment" msgstr "Commentaire" -#: agenda_culturel/views.py:766 +#: agenda_culturel/views.py:782 msgid "" "The status has been successfully modified and a message has been sent to the " "person who proposed the event." @@ -1349,15 +1369,15 @@ msgstr "" "Le status a été modifié avec succès et un message a été envoyé à la personne " "qui a proposé l'événement." -#: agenda_culturel/views.py:770 +#: agenda_culturel/views.py:786 msgid "The status has been successfully modified." msgstr "Le status a été modifié avec succès." -#: agenda_culturel/views.py:810 +#: agenda_culturel/views.py:826 msgid "The event was created: {}." msgstr "L'événement a été créé: {}." -#: agenda_culturel/views.py:816 +#: agenda_culturel/views.py:832 msgid "" "The event has been submitted and will be published as soon as it has been " "validated by the moderation team." @@ -1365,99 +1385,99 @@ msgstr "" "L'événement a été soumis et sera publié dès qu'il aura été validé par " "l'équipe de modération." -#: agenda_culturel/views.py:830 +#: agenda_culturel/views.py:846 msgid "during the creation process" msgstr "pendant le processus d'import" -#: agenda_culturel/views.py:853 +#: agenda_culturel/views.py:869 msgid "A message has been sent to the person who proposed the initial event." msgstr "" "Un message a été envoyé à la personne qui a proposé l'événement initial." -#: agenda_culturel/views.py:946 agenda_culturel/views.py:1024 +#: agenda_culturel/views.py:962 agenda_culturel/views.py:1040 msgid "{} has not been submitted since its already known: {}." msgstr "{} n'a pas été soumis car il est déjà connu: {}." -#: agenda_culturel/views.py:955 agenda_culturel/views.py:1033 +#: agenda_culturel/views.py:971 agenda_culturel/views.py:1049 msgid "" "{} has not been submitted since its already known and currently into " "moderation process." msgstr "{} n'a pas été soumis car il est déjà connu et en cours de modération" -#: agenda_culturel/views.py:967 +#: agenda_culturel/views.py:983 msgid "Integrating {} url(s) into our import process." msgstr "Intégration de {} url(s) dans notre processus d'import." -#: agenda_culturel/views.py:1042 +#: agenda_culturel/views.py:1058 msgid "Integrating {} into our import process." msgstr "Intégration de {} dans notre processus d'import." -#: agenda_culturel/views.py:1158 +#: agenda_culturel/views.py:1174 msgid "Your message has been sent successfully." msgstr "Votre message a été envoyé avec succès." -#: agenda_culturel/views.py:1191 +#: agenda_culturel/views.py:1207 msgid "Reporting the event {} on {}" msgstr "Signaler l'événement {} du {}" -#: agenda_culturel/views.py:1201 +#: agenda_culturel/views.py:1217 msgid "The contact message has been successfully deleted." msgstr "Le message de contact a été supprimé avec succès." -#: agenda_culturel/views.py:1217 +#: agenda_culturel/views.py:1233 msgid "The contact message properties has been successfully modified." msgstr "Les propriétés du message de contact ont été modifié avec succès." -#: agenda_culturel/views.py:1395 +#: agenda_culturel/views.py:1411 msgid "Spam has been successfully deleted." msgstr "Le spam a été supprimé avec succès" -#: agenda_culturel/views.py:1572 +#: agenda_culturel/views.py:1588 msgid "The import has been run successfully." msgstr "L'import a été lancé avec succès" -#: agenda_culturel/views.py:1594 +#: agenda_culturel/views.py:1610 msgid "The import has been canceled." msgstr "L'import a été annulé" -#: agenda_culturel/views.py:1617 +#: agenda_culturel/views.py:1633 msgid "The orphan event update has been launched." msgstr "La mise à jour de l'événement orphelin a été lancée." -#: agenda_culturel/views.py:1713 +#: agenda_culturel/views.py:1729 msgid "The recurrent import has been successfully modified." msgstr "L'import récurrent a été modifié avec succès." -#: agenda_culturel/views.py:1725 +#: agenda_culturel/views.py:1741 msgid "The recurrent import has been successfully deleted." msgstr "L'import récurrent a été supprimé avec succès" -#: agenda_culturel/views.py:1771 +#: agenda_culturel/views.py:1787 msgid "The import has been launched." msgstr "L'import a été lancé" -#: agenda_culturel/views.py:1798 +#: agenda_culturel/views.py:1814 msgid "Imports has been launched." msgstr "Les imports ont été lancés" -#: agenda_culturel/views.py:1820 +#: agenda_culturel/views.py:1836 msgid "Facebook imports has been launched." msgstr "Les imports Facebook ont été lancés" -#: agenda_culturel/views.py:1883 +#: agenda_culturel/views.py:1899 msgid "Update successfully completed." msgstr "Mise à jour réalisée avec succès." -#: agenda_culturel/views.py:1951 +#: agenda_culturel/views.py:1967 msgid "Creation of a merged event has been successfully completed." msgstr "Création d'un événement fusionné réalisée avec succès." -#: agenda_culturel/views.py:1988 +#: agenda_culturel/views.py:2004 msgid "Events have been marked as unduplicated." msgstr "Les événements ont été marqués comme non dupliqués." -#: agenda_culturel/views.py:2005 agenda_culturel/views.py:2022 -#: agenda_culturel/views.py:2050 +#: agenda_culturel/views.py:2021 agenda_culturel/views.py:2038 +#: agenda_culturel/views.py:2066 msgid "" "The selected item is no longer included in the list of duplicates. Someone " "else has probably modified the list in the meantime." @@ -1465,23 +1485,23 @@ msgstr "" "L'élément sélectionné ne fait plus partie de la liste des dupliqués. Une " "autre personne a probablement modifié la liste entre temps." -#: agenda_culturel/views.py:2012 +#: agenda_culturel/views.py:2028 msgid "The selected event has been set as representative" msgstr "L'événement sélectionné a été défini comme representatif." -#: agenda_culturel/views.py:2036 +#: agenda_culturel/views.py:2052 msgid "The event has been withdrawn from the group and made independent." msgstr "L'événement a été retiré du groupe et rendu indépendant." -#: agenda_culturel/views.py:2086 +#: agenda_culturel/views.py:2102 msgid "Cleaning up duplicates: {} item(s) fixed." msgstr "Nettoyage des dupliqués: {} élément(s) corrigé(s)." -#: agenda_culturel/views.py:2135 +#: agenda_culturel/views.py:2151 msgid "The event was successfully duplicated." msgstr "L'événement a été marqué dupliqué avec succès." -#: agenda_culturel/views.py:2143 +#: agenda_culturel/views.py:2159 msgid "" "The event has been successfully flagged as a duplicate. The moderation team " "will deal with your suggestion shortly." @@ -1489,32 +1509,32 @@ msgstr "" "L'événement a été signalé comme dupliqué avec succès. Votre suggestion sera " "prochainement prise en charge par l'équipe de modération." -#: agenda_culturel/views.py:2205 +#: agenda_culturel/views.py:2221 msgid "The categorisation rule has been successfully modified." msgstr "La règle de catégorisation a été modifiée avec succès." -#: agenda_culturel/views.py:2217 +#: agenda_culturel/views.py:2233 msgid "The categorisation rule has been successfully deleted." msgstr "La règle de catégorisation a été supprimée avec succès" -#: agenda_culturel/views.py:2239 +#: agenda_culturel/views.py:2255 msgid "The rules were successfully applied and 1 event was categorised." msgstr "" "Les règles ont été appliquées avec succès et 1 événement a été catégorisé" -#: agenda_culturel/views.py:2246 +#: agenda_culturel/views.py:2262 msgid "The rules were successfully applied and {} events were categorised." msgstr "" "Les règles ont été appliquées avec succès et {} événements ont été " "catégorisés" -#: agenda_culturel/views.py:2253 agenda_culturel/views.py:2317 +#: agenda_culturel/views.py:2269 agenda_culturel/views.py:2333 msgid "The rules were successfully applied and no events were categorised." msgstr "" "Les règles ont été appliquées avec succès et aucun événement n'a été " "catégorisé" -#: agenda_culturel/views.py:2303 +#: agenda_culturel/views.py:2319 msgid "" "The rules were successfully applied and 1 event with default category was " "categorised." @@ -1522,7 +1542,7 @@ msgstr "" "Les règles ont été appliquées avec succès et 1 événement avec catégorie par " "défaut a été catégorisé" -#: agenda_culturel/views.py:2310 +#: agenda_culturel/views.py:2326 msgid "" "The rules were successfully applied and {} events with default category were " "categorised." @@ -1530,58 +1550,58 @@ msgstr "" "Les règles ont été appliquées avec succès et {} événements avec catégorie " "par défaut ont été catégorisés" -#: agenda_culturel/views.py:2416 agenda_culturel/views.py:2478 -#: agenda_culturel/views.py:2518 +#: agenda_culturel/views.py:2432 agenda_culturel/views.py:2494 +#: agenda_culturel/views.py:2534 msgid "{} events have been updated." msgstr "{} événements ont été mis à jour." -#: agenda_culturel/views.py:2419 agenda_culturel/views.py:2480 -#: agenda_culturel/views.py:2521 +#: agenda_culturel/views.py:2435 agenda_culturel/views.py:2496 +#: agenda_culturel/views.py:2537 msgid "1 event has been updated." msgstr "1 événement a été mis à jour" -#: agenda_culturel/views.py:2421 agenda_culturel/views.py:2482 -#: agenda_culturel/views.py:2523 +#: agenda_culturel/views.py:2437 agenda_culturel/views.py:2498 +#: agenda_culturel/views.py:2539 msgid "No events have been modified." msgstr "Aucun événement n'a été modifié." -#: agenda_culturel/views.py:2430 +#: agenda_culturel/views.py:2446 msgid "The place has been successfully updated." msgstr "Le lieu a été modifié avec succès." -#: agenda_culturel/views.py:2439 +#: agenda_culturel/views.py:2455 msgid "The place has been successfully created." msgstr "Le lieu a été créé avec succès." -#: agenda_culturel/views.py:2505 +#: agenda_culturel/views.py:2521 msgid "The selected place has been assigned to the event." msgstr "Le lieu sélectionné a été assigné à l'événement." -#: agenda_culturel/views.py:2510 +#: agenda_culturel/views.py:2526 msgid "A new alias has been added to the selected place." msgstr "Un nouvel alias a été créé pour le lieu sélectionné." -#: agenda_culturel/views.py:2637 +#: agenda_culturel/views.py:2653 msgid "The organisation has been successfully updated." msgstr "L'organisme a été modifié avec succès." -#: agenda_culturel/views.py:2644 +#: agenda_culturel/views.py:2660 msgid "The organisation has been successfully created." msgstr "L'organisme a été créé avec succès." -#: agenda_culturel/views.py:2663 +#: agenda_culturel/views.py:2679 msgid "The tag has been successfully updated." msgstr "L'étiquette a été modifiée avec succès." -#: agenda_culturel/views.py:2670 +#: agenda_culturel/views.py:2686 msgid "The tag has been successfully created." msgstr "L'étiquette a été créée avec succès." -#: agenda_culturel/views.py:2836 +#: agenda_culturel/views.py:2852 msgid "You have not modified the tag name." msgstr "Vous n'avez pas modifié le nom de l'étiquette." -#: agenda_culturel/views.py:2851 +#: agenda_culturel/views.py:2867 msgid "" "This tag {} is already in use, and is described by different information " "from the current tag. You can force renaming by checking the corresponding " @@ -1594,7 +1614,7 @@ msgstr "" "sera supprimée, et tous les événements associés à l'étiquette {} seront " "associés à l'étiquette {}." -#: agenda_culturel/views.py:2865 +#: agenda_culturel/views.py:2881 msgid "" "This tag {} is already in use. You can force renaming by checking the " "corresponding option." @@ -1602,17 +1622,21 @@ msgstr "" "Cette étiquette {} est déjà utilisée. Vous pouvez forcer le renommage en " "cochant l'option correspondante." -#: agenda_culturel/views.py:2898 +#: agenda_culturel/views.py:2914 msgid "The tag {} has been successfully renamed to {}." msgstr "L'étiquette {} a été renommée avec succès en {}." -#: agenda_culturel/views.py:2940 +#: agenda_culturel/views.py:2956 msgid "The tag {} has been successfully deleted." msgstr "L'événement {} a été supprimé avec succès." -#: agenda_culturel/views.py:2966 +#: agenda_culturel/views.py:2982 msgid "Cache successfully cleared." msgstr "Le cache a été vidé avec succès." +#: agenda_culturel/views.py:2996 +msgid "Your user profile has been successfully modified." +msgstr "Votre profil utilisateur a été modifié avec succès." + #~ msgid "la cour des 3 coquins" #~ msgstr "la cour des 3 coquins" diff --git a/src/agenda_culturel/templates/agenda_culturel/side-nav.html b/src/agenda_culturel/templates/agenda_culturel/side-nav.html index 667e382..4c6f28a 100644 --- a/src/agenda_culturel/templates/agenda_culturel/side-nav.html +++ b/src/agenda_culturel/templates/agenda_culturel/side-nav.html @@ -123,6 +123,7 @@ diff --git a/src/agenda_culturel/templates/agenda_culturel/userprofile_form.html b/src/agenda_culturel/templates/agenda_culturel/userprofile_form.html new file mode 100644 index 0000000..bcce317 --- /dev/null +++ b/src/agenda_culturel/templates/agenda_culturel/userprofile_form.html @@ -0,0 +1,22 @@ +{% extends "agenda_culturel/page-admin.html" %} +{% load static %} +{% block title %} + {% block og_title %}Modification du profil de {{ object.user }}{% endblock %} +{% endblock %} +{% block fluid %}{% endblock %} +{% block content %} +
+
+

Modification du profil de {{ object.user }}

+
+
+ {% csrf_token %} + {{ form.media }} + {{ form.as_p }} +
+ Annuler + +
+
+
+{% endblock %} diff --git a/src/agenda_culturel/urls.py b/src/agenda_culturel/urls.py index 21ac69e..25815b7 100644 --- a/src/agenda_culturel/urls.py +++ b/src/agenda_culturel/urls.py @@ -105,6 +105,7 @@ from .views import ( apply_categorisation_rules, moderation_rules, import_requirements, + UserProfileUpdateView, ) event_dict = { @@ -464,6 +465,7 @@ urlpatterns = [ name="cached-sitemap", ), path("cache/clear", clear_cache, name="clear_cache"), + path("profile/edit", UserProfileUpdateView.as_view(), name="edit_profile"), ] if settings.DEBUG: diff --git a/src/agenda_culturel/views.py b/src/agenda_culturel/views.py index 55c1ee3..5e9da59 100644 --- a/src/agenda_culturel/views.py +++ b/src/agenda_culturel/views.py @@ -80,6 +80,7 @@ from .forms import ( TagRenameForm, URLSubmissionFormSet, URLSubmissionFormWithContact, + UserProfileForm, ) from .import_tasks.extractor import Extractor from .models import ( @@ -95,6 +96,7 @@ from .models import ( StaticContent, Tag, remove_accents, + UserProfile, ) from .utils import PlaceGuesser @@ -2984,3 +2986,17 @@ def clear_cache(request): request, "agenda_culturel/clear_cache.html", ) + + +class UserProfileUpdateView( + SuccessMessageMixin, + LoginRequiredMixin, + UpdateView, +): + model = UserProfile + success_message = _("Your user profile has been successfully modified.") + success_url = reverse_lazy("administration") + form_class = UserProfileForm + + def get_object(self): + return self.request.user.userprofile