Automatisation de l'étiquetage des événements après ajout d'un alias

This commit is contained in:
Jean-Marie Favreau 2024-04-27 20:18:09 +02:00
parent 32bde7d3a8
commit 76d3bb78ba
3 changed files with 167 additions and 151 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: agenda_culturel\n" "Project-Id-Version: agenda_culturel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-27 16:25+0000\n" "POT-Creation-Date: 2024-04-27 18:16+0000\n"
"PO-Revision-Date: 2023-10-29 14:16+0000\n" "PO-Revision-Date: 2023-10-29 14:16+0000\n"
"Last-Translator: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n" "Last-Translator: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
"Language-Team: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n" "Language-Team: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
@ -56,8 +56,8 @@ msgid "Cannot extract event from url {}"
msgstr "Impossible d'extraire l'événement depuis l'url {}" msgstr "Impossible d'extraire l'événement depuis l'url {}"
#: agenda_culturel/models.py:39 agenda_culturel/models.py:68 #: agenda_culturel/models.py:39 agenda_culturel/models.py:68
#: agenda_culturel/models.py:162 agenda_culturel/models.py:770 #: agenda_culturel/models.py:162 agenda_culturel/models.py:792
#: agenda_culturel/models.py:809 #: agenda_culturel/models.py:831
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
@ -105,8 +105,8 @@ msgstr "Couleur"
msgid "Color used as background for the category" msgid "Color used as background for the category"
msgstr "Couleur utilisée comme fond de la catégorie" msgstr "Couleur utilisée comme fond de la catégorie"
#: agenda_culturel/models.py:115 agenda_culturel/models.py:205 #: agenda_culturel/models.py:115 agenda_culturel/models.py:227
#: agenda_culturel/models.py:821 agenda_culturel/models.py:872 #: agenda_culturel/models.py:843 agenda_culturel/models.py:894
msgid "Category" msgid "Category"
msgstr "Catégorie" msgstr "Catégorie"
@ -150,73 +150,73 @@ msgstr ""
msgid "Places" msgid "Places"
msgstr "Lieux" msgstr "Lieux"
#: agenda_culturel/models.py:189 agenda_culturel/models.py:819 #: agenda_culturel/models.py:211 agenda_culturel/models.py:841
msgid "Published" msgid "Published"
msgstr "Publié" msgstr "Publié"
#: agenda_culturel/models.py:190 #: agenda_culturel/models.py:212
msgid "Draft" msgid "Draft"
msgstr "Brouillon" msgstr "Brouillon"
#: agenda_culturel/models.py:191 #: agenda_culturel/models.py:213
msgid "Trash" msgid "Trash"
msgstr "Corbeille" msgstr "Corbeille"
#: agenda_culturel/models.py:201 #: agenda_culturel/models.py:223
msgid "Title" msgid "Title"
msgstr "Titre" msgstr "Titre"
#: agenda_culturel/models.py:201 #: agenda_culturel/models.py:223
msgid "Short title" msgid "Short title"
msgstr "Titre court" msgstr "Titre court"
#: agenda_culturel/models.py:203 agenda_culturel/models.py:856 #: agenda_culturel/models.py:225 agenda_culturel/models.py:878
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: agenda_culturel/models.py:205 #: agenda_culturel/models.py:227
msgid "Category of the event" msgid "Category of the event"
msgstr "Catégorie de l'événement" msgstr "Catégorie de l'événement"
#: agenda_culturel/models.py:207 #: agenda_culturel/models.py:229
msgid "Day of the event" msgid "Day of the event"
msgstr "Date de l'événement" msgstr "Date de l'événement"
#: agenda_culturel/models.py:208 #: agenda_culturel/models.py:230
msgid "Starting time" msgid "Starting time"
msgstr "Heure de début" msgstr "Heure de début"
#: agenda_culturel/models.py:210 #: agenda_culturel/models.py:232
msgid "End day of the event" msgid "End day of the event"
msgstr "Fin de l'événement" msgstr "Fin de l'événement"
#: agenda_culturel/models.py:210 #: agenda_culturel/models.py:232
msgid "End day of the event, only required if different from the start day." msgid "End day of the event, only required if different from the start day."
msgstr "" msgstr ""
"Date de fin de l'événement, uniquement nécessaire s'il est différent du " "Date de fin de l'événement, uniquement nécessaire s'il est différent du "
"premier jour de l'événement" "premier jour de l'événement"
#: agenda_culturel/models.py:211 #: agenda_culturel/models.py:233
msgid "Final time" msgid "Final time"
msgstr "Heure de fin" msgstr "Heure de fin"
#: agenda_culturel/models.py:213 #: agenda_culturel/models.py:235
msgid "Recurrence" msgid "Recurrence"
msgstr "Récurrence" msgstr "Récurrence"
#: agenda_culturel/models.py:215 agenda_culturel/models.py:820 #: agenda_culturel/models.py:237 agenda_culturel/models.py:842
msgid "Location" msgid "Location"
msgstr "Localisation" msgstr "Localisation"
#: agenda_culturel/models.py:215 #: agenda_culturel/models.py:237
msgid "Address of the event" msgid "Address of the event"
msgstr "Adresse de l'événement" msgstr "Adresse de l'événement"
#: agenda_culturel/models.py:216 #: agenda_culturel/models.py:238
msgid "Location (free form)" msgid "Location (free form)"
msgstr "Localisation (forme libre)" msgstr "Localisation (forme libre)"
#: agenda_culturel/models.py:216 #: agenda_culturel/models.py:238
msgid "" msgid ""
"Address of the event in case its not available in the already known places " "Address of the event in case its not available in the already known places "
"(free form)" "(free form)"
@ -224,187 +224,187 @@ msgstr ""
"Addresse d'un événement si elle n'est pas déjà présente dans la liste des " "Addresse d'un événement si elle n'est pas déjà présente dans la liste des "
"lieux disponible (forme libre)" "lieux disponible (forme libre)"
#: agenda_culturel/models.py:218 #: agenda_culturel/models.py:240
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
#: agenda_culturel/models.py:218 #: agenda_culturel/models.py:240
msgid "General description of the event" msgid "General description of the event"
msgstr "Description générale de l'événement" msgstr "Description générale de l'événement"
#: agenda_culturel/models.py:220 #: agenda_culturel/models.py:242
msgid "Illustration (local image)" msgid "Illustration (local image)"
msgstr "Illustration (image locale)" msgstr "Illustration (image locale)"
#: agenda_culturel/models.py:220 #: agenda_culturel/models.py:242
msgid "Illustration image stored in the agenda server" msgid "Illustration image stored in the agenda server"
msgstr "Image d'illustration stockée sur le serveur de l'agenda" msgstr "Image d'illustration stockée sur le serveur de l'agenda"
#: agenda_culturel/models.py:222 #: agenda_culturel/models.py:244
msgid "Illustration" msgid "Illustration"
msgstr "Illustration" msgstr "Illustration"
#: agenda_culturel/models.py:222 #: agenda_culturel/models.py:244
msgid "URL of the illustration image" msgid "URL of the illustration image"
msgstr "URL de l'image illustrative" msgstr "URL de l'image illustrative"
#: agenda_culturel/models.py:223 #: agenda_culturel/models.py:245
msgid "Illustration description" msgid "Illustration description"
msgstr "Description de l'illustration" msgstr "Description de l'illustration"
#: agenda_culturel/models.py:223 #: agenda_culturel/models.py:245
msgid "Alternative text used by screen readers for the image" msgid "Alternative text used by screen readers for the image"
msgstr "Texte alternatif utiliser par les lecteurs d'écrans pour l'image" msgstr "Texte alternatif utiliser par les lecteurs d'écrans pour l'image"
#: agenda_culturel/models.py:225 #: agenda_culturel/models.py:247
msgid "Importation source" msgid "Importation source"
msgstr "Source d'importation" msgstr "Source d'importation"
#: agenda_culturel/models.py:225 #: agenda_culturel/models.py:247
msgid "Importation source used to detect removed entries." msgid "Importation source used to detect removed entries."
msgstr "Source d'importation utilisée pour détecter les éléments supprimés/" msgstr "Source d'importation utilisée pour détecter les éléments supprimés/"
#: agenda_culturel/models.py:226 #: agenda_culturel/models.py:248
msgid "UUIDs" msgid "UUIDs"
msgstr "UUIDs" msgstr "UUIDs"
#: agenda_culturel/models.py:226 #: agenda_culturel/models.py:248
msgid "UUIDs from import to detect duplicated entries." msgid "UUIDs from import to detect duplicated entries."
msgstr "UUIDs utilisés pendant l'import pour détecter les entrées dupliquées" msgstr "UUIDs utilisés pendant l'import pour détecter les entrées dupliquées"
#: agenda_culturel/models.py:227 #: agenda_culturel/models.py:249
msgid "URLs" msgid "URLs"
msgstr "URLs" msgstr "URLs"
#: agenda_culturel/models.py:227 #: agenda_culturel/models.py:249
msgid "List of all the urls where this event can be found." msgid "List of all the urls where this event can be found."
msgstr "Liste de toutes les urls où l'événement peut être trouvé." msgstr "Liste de toutes les urls où l'événement peut être trouvé."
#: agenda_culturel/models.py:229 #: agenda_culturel/models.py:251
msgid "Tags" msgid "Tags"
msgstr "Étiquettes" msgstr "Étiquettes"
#: agenda_culturel/models.py:229 #: agenda_culturel/models.py:251
msgid "A list of tags that describe the event." msgid "A list of tags that describe the event."
msgstr "Une liste d'étiquettes décrivant l'événement" msgstr "Une liste d'étiquettes décrivant l'événement"
#: agenda_culturel/models.py:231 #: agenda_culturel/models.py:253
msgid "Possibly duplicated" msgid "Possibly duplicated"
msgstr "Possibles doublons" msgstr "Possibles doublons"
#: agenda_culturel/models.py:272 #: agenda_culturel/models.py:294
msgid "Event" msgid "Event"
msgstr "Événement" msgstr "Événement"
#: agenda_culturel/models.py:273 #: agenda_culturel/models.py:295
msgid "Events" msgid "Events"
msgstr "Événements" msgstr "Événements"
#: agenda_culturel/models.py:766 #: agenda_culturel/models.py:788
msgid "Contact message" msgid "Contact message"
msgstr "Message de contact" msgstr "Message de contact"
#: agenda_culturel/models.py:767 #: agenda_culturel/models.py:789
msgid "Contact messages" msgid "Contact messages"
msgstr "Messages de contact" msgstr "Messages de contact"
#: agenda_culturel/models.py:769 #: agenda_culturel/models.py:791
msgid "Subject" msgid "Subject"
msgstr "Sujet" msgstr "Sujet"
#: agenda_culturel/models.py:769 #: agenda_culturel/models.py:791
msgid "The subject of your message" msgid "The subject of your message"
msgstr "Sujet de votre message" msgstr "Sujet de votre message"
#: agenda_culturel/models.py:770 #: agenda_culturel/models.py:792
msgid "Your name" msgid "Your name"
msgstr "Votre nom" msgstr "Votre nom"
#: agenda_culturel/models.py:771 #: agenda_culturel/models.py:793
msgid "Email address" msgid "Email address"
msgstr "Adresse email" msgstr "Adresse email"
#: agenda_culturel/models.py:771 #: agenda_culturel/models.py:793
msgid "Your email address" msgid "Your email address"
msgstr "Votre adresse email" msgstr "Votre adresse email"
#: agenda_culturel/models.py:772 #: agenda_culturel/models.py:794
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
#: agenda_culturel/models.py:772 #: agenda_culturel/models.py:794
msgid "Your message" msgid "Your message"
msgstr "Votre message" msgstr "Votre message"
#: agenda_culturel/models.py:776 agenda_culturel/views.py:470 #: agenda_culturel/models.py:798 agenda_culturel/views.py:470
msgid "Closed" msgid "Closed"
msgstr "Fermé" msgstr "Fermé"
#: agenda_culturel/models.py:776 #: agenda_culturel/models.py:798
msgid "this message has been processed and no longer needs to be handled" 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" msgstr "Ce message a été traité et ne nécessite plus d'être pris en charge"
#: agenda_culturel/models.py:777 #: agenda_culturel/models.py:799
msgid "Comments" msgid "Comments"
msgstr "Commentaires" msgstr "Commentaires"
#: agenda_culturel/models.py:777 #: agenda_culturel/models.py:799
msgid "Comments on the message from the moderation team" msgid "Comments on the message from the moderation team"
msgstr "Commentaires sur ce message par l'équipe de modération" msgstr "Commentaires sur ce message par l'équipe de modération"
#: agenda_culturel/models.py:787 agenda_culturel/models.py:854 #: agenda_culturel/models.py:809 agenda_culturel/models.py:876
msgid "Recurrent import" msgid "Recurrent import"
msgstr "Import récurrent" msgstr "Import récurrent"
#: agenda_culturel/models.py:788 #: agenda_culturel/models.py:810
msgid "Recurrent imports" msgid "Recurrent imports"
msgstr "Imports récurrents" msgstr "Imports récurrents"
#: agenda_culturel/models.py:792 #: agenda_culturel/models.py:814
msgid "ical" msgid "ical"
msgstr "ical" msgstr "ical"
#: agenda_culturel/models.py:793 #: agenda_culturel/models.py:815
msgid "ical no busy" msgid "ical no busy"
msgstr "ical sans busy" msgstr "ical sans busy"
#: agenda_culturel/models.py:794 #: agenda_culturel/models.py:816
msgid "ical no VC" msgid "ical no VC"
msgstr "ical sans VC" msgstr "ical sans VC"
#: agenda_culturel/models.py:795 #: agenda_culturel/models.py:817
msgid "lacoope.org" msgid "lacoope.org"
msgstr "lacoope.org" msgstr "lacoope.org"
#: agenda_culturel/models.py:796 #: agenda_culturel/models.py:818
msgid "la comédie" msgid "la comédie"
msgstr "la comédie" msgstr "la comédie"
#: agenda_culturel/models.py:797 #: agenda_culturel/models.py:819
msgid "le fotomat" msgid "le fotomat"
msgstr "le fotomat" msgstr "le fotomat"
#: agenda_culturel/models.py:798 #: agenda_culturel/models.py:820
msgid "la puce à loreille" msgid "la puce à loreille"
msgstr "la puce à loreille" msgstr "la puce à loreille"
#: agenda_culturel/models.py:801 #: agenda_culturel/models.py:823
msgid "simple" msgid "simple"
msgstr "simple" msgstr "simple"
#: agenda_culturel/models.py:802 #: agenda_culturel/models.py:824
msgid "Headless Chromium" msgid "Headless Chromium"
msgstr "chromium sans interface" msgstr "chromium sans interface"
#: agenda_culturel/models.py:806 #: agenda_culturel/models.py:828
msgid "daily" msgid "daily"
msgstr "chaque jour" msgstr "chaque jour"
#: agenda_culturel/models.py:807 #: agenda_culturel/models.py:829
msgid "weekly" msgid "weekly"
msgstr "chaque semaine" msgstr "chaque semaine"
#: agenda_culturel/models.py:809 #: agenda_culturel/models.py:831
msgid "" msgid ""
"Recurrent import name. Be careful to choose a name that is easy to " "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." "understand, as it will be public and displayed on the sites About page."
@ -412,127 +412,127 @@ msgstr ""
"Nom de l'import récurrent. Attention à choisir un nom compréhensible, car il " "Nom de l'import récurrent. Attention à choisir un nom compréhensible, car il "
"sera public, et affiché sur la page à propos du site." "sera public, et affiché sur la page à propos du site."
#: agenda_culturel/models.py:810 #: agenda_culturel/models.py:832
msgid "Processor" msgid "Processor"
msgstr "Processeur" msgstr "Processeur"
#: agenda_culturel/models.py:811 #: agenda_culturel/models.py:833
msgid "Downloader" msgid "Downloader"
msgstr "Téléchargeur" msgstr "Téléchargeur"
#: agenda_culturel/models.py:813 #: agenda_culturel/models.py:835
msgid "Import recurrence" msgid "Import recurrence"
msgstr "Récurrence d'import" msgstr "Récurrence d'import"
#: agenda_culturel/models.py:816 #: agenda_culturel/models.py:838
msgid "Source" msgid "Source"
msgstr "Source" msgstr "Source"
#: agenda_culturel/models.py:816 #: agenda_culturel/models.py:838
msgid "URL of the source document" msgid "URL of the source document"
msgstr "URL du document source" msgstr "URL du document source"
#: agenda_culturel/models.py:817 #: agenda_culturel/models.py:839
msgid "Browsable url" msgid "Browsable url"
msgstr "URL navigable" msgstr "URL navigable"
#: agenda_culturel/models.py:817 #: agenda_culturel/models.py:839
msgid "URL of the corresponding document that will be shown to visitors." msgid "URL of the corresponding document that will be shown to visitors."
msgstr "URL correspondant au document et qui sera montrée aux visiteurs" msgstr "URL correspondant au document et qui sera montrée aux visiteurs"
#: agenda_culturel/models.py:819 #: agenda_culturel/models.py:841
msgid "Status of each imported event (published or draft)" msgid "Status of each imported event (published or draft)"
msgstr "Status de chaque événement importé (publié ou brouillon)" msgstr "Status de chaque événement importé (publié ou brouillon)"
#: agenda_culturel/models.py:820 #: agenda_culturel/models.py:842
msgid "Address for each imported event" msgid "Address for each imported event"
msgstr "Adresse de chaque événement importé" msgstr "Adresse de chaque événement importé"
#: agenda_culturel/models.py:821 #: agenda_culturel/models.py:843
msgid "Category of each imported event" msgid "Category of each imported event"
msgstr "Catégorie de chaque événement importé" msgstr "Catégorie de chaque événement importé"
#: agenda_culturel/models.py:822 #: agenda_culturel/models.py:844
msgid "Tags for each imported event" msgid "Tags for each imported event"
msgstr "Étiquettes de chaque événement importé" msgstr "Étiquettes de chaque événement importé"
#: agenda_culturel/models.py:822 #: agenda_culturel/models.py:844
msgid "A list of tags that describe each imported event." msgid "A list of tags that describe each imported event."
msgstr "Une liste d'étiquettes décrivant chaque événement importé" msgstr "Une liste d'étiquettes décrivant chaque événement importé"
#: agenda_culturel/models.py:841 #: agenda_culturel/models.py:863
msgid "Running" msgid "Running"
msgstr "En cours" msgstr "En cours"
#: agenda_culturel/models.py:842 #: agenda_culturel/models.py:864
msgid "Canceled" msgid "Canceled"
msgstr "Annulé" msgstr "Annulé"
#: agenda_culturel/models.py:843 #: agenda_culturel/models.py:865
msgid "Success" msgid "Success"
msgstr "Succès" msgstr "Succès"
#: agenda_culturel/models.py:844 #: agenda_culturel/models.py:866
msgid "Failed" msgid "Failed"
msgstr "Erreur" msgstr "Erreur"
#: agenda_culturel/models.py:847 #: agenda_culturel/models.py:869
msgid "Batch importation" msgid "Batch importation"
msgstr "Importation par lot" msgstr "Importation par lot"
#: agenda_culturel/models.py:848 #: agenda_culturel/models.py:870
msgid "Batch importations" msgid "Batch importations"
msgstr "Importations par lot" msgstr "Importations par lot"
#: agenda_culturel/models.py:854 #: agenda_culturel/models.py:876
msgid "Reference to the recurrent import processing" msgid "Reference to the recurrent import processing"
msgstr "Référence du processus d'import récurrent" msgstr "Référence du processus d'import récurrent"
#: agenda_culturel/models.py:858 #: agenda_culturel/models.py:880
msgid "Error message" msgid "Error message"
msgstr "Votre message" msgstr "Votre message"
#: agenda_culturel/models.py:860 #: agenda_culturel/models.py:882
msgid "Number of collected events" msgid "Number of collected events"
msgstr "Nombre d'événements collectés" msgstr "Nombre d'événements collectés"
#: agenda_culturel/models.py:861 #: agenda_culturel/models.py:883
msgid "Number of imported events" msgid "Number of imported events"
msgstr "Nombre d'événements importés" msgstr "Nombre d'événements importés"
#: agenda_culturel/models.py:862 #: agenda_culturel/models.py:884
msgid "Number of updated events" msgid "Number of updated events"
msgstr "Nombre d'événements mis à jour" msgstr "Nombre d'événements mis à jour"
#: agenda_culturel/models.py:863 #: agenda_culturel/models.py:885
msgid "Number of removed events" msgid "Number of removed events"
msgstr "Nombre d'événements supprimés" msgstr "Nombre d'événements supprimés"
#: agenda_culturel/models.py:870 #: agenda_culturel/models.py:892
msgid "Weight" msgid "Weight"
msgstr "Poids" msgstr "Poids"
#: agenda_culturel/models.py:870 #: agenda_culturel/models.py:892
msgid "The lower is the weight, the earlier the filter is applied" 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" msgstr "Plus le poids est léger, plus le filtre sera appliqué tôt"
#: agenda_culturel/models.py:872 #: agenda_culturel/models.py:894
msgid "Category applied to the event" msgid "Category applied to the event"
msgstr "Catégorie appliquée à l'événement" msgstr "Catégorie appliquée à l'événement"
#: agenda_culturel/models.py:874 #: agenda_culturel/models.py:896
msgid "Contained in the title" msgid "Contained in the title"
msgstr "Contenu dans le titre" msgstr "Contenu dans le titre"
#: agenda_culturel/models.py:874 #: agenda_culturel/models.py:896
msgid "Text contained in the event title" msgid "Text contained in the event title"
msgstr "Texte contenu dans le titre de l'événement" msgstr "Texte contenu dans le titre de l'événement"
#: agenda_culturel/models.py:875 #: agenda_culturel/models.py:897
msgid "Exact title extract" msgid "Exact title extract"
msgstr "Extrait exact du titre" msgstr "Extrait exact du titre"
#: agenda_culturel/models.py:875 #: agenda_culturel/models.py:897
msgid "" msgid ""
"If checked, the extract will be searched for in the title using the exact " "If checked, the extract will be searched for in the title using the exact "
"form (capitals, accents)." "form (capitals, accents)."
@ -540,19 +540,19 @@ msgstr ""
"Si coché, l'extrait sera recherché dans le titre en utilisant la forme " "Si coché, l'extrait sera recherché dans le titre en utilisant la forme "
"exacte (majuscules, accents)" "exacte (majuscules, accents)"
#: agenda_culturel/models.py:877 #: agenda_culturel/models.py:899
msgid "Contained in the description" msgid "Contained in the description"
msgstr "Contenu dans la description" msgstr "Contenu dans la description"
#: agenda_culturel/models.py:877 #: agenda_culturel/models.py:899
msgid "Text contained in the description" msgid "Text contained in the description"
msgstr "Texte contenu dans la description" msgstr "Texte contenu dans la description"
#: agenda_culturel/models.py:878 #: agenda_culturel/models.py:900
msgid "Exact description extract" msgid "Exact description extract"
msgstr "Extrait exact de description" msgstr "Extrait exact de description"
#: agenda_culturel/models.py:878 #: agenda_culturel/models.py:900
msgid "" msgid ""
"If checked, the extract will be searched for in the description using the " "If checked, the extract will be searched for in the description using the "
"exact form (capitals, accents)." "exact form (capitals, accents)."
@ -560,19 +560,19 @@ msgstr ""
"Si coché, l'extrait sera recherché dans la description en utilisant la forme " "Si coché, l'extrait sera recherché dans la description en utilisant la forme "
"exacte (majuscules, accents)" "exacte (majuscules, accents)"
#: agenda_culturel/models.py:880 #: agenda_culturel/models.py:902
msgid "Contained in the location" msgid "Contained in the location"
msgstr "Contenu dans la localisation" msgstr "Contenu dans la localisation"
#: agenda_culturel/models.py:880 #: agenda_culturel/models.py:902
msgid "Text contained in the event location" msgid "Text contained in the event location"
msgstr "Texte contenu dans la localisation de l'événement" msgstr "Texte contenu dans la localisation de l'événement"
#: agenda_culturel/models.py:881 #: agenda_culturel/models.py:903
msgid "Exact location extract" msgid "Exact location extract"
msgstr "Extrait exact de localisation" msgstr "Extrait exact de localisation"
#: agenda_culturel/models.py:881 #: agenda_culturel/models.py:903
msgid "" msgid ""
"If checked, the extract will be searched for in the location using the exact " "If checked, the extract will be searched for in the location using the exact "
"form (capitals, accents)." "form (capitals, accents)."
@ -580,52 +580,52 @@ msgstr ""
"Si coché, l'extrait sera recherché dans la localisation en utilisant la " "Si coché, l'extrait sera recherché dans la localisation en utilisant la "
"forme exacte (majuscules, accents)" "forme exacte (majuscules, accents)"
#: agenda_culturel/models.py:884 #: agenda_culturel/models.py:906
msgid "Categorisation rule" msgid "Categorisation rule"
msgstr "Règle de catégorisation" msgstr "Règle de catégorisation"
#: agenda_culturel/models.py:885 #: agenda_culturel/models.py:907
msgid "Categorisation rules" msgid "Categorisation rules"
msgstr "Règles de catégorisation" msgstr "Règles de catégorisation"
#: agenda_culturel/models.py:941 agenda_culturel/models.py:962 #: agenda_culturel/models.py:963 agenda_culturel/models.py:984
msgid "Question" msgid "Question"
msgstr "Question" msgstr "Question"
#: agenda_culturel/models.py:941 agenda_culturel/models.py:964 #: agenda_culturel/models.py:963 agenda_culturel/models.py:986
msgid "Text that will be shown to moderators" msgid "Text that will be shown to moderators"
msgstr "Text tel que présenté aux modérateurices" msgstr "Text tel que présenté aux modérateurices"
#: agenda_culturel/models.py:944 #: agenda_culturel/models.py:966
msgid "Moderation question" msgid "Moderation question"
msgstr "Question de modération" msgstr "Question de modération"
#: agenda_culturel/models.py:945 #: agenda_culturel/models.py:967
msgid "Moderation questions" msgid "Moderation questions"
msgstr "Questions de modération" msgstr "Questions de modération"
#: agenda_culturel/models.py:962 #: agenda_culturel/models.py:984
msgid "Associated question from moderation" msgid "Associated question from moderation"
msgstr "Question associée pour la modération" msgstr "Question associée pour la modération"
#: agenda_culturel/models.py:964 #: agenda_culturel/models.py:986
msgid "Answer" msgid "Answer"
msgstr "Réponse" msgstr "Réponse"
#: agenda_culturel/models.py:966 #: agenda_culturel/models.py:988
msgid "Adds tags" msgid "Adds tags"
msgstr "Ajoute les étiquettes" msgstr "Ajoute les étiquettes"
#: agenda_culturel/models.py:966 #: agenda_culturel/models.py:988
msgid "A list of tags that will be added if you choose this answer." msgid "A list of tags that will be added if you choose this answer."
msgstr "" msgstr ""
"Une liste d'étiquettes qui seront ajoutées si vous choisissez cette réponse." "Une liste d'étiquettes qui seront ajoutées si vous choisissez cette réponse."
#: agenda_culturel/models.py:967 #: agenda_culturel/models.py:989
msgid "Removes tags" msgid "Removes tags"
msgstr "Retire les étiquettes" msgstr "Retire les étiquettes"
#: agenda_culturel/models.py:967 #: agenda_culturel/models.py:989
msgid "A list of tags that will be removed if you choose this answer." msgid "A list of tags that will be removed if you choose this answer."
msgstr "" msgstr ""
"Une liste d'étiquettes qui seront retirées si vous choisissez cette réponse." "Une liste d'étiquettes qui seront retirées si vous choisissez cette réponse."
@ -804,33 +804,36 @@ msgstr ""
msgid "The moderation question has been created with success." msgid "The moderation question has been created with success."
msgstr "La question de modération a été créée avec succès." msgstr "La question de modération a été créée avec succès."
#: agenda_culturel/views.py:1123 agenda_culturel/views.py:1178 #: agenda_culturel/views.py:1112 agenda_culturel/views.py:1167
#: agenda_culturel/views.py:1196
msgid "{} events have been updated." msgid "{} events have been updated."
msgstr "{} événements ont été mis à jour." msgstr "{} événements ont été mis à jour."
#: agenda_culturel/views.py:1125 agenda_culturel/views.py:1180 #: agenda_culturel/views.py:1114 agenda_culturel/views.py:1169
#: agenda_culturel/views.py:1198
msgid "1 event has been updated." msgid "1 event has been updated."
msgstr "1 événement a été mis à jour" msgstr "1 événement a été mis à jour"
#: agenda_culturel/views.py:1127 agenda_culturel/views.py:1182 #: agenda_culturel/views.py:1116 agenda_culturel/views.py:1171
#: agenda_culturel/views.py:1200
msgid "No events have been modified." msgid "No events have been modified."
msgstr "Aucun événement n'a été modifié." msgstr "Aucun événement n'a été modifié."
#: agenda_culturel/views.py:1135 #: agenda_culturel/views.py:1124
msgid "The place has been successfully updated." msgid "The place has been successfully updated."
msgstr "Le lieu a été modifié avec succès." msgstr "Le lieu a été modifié avec succès."
#: agenda_culturel/views.py:1142 #: agenda_culturel/views.py:1131
msgid "The place has been successfully created." msgid "The place has been successfully created."
msgstr "Le lieu a été créé avec succès." msgstr "Le lieu a été créé avec succès."
#: agenda_culturel/views.py:1201 #: agenda_culturel/views.py:1189
msgid "The selected place has been assigned to the event. " msgid "The selected place has been assigned to the event."
msgstr "Le lieu sélectionné a été assigné à l'événement. " msgstr "Le lieu sélectionné a été assigné à l'événement."
#: agenda_culturel/views.py:1203 #: agenda_culturel/views.py:1191
msgid "A new alias has been added to the selected place. " msgid "A new alias has been added to the selected place."
msgstr "Un nouvel alias a été créé pour le lieu sélectionné. " msgstr "Un nouvel alias a été créé pour le lieu sélectionné."
msgid "Recurrent import name" msgid "Recurrent import name"
msgstr "Nome de l'import récurrent" msgstr "Nome de l'import récurrent"

