Ajout d'un moyen de lancer tous les import

This commit is contained in:
Jean-Marie Favreau 2024-04-28 14:31:16 +02:00
parent 9a7733566c
commit 42cabcf497
6 changed files with 211 additions and 154 deletions

View File

@ -151,6 +151,15 @@ def daily_imports(self):
for imp in imports: for imp in imports:
run_recurrent_import.delay(imp.pk) run_recurrent_import.delay(imp.pk)
@app.task(bind=True)
def run_all_recurrent_imports(self):
from agenda_culturel.models import RecurrentImport
logger.info("Imports complets")
imports = RecurrentImport.objects.all()
for imp in imports:
run_recurrent_import.delay(imp.pk)
@app.task(bind=True) @app.task(bind=True)
def weekly_imports(self): def weekly_imports(self):

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-28 10:25+0000\n" "POT-Creation-Date: 2024-04-28 12:29+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"
@ -33,7 +33,7 @@ msgstr "JSON dans le format attendu pour l'import"
msgid "Apply category {} to the event {}" msgid "Apply category {} to the event {}"
msgstr "Appliquer la catégorie {} à l'événement {}" msgstr "Appliquer la catégorie {} à l'événement {}"
#: agenda_culturel/forms.py:298 agenda_culturel/models.py:167 #: agenda_culturel/forms.py:298 agenda_culturel/models.py:186
msgid "Place" msgid "Place"
msgstr "Lieu" msgstr "Lieu"
@ -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:159 agenda_culturel/models.py:815 #: agenda_culturel/models.py:178 agenda_culturel/models.py:843
#: agenda_culturel/models.py:854 #: agenda_culturel/models.py:882
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:227 #: agenda_culturel/models.py:115 agenda_culturel/models.py:246
#: agenda_culturel/models.py:866 agenda_culturel/models.py:917 #: agenda_culturel/models.py:894 agenda_culturel/models.py:945
msgid "Category" msgid "Category"
msgstr "Catégorie" msgstr "Catégorie"
@ -114,31 +114,31 @@ msgstr "Catégorie"
msgid "Categories" msgid "Categories"
msgstr "Catégories" msgstr "Catégories"
#: agenda_culturel/models.py:159 #: agenda_culturel/models.py:178
msgid "Name of the place" msgid "Name of the place"
msgstr "Nom du lieu" msgstr "Nom du lieu"
#: agenda_culturel/models.py:160 #: agenda_culturel/models.py:179
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: agenda_culturel/models.py:160 #: agenda_culturel/models.py:179
msgid "Address of this place (without city name)" msgid "Address of this place (without city name)"
msgstr "Adresse de ce lieu (sans le nom de la ville)" msgstr "Adresse de ce lieu (sans le nom de la ville)"
#: agenda_culturel/models.py:161 #: agenda_culturel/models.py:180
msgid "City" msgid "City"
msgstr "Ville" msgstr "Ville"
#: agenda_culturel/models.py:161 #: agenda_culturel/models.py:180
msgid "City name" msgid "City name"
msgstr "Nom de la ville" msgstr "Nom de la ville"
#: agenda_culturel/models.py:164 #: agenda_culturel/models.py:183
msgid "Alternative names" msgid "Alternative names"
msgstr "Noms alternatifs" msgstr "Noms alternatifs"
#: agenda_culturel/models.py:164 #: agenda_culturel/models.py:183
msgid "" msgid ""
"Alternative names or addresses used to match a place with the free-form " "Alternative names or addresses used to match a place with the free-form "
"location of an event." "location of an event."
@ -146,77 +146,77 @@ msgstr ""
"Noms et adresses alternatives qui seront utilisées pour associer une adresse " "Noms et adresses alternatives qui seront utilisées pour associer une adresse "
"avec la localisation en forme libre d'un événement" "avec la localisation en forme libre d'un événement"
#: agenda_culturel/models.py:168 #: agenda_culturel/models.py:187
msgid "Places" msgid "Places"
msgstr "Lieux" msgstr "Lieux"
#: agenda_culturel/models.py:211 agenda_culturel/models.py:864 #: agenda_culturel/models.py:230 agenda_culturel/models.py:892
msgid "Published" msgid "Published"
msgstr "Publié" msgstr "Publié"
#: agenda_culturel/models.py:212 #: agenda_culturel/models.py:231
msgid "Draft" msgid "Draft"
msgstr "Brouillon" msgstr "Brouillon"
#: agenda_culturel/models.py:213 #: agenda_culturel/models.py:232
msgid "Trash" msgid "Trash"
msgstr "Corbeille" msgstr "Corbeille"
#: agenda_culturel/models.py:223 #: agenda_culturel/models.py:242
msgid "Title" msgid "Title"
msgstr "Titre" msgstr "Titre"
#: agenda_culturel/models.py:223 #: agenda_culturel/models.py:242
msgid "Short title" msgid "Short title"
msgstr "Titre court" msgstr "Titre court"
#: agenda_culturel/models.py:225 agenda_culturel/models.py:901 #: agenda_culturel/models.py:244 agenda_culturel/models.py:929
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: agenda_culturel/models.py:227 #: agenda_culturel/models.py:246
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:229 #: agenda_culturel/models.py:248
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:230 #: agenda_culturel/models.py:249
msgid "Starting time" msgid "Starting time"
msgstr "Heure de début" msgstr "Heure de début"
#: agenda_culturel/models.py:232 #: agenda_culturel/models.py:251
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:232 #: agenda_culturel/models.py:251
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:233 #: agenda_culturel/models.py:252
msgid "Final time" msgid "Final time"
msgstr "Heure de fin" msgstr "Heure de fin"
#: agenda_culturel/models.py:235 #: agenda_culturel/models.py:254
msgid "Recurrence" msgid "Recurrence"
msgstr "Récurrence" msgstr "Récurrence"
#: agenda_culturel/models.py:237 agenda_culturel/models.py:865 #: agenda_culturel/models.py:256 agenda_culturel/models.py:893
msgid "Location" msgid "Location"
msgstr "Localisation" msgstr "Localisation"
#: agenda_culturel/models.py:237 #: agenda_culturel/models.py:256
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:238 #: agenda_culturel/models.py:257
msgid "Location (free form)" msgid "Location (free form)"
msgstr "Localisation (forme libre)" msgstr "Localisation (forme libre)"
#: agenda_culturel/models.py:238 #: agenda_culturel/models.py:257
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:240 #: agenda_culturel/models.py:259
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
#: agenda_culturel/models.py:240 #: agenda_culturel/models.py:259
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:242 #: agenda_culturel/models.py:261
msgid "Illustration (local image)" msgid "Illustration (local image)"
msgstr "Illustration (image locale)" msgstr "Illustration (image locale)"
#: agenda_culturel/models.py:242 #: agenda_culturel/models.py:261
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:244 #: agenda_culturel/models.py:263
msgid "Illustration" msgid "Illustration"
msgstr "Illustration" msgstr "Illustration"
#: agenda_culturel/models.py:244 #: agenda_culturel/models.py:263
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:245 #: agenda_culturel/models.py:264
msgid "Illustration description" msgid "Illustration description"
msgstr "Description de l'illustration" msgstr "Description de l'illustration"
#: agenda_culturel/models.py:245 #: agenda_culturel/models.py:264
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:247 #: agenda_culturel/models.py:266
msgid "Importation source" msgid "Importation source"
msgstr "Source d'importation" msgstr "Source d'importation"
#: agenda_culturel/models.py:247 #: agenda_culturel/models.py:266
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:248 #: agenda_culturel/models.py:267
msgid "UUIDs" msgid "UUIDs"
msgstr "UUIDs" msgstr "UUIDs"
#: agenda_culturel/models.py:248 #: agenda_culturel/models.py:267
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:249 #: agenda_culturel/models.py:268
msgid "URLs" msgid "URLs"
msgstr "URLs" msgstr "URLs"
#: agenda_culturel/models.py:249 #: agenda_culturel/models.py:268
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:251 #: agenda_culturel/models.py:270
msgid "Tags" msgid "Tags"
msgstr "Étiquettes" msgstr "Étiquettes"
#: agenda_culturel/models.py:251 #: agenda_culturel/models.py:270
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:253 #: agenda_culturel/models.py:272
msgid "Possibly duplicated" msgid "Possibly duplicated"
msgstr "Possibles doublons" msgstr "Possibles doublons"
#: agenda_culturel/models.py:294 #: agenda_culturel/models.py:313
msgid "Event" msgid "Event"
msgstr "Événement" msgstr "Événement"
#: agenda_culturel/models.py:295 #: agenda_culturel/models.py:314
msgid "Events" msgid "Events"
msgstr "Événements" msgstr "Événements"
#: agenda_culturel/models.py:811 #: agenda_culturel/models.py:839
msgid "Contact message" msgid "Contact message"
msgstr "Message de contact" msgstr "Message de contact"
#: agenda_culturel/models.py:812 #: agenda_culturel/models.py:840
msgid "Contact messages" msgid "Contact messages"
msgstr "Messages de contact" msgstr "Messages de contact"
#: agenda_culturel/models.py:814 #: agenda_culturel/models.py:842
msgid "Subject" msgid "Subject"
msgstr "Sujet" msgstr "Sujet"
#: agenda_culturel/models.py:814 #: agenda_culturel/models.py:842
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:815 #: agenda_culturel/models.py:843
msgid "Your name" msgid "Your name"
msgstr "Votre nom" msgstr "Votre nom"
#: agenda_culturel/models.py:816 #: agenda_culturel/models.py:844
msgid "Email address" msgid "Email address"
msgstr "Adresse email" msgstr "Adresse email"
#: agenda_culturel/models.py:816 #: agenda_culturel/models.py:844
msgid "Your email address" msgid "Your email address"
msgstr "Votre adresse email" msgstr "Votre adresse email"
#: agenda_culturel/models.py:817 #: agenda_culturel/models.py:845
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
#: agenda_culturel/models.py:817 #: agenda_culturel/models.py:845
msgid "Your message" msgid "Your message"
msgstr "Votre message" msgstr "Votre message"
#: agenda_culturel/models.py:821 agenda_culturel/views.py:470 #: agenda_culturel/models.py:849 agenda_culturel/views.py:470
msgid "Closed" msgid "Closed"
msgstr "Fermé" msgstr "Fermé"
#: agenda_culturel/models.py:821 #: agenda_culturel/models.py:849
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:822 #: agenda_culturel/models.py:850
msgid "Comments" msgid "Comments"
msgstr "Commentaires" msgstr "Commentaires"
#: agenda_culturel/models.py:822 #: agenda_culturel/models.py:850
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:832 agenda_culturel/models.py:899 #: agenda_culturel/models.py:860 agenda_culturel/models.py:927
msgid "Recurrent import" msgid "Recurrent import"
msgstr "Import récurrent" msgstr "Import récurrent"
#: agenda_culturel/models.py:833 #: agenda_culturel/models.py:861
msgid "Recurrent imports" msgid "Recurrent imports"
msgstr "Imports récurrents" msgstr "Imports récurrents"
#: agenda_culturel/models.py:837 #: agenda_culturel/models.py:865
msgid "ical" msgid "ical"
msgstr "ical" msgstr "ical"
#: agenda_culturel/models.py:838 #: agenda_culturel/models.py:866
msgid "ical no busy" msgid "ical no busy"
msgstr "ical sans busy" msgstr "ical sans busy"
#: agenda_culturel/models.py:839 #: agenda_culturel/models.py:867
msgid "ical no VC" msgid "ical no VC"
msgstr "ical sans VC" msgstr "ical sans VC"
#: agenda_culturel/models.py:840 #: agenda_culturel/models.py:868
msgid "lacoope.org" msgid "lacoope.org"
msgstr "lacoope.org" msgstr "lacoope.org"
#: agenda_culturel/models.py:841 #: agenda_culturel/models.py:869
msgid "la comédie" msgid "la comédie"
msgstr "la comédie" msgstr "la comédie"
#: agenda_culturel/models.py:842 #: agenda_culturel/models.py:870
msgid "le fotomat" msgid "le fotomat"
msgstr "le fotomat" msgstr "le fotomat"
#: agenda_culturel/models.py:843 #: agenda_culturel/models.py:871
msgid "la puce à loreille" msgid "la puce à loreille"
msgstr "la puce à loreille" msgstr "la puce à loreille"
#: agenda_culturel/models.py:846 #: agenda_culturel/models.py:874
msgid "simple" msgid "simple"
msgstr "simple" msgstr "simple"
#: agenda_culturel/models.py:847 #: agenda_culturel/models.py:875
msgid "Headless Chromium" msgid "Headless Chromium"
msgstr "chromium sans interface" msgstr "chromium sans interface"
#: agenda_culturel/models.py:851 #: agenda_culturel/models.py:879
msgid "daily" msgid "daily"
msgstr "chaque jour" msgstr "chaque jour"
#: agenda_culturel/models.py:852 #: agenda_culturel/models.py:880
msgid "weekly" msgid "weekly"
msgstr "chaque semaine" msgstr "chaque semaine"
#: agenda_culturel/models.py:854 #: agenda_culturel/models.py:882
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:855 #: agenda_culturel/models.py:883
msgid "Processor" msgid "Processor"
msgstr "Processeur" msgstr "Processeur"
#: agenda_culturel/models.py:856 #: agenda_culturel/models.py:884
msgid "Downloader" msgid "Downloader"
msgstr "Téléchargeur" msgstr "Téléchargeur"
#: agenda_culturel/models.py:858 #: agenda_culturel/models.py:886
msgid "Import recurrence" msgid "Import recurrence"
msgstr "Récurrence d'import" msgstr "Récurrence d'import"
#: agenda_culturel/models.py:861 #: agenda_culturel/models.py:889
msgid "Source" msgid "Source"
msgstr "Source" msgstr "Source"
#: agenda_culturel/models.py:861 #: agenda_culturel/models.py:889
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:862 #: agenda_culturel/models.py:890
msgid "Browsable url" msgid "Browsable url"
msgstr "URL navigable" msgstr "URL navigable"
#: agenda_culturel/models.py:862 #: agenda_culturel/models.py:890
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:864 #: agenda_culturel/models.py:892
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:865 #: agenda_culturel/models.py:893
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:866 #: agenda_culturel/models.py:894
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:867 #: agenda_culturel/models.py:895
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:867 #: agenda_culturel/models.py:895
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:886 #: agenda_culturel/models.py:914
msgid "Running" msgid "Running"
msgstr "En cours" msgstr "En cours"
#: agenda_culturel/models.py:887 #: agenda_culturel/models.py:915
msgid "Canceled" msgid "Canceled"
msgstr "Annulé" msgstr "Annulé"
#: agenda_culturel/models.py:888 #: agenda_culturel/models.py:916
msgid "Success" msgid "Success"
msgstr "Succès" msgstr "Succès"
#: agenda_culturel/models.py:889 #: agenda_culturel/models.py:917
msgid "Failed" msgid "Failed"
msgstr "Erreur" msgstr "Erreur"
#: agenda_culturel/models.py:892 #: agenda_culturel/models.py:920
msgid "Batch importation" msgid "Batch importation"
msgstr "Importation par lot" msgstr "Importation par lot"
#: agenda_culturel/models.py:893 #: agenda_culturel/models.py:921
msgid "Batch importations" msgid "Batch importations"
msgstr "Importations par lot" msgstr "Importations par lot"
#: agenda_culturel/models.py:899 #: agenda_culturel/models.py:927
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:903 #: agenda_culturel/models.py:931
msgid "Error message" msgid "Error message"
msgstr "Votre message" msgstr "Votre message"
#: agenda_culturel/models.py:905 #: agenda_culturel/models.py:933
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:906 #: agenda_culturel/models.py:934
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:907 #: agenda_culturel/models.py:935
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:908 #: agenda_culturel/models.py:936
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:915 #: agenda_culturel/models.py:943
msgid "Weight" msgid "Weight"
msgstr "Poids" msgstr "Poids"
#: agenda_culturel/models.py:915 #: agenda_culturel/models.py:943
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:917 #: agenda_culturel/models.py:945
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:919 #: agenda_culturel/models.py:947
msgid "Contained in the title" msgid "Contained in the title"
msgstr "Contenu dans le titre" msgstr "Contenu dans le titre"
#: agenda_culturel/models.py:919 #: agenda_culturel/models.py:947
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:920 #: agenda_culturel/models.py:948
msgid "Exact title extract" msgid "Exact title extract"
msgstr "Extrait exact du titre" msgstr "Extrait exact du titre"
#: agenda_culturel/models.py:920 #: agenda_culturel/models.py:948
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:922 #: agenda_culturel/models.py:950
msgid "Contained in the description" msgid "Contained in the description"
msgstr "Contenu dans la description" msgstr "Contenu dans la description"
#: agenda_culturel/models.py:922 #: agenda_culturel/models.py:950
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:923 #: agenda_culturel/models.py:951
msgid "Exact description extract" msgid "Exact description extract"
msgstr "Extrait exact de description" msgstr "Extrait exact de description"
#: agenda_culturel/models.py:923 #: agenda_culturel/models.py:951
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:925 #: agenda_culturel/models.py:953
msgid "Contained in the location" msgid "Contained in the location"
msgstr "Contenu dans la localisation" msgstr "Contenu dans la localisation"
#: agenda_culturel/models.py:925 #: agenda_culturel/models.py:953
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:926 #: agenda_culturel/models.py:954
msgid "Exact location extract" msgid "Exact location extract"
msgstr "Extrait exact de localisation" msgstr "Extrait exact de localisation"
#: agenda_culturel/models.py:926 #: agenda_culturel/models.py:954
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:929 #: agenda_culturel/models.py:957
msgid "Categorisation rule" msgid "Categorisation rule"
msgstr "Règle de catégorisation" msgstr "Règle de catégorisation"
#: agenda_culturel/models.py:930 #: agenda_culturel/models.py:958
msgid "Categorisation rules" msgid "Categorisation rules"
msgstr "Règles de catégorisation" msgstr "Règles de catégorisation"
#: agenda_culturel/models.py:986 agenda_culturel/models.py:1007 #: agenda_culturel/models.py:1014 agenda_culturel/models.py:1035
msgid "Question" msgid "Question"
msgstr "Question" msgstr "Question"
#: agenda_culturel/models.py:986 agenda_culturel/models.py:1009 #: agenda_culturel/models.py:1014 agenda_culturel/models.py:1037
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:989 #: agenda_culturel/models.py:1017
msgid "Moderation question" msgid "Moderation question"
msgstr "Question de modération" msgstr "Question de modération"
#: agenda_culturel/models.py:990 #: agenda_culturel/models.py:1018
msgid "Moderation questions" msgid "Moderation questions"
msgstr "Questions de modération" msgstr "Questions de modération"
#: agenda_culturel/models.py:1007 #: agenda_culturel/models.py:1035
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:1009 #: agenda_culturel/models.py:1037
msgid "Answer" msgid "Answer"
msgstr "Réponse" msgstr "Réponse"
#: agenda_culturel/models.py:1011 #: agenda_culturel/models.py:1039
msgid "Adds tags" msgid "Adds tags"
msgstr "Ajoute les étiquettes" msgstr "Ajoute les étiquettes"
#: agenda_culturel/models.py:1011 #: agenda_culturel/models.py:1039
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:1012 #: agenda_culturel/models.py:1040
msgid "Removes tags" msgid "Removes tags"
msgstr "Retire les étiquettes" msgstr "Retire les étiquettes"
#: agenda_culturel/models.py:1012 #: agenda_culturel/models.py:1040
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."
@ -735,15 +735,19 @@ msgstr "L'import récurrent a été supprimé avec succès"
msgid "The import has been launched." msgid "The import has been launched."
msgstr "L'import a été lancé" msgstr "L'import a été lancé"
#: agenda_culturel/views.py:799 #: agenda_culturel/views.py:753
msgid "Imports has been launched."
msgstr "Les imports ont été lancés"
#: agenda_culturel/views.py:814
msgid "The merge has been successfully completed." msgid "The merge has been successfully completed."
msgstr "La fusion a été réalisée avec succès." msgstr "La fusion a été réalisée avec succès."
#: agenda_culturel/views.py:829 #: agenda_culturel/views.py:844
msgid "Events have been marked as unduplicated." msgid "Events have been marked as unduplicated."
msgstr "Les événements ont été marqués comme non dupliqués." msgstr "Les événements ont été marqués comme non dupliqués."
#: agenda_culturel/views.py:846 #: agenda_culturel/views.py:861
msgid "" msgid ""
"The selected event has been retained, while the other has been moved to the " "The selected event has been retained, while the other has been moved to the "
"recycle bin." "recycle bin."
@ -751,7 +755,7 @@ msgstr ""
"L'événement sélectionné a été conservé, l'autre a été déplacé dans la " "L'événement sélectionné a été conservé, l'autre a été déplacé dans la "
"corbeille." "corbeille."
#: agenda_culturel/views.py:848 #: agenda_culturel/views.py:863
msgid "" msgid ""
"The selected event has been retained, while the others have been moved to " "The selected event has been retained, while the others have been moved to "
"the recycle bin." "the recycle bin."
@ -759,19 +763,19 @@ msgstr ""
"L'événement sélectionné a été conservé, les autres ont été déplacés dans la " "L'événement sélectionné a été conservé, les autres ont été déplacés dans la "
"corbeille." "corbeille."
#: agenda_culturel/views.py:854 #: agenda_culturel/views.py:869
msgid "The event has been withdrawn from the group and made independent." 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." msgstr "L'événement a été retiré du groupe et rendu indépendant."
#: agenda_culturel/views.py:877 #: agenda_culturel/views.py:893
msgid "Cleaning up duplicates: {} item(s) removed." msgid "Cleaning up duplicates: {} item(s) removed."
msgstr "Nettoyage des dupliqués: {} élément(s) supprimés." msgstr "Nettoyage des dupliqués: {} élément(s) supprimés."
#: agenda_culturel/views.py:905 #: agenda_culturel/views.py:921
msgid "The event was successfully duplicated." msgid "The event was successfully duplicated."
msgstr "L'événement a été marqué dupliqué avec succès." msgstr "L'événement a été marqué dupliqué avec succès."
#: agenda_culturel/views.py:908 #: agenda_culturel/views.py:924
msgid "" msgid ""
"The event has been successfully flagged as a duplicate. The moderation team " "The event has been successfully flagged as a duplicate. The moderation team "
"will deal with your suggestion shortly." "will deal with your suggestion shortly."
@ -779,63 +783,63 @@ msgstr ""
"L'événement a été signalé comme dupliqué avec succès. Votre suggestion sera " "L'événement a été signalé comme dupliqué avec succès. Votre suggestion sera "
"prochainement prise en charge par l'équipe de modération." "prochainement prise en charge par l'équipe de modération."
#: agenda_culturel/views.py:947 #: agenda_culturel/views.py:963
msgid "The categorisation rule has been successfully modified." msgid "The categorisation rule has been successfully modified."
msgstr "La règle de catégorisation a été modifiée avec succès." msgstr "La règle de catégorisation a été modifiée avec succès."
#: agenda_culturel/views.py:954 #: agenda_culturel/views.py:970
msgid "The categorisation rule has been successfully deleted." msgid "The categorisation rule has been successfully deleted."
msgstr "La règle de catégorisation a été supprimée avec succès" msgstr "La règle de catégorisation a été supprimée avec succès"
#: agenda_culturel/views.py:974 agenda_culturel/views.py:1003 #: agenda_culturel/views.py:990 agenda_culturel/views.py:1019
msgid "The rules were successfully applied and 1 event was categorised." msgid "The rules were successfully applied and 1 event was categorised."
msgstr "" msgstr ""
"Les règles ont été appliquées avec succès et 1 événement a été catégorisé" "Les règles ont été appliquées avec succès et 1 événement a été catégorisé"
#: agenda_culturel/views.py:976 agenda_culturel/views.py:1005 #: agenda_culturel/views.py:992 agenda_culturel/views.py:1021
msgid "The rules were successfully applied and {} events were categorised." msgid "The rules were successfully applied and {} events were categorised."
msgstr "" msgstr ""
"Les règles ont été appliquées avec succès et {} événements ont été " "Les règles ont été appliquées avec succès et {} événements ont été "
"catégorisés" "catégorisés"
#: agenda_culturel/views.py:978 agenda_culturel/views.py:1007 #: agenda_culturel/views.py:994 agenda_culturel/views.py:1023
msgid "The rules were successfully applied and no events were categorised." msgid "The rules were successfully applied and no events were categorised."
msgstr "" msgstr ""
"Les règles ont été appliquées avec succès et aucun événement n'a été " "Les règles ont été appliquées avec succès et aucun événement n'a été "
"catégorisé" "catégorisé"
#: agenda_culturel/views.py:1035 #: agenda_culturel/views.py:1051
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:1116 agenda_culturel/views.py:1172 #: agenda_culturel/views.py:1132 agenda_culturel/views.py:1188
#: agenda_culturel/views.py:1201 #: agenda_culturel/views.py:1217
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:1118 agenda_culturel/views.py:1174 #: agenda_culturel/views.py:1134 agenda_culturel/views.py:1190
#: agenda_culturel/views.py:1203 #: agenda_culturel/views.py:1219
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:1120 agenda_culturel/views.py:1176 #: agenda_culturel/views.py:1136 agenda_culturel/views.py:1192
#: agenda_culturel/views.py:1205 #: agenda_culturel/views.py:1221
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:1128 #: agenda_culturel/views.py:1144
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:1135 #: agenda_culturel/views.py:1151
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:1194 #: agenda_culturel/views.py:1210
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:1196 #: agenda_culturel/views.py:1212
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é."

View File

@ -12,7 +12,10 @@
<div class="grid two-columns"> <div class="grid two-columns">
<article> <article>
<header> <header>
<a class="slide-buttons" href="{% url 'add_rimport'%}" role="button">Ajouter {% picto_from_name "plus-circle" %}</a> <div class="slide-buttons">
<a href="{% url 'run_all_rimports'%}" role="button">Exécuter tous</a>
<a href="{% url 'add_rimport'%}" role="button">Ajouter {% picto_from_name "plus-circle" %}</a>
</div>
<h1>Importations récurrentes</h1> <h1>Importations récurrentes</h1>
</header> </header>

View File

@ -0,0 +1,25 @@
{% extends "agenda_culturel/page.html" %}
{% block title %}Lancer tous les imports{% endblock %}
{% block content %}
<article>
<header>
<h1>Lancement de tous les imports</h1>
</header>
<form method="post">{% csrf_token %}
<p>Êtes-vous sûr·e de vouloir lancer tous les imports récurrent&nbsp;?</p>
{{ form }}
<footer>
<div class="grid buttons">
<a href="{% if request.META.HTTP_REFERER %}{{ request.META.HTTP_REFERER }}{% else %}{% url 'recurrent_imports' %}{% endif %}" role="button" class="secondary">Annuler</a>
<input type="submit" value="Confirmer">
</div>
</footer>
</form>
</article>
{% endblock %}

View File

@ -43,6 +43,7 @@ urlpatterns = [
path("imports/add", add_import, name="add_import"), path("imports/add", add_import, name="add_import"),
path("imports/<int:pk>/cancel", cancel_import, name="cancel_import"), path("imports/<int:pk>/cancel", cancel_import, name="cancel_import"),
path("rimports/", recurrent_imports, name="recurrent_imports"), path("rimports/", recurrent_imports, name="recurrent_imports"),
path("rimports/run", run_all_rimports, name="run_all_rimports"),
path("rimports/add", RecurrentImportCreateView.as_view(), name="add_rimport"), path("rimports/add", RecurrentImportCreateView.as_view(), name="add_rimport"),
path("rimports/<int:pk>/view", view_rimport, name="view_rimport"), path("rimports/<int:pk>/view", view_rimport, name="view_rimport"),
path("rimports/<int:pk>/edit", RecurrentImportUpdateView.as_view(), name="edit_rimport"), path("rimports/<int:pk>/edit", RecurrentImportUpdateView.as_view(), name="edit_rimport"),

View File

@ -36,7 +36,7 @@ from .import_tasks.importer import URL2Events
from .import_tasks.extractor import Extractor from .import_tasks.extractor import Extractor
from .import_tasks.downloader import ChromiumHeadlessDownloader from .import_tasks.downloader import ChromiumHeadlessDownloader
from .celery import app as celery_app, import_events_from_json, run_recurrent_import from .celery import app as celery_app, import_events_from_json, run_recurrent_import, run_all_recurrent_imports
import unicodedata import unicodedata
import logging import logging
@ -741,6 +741,21 @@ def run_rimport(request, pk):
else: else:
return render(request, 'agenda_culturel/run_rimport_confirm.html', {"object": rimport }) return render(request, 'agenda_culturel/run_rimport_confirm.html', {"object": rimport })
@login_required(login_url="/accounts/login/")
@permission_required(['agenda_culturel.view_recurrentimport', 'agenda_culturel.run_recurrentimport'])
def run_all_rimports(request):
if request.method == 'POST':
# run recurrent import
result = run_all_recurrent_imports.delay()
messages.success(request, _("Imports has been launched."))
return HttpResponseRedirect(reverse_lazy("recurrent_imports"))
else:
return render(request, 'agenda_culturel/run_all_rimports_confirm.html')
######################### #########################
## duplicated events ## duplicated events
######################### #########################