View File

@ -182,6 +182,21 @@ class Place(models.Model):
def match(self, event): def match(self, event):
return event.location in self.aliases return event.location in self.aliases
def associate_matching_events(self):
u_events = Event.objects.filter(exact_location__isnull=True)
to_be_updated = []
# try to find matches
for ue in u_events:
if self.match(ue):
ue.exact_location = self
to_be_updated.append(ue)
continue
# update events with a location
Event.objects.bulk_update(to_be_updated, fields=["exact_location"])
return len(to_be_updated)
def get_all_cities(): def get_all_cities():
try: try:
tags = list([p["city"] for p in Place.objects.values("city").distinct().order_by("city")]) tags = list([p["city"] for p in Place.objects.values("city").distinct().order_by("city")])

View File

@ -1106,18 +1106,7 @@ class UpdatePlaces:
# if required, find all matching events # if required, find all matching events
if form.apply(): if form.apply():
u_events = Event.objects.filter(exact_location__isnull=True) self.nb_applied += p.associate_matching_events()
to_be_updated = []
# try to find matches
for ue in u_events:
if p.match(ue):
ue.exact_location = p
to_be_updated.append(ue)
continue
# update events with a location
Event.objects.bulk_update(to_be_updated, fields=["exact_location"])
self.nb_applied += len(to_be_updated)
if self.nb_applied > 1: if self.nb_applied > 1:
messages.success(self.request, _("{} events have been updated.").format(self.nb_applied)) messages.success(self.request, _("{} events have been updated.").format(self.nb_applied))
@ -1192,16 +1181,25 @@ class UnknownPlaceAddView(PermissionRequiredMixin, SuccessMessageMixin, UpdateVi
template_name = 'agenda_culturel/place_unknown_form.html' template_name = 'agenda_culturel/place_unknown_form.html'
def form_valid(self, form): def form_valid(self, form):
self.modified_event = form.modified_event()
return super().form_valid(form)
def get_success_message(self, cleaned_data): self.modified_event = form.cleaned_data.get('place')
msg = "" result = super().form_valid(form)
if cleaned_data.get("place"):
msg += _('The selected place has been assigned to the event. ') if form.cleaned_data.get('place'):
if cleaned_data.get('add_alias'): messages.success(self.request, _("The selected place has been assigned to the event."))
msg += _('A new alias has been added to the selected place. ') if form.cleaned_data.get("add_alias"):
return msg messages.success(self.request, _("A new alias has been added to the selected place."))
nb_applied = form.cleaned_data.get('place').associate_matching_events()
if nb_applied > 1:
messages.success(self.request, _("{} events have been updated.").format(nb_applied))
elif nb_applied == 1:
messages.success(self.request, _("1 event has been updated."))
else:
messages.info(self.request, _("No events have been modified."))
return result
def get_success_url(self): def get_success_url(self):
if self.modified_event: if self.modified_event: