Améliorations diverses
- la recherche ne montre pas les événements masqués au utilisateurs non connectés - une page administration d'accueil - corrections de typo html - affichage du caractère masqué ou version représentative dans les titres - amélioration des outils de filtre des événements dans la partie administrative
This commit is contained in:
parent
d4a12cadcd
commit
84123e8bb9
@ -2,13 +2,13 @@
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Jean-Marie Favreau <jeanmarie.favreau@free.fr>, 2023.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: agenda_culturel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-11-10 20:19+0100\n"
|
||||
"POT-Creation-Date: 2024-11-11 22:18+0100\n"
|
||||
"PO-Revision-Date: 2023-10-29 14:16+0000\n"
|
||||
"Last-Translator: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
|
||||
"Language-Team: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
|
||||
@ -92,7 +92,7 @@ msgstr "Soir"
|
||||
|
||||
#: agenda_culturel/forms.py:47 agenda_culturel/models.py:165
|
||||
#: agenda_culturel/models.py:191 agenda_culturel/models.py:446
|
||||
#: agenda_culturel/models.py:1570 agenda_culturel/models.py:1675
|
||||
#: agenda_culturel/models.py:1592 agenda_culturel/models.py:1697
|
||||
msgid "Category"
|
||||
msgstr "Catégorie"
|
||||
|
||||
@ -109,70 +109,70 @@ msgstr "La date de fin doit être après la date de début."
|
||||
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:168
|
||||
#: agenda_culturel/forms.py:170
|
||||
msgid "JSON in the format expected for the import."
|
||||
msgstr "JSON dans le format attendu pour l'import"
|
||||
|
||||
#: agenda_culturel/forms.py:188
|
||||
#: agenda_culturel/forms.py:190
|
||||
msgid " (locally modified version)"
|
||||
msgstr " (version modifiée localement)"
|
||||
|
||||
#: agenda_culturel/forms.py:191
|
||||
#: agenda_culturel/forms.py:193
|
||||
msgid " (synchronized on import version)"
|
||||
msgstr " (version synchronisée sur l'import)"
|
||||
|
||||
#: agenda_culturel/forms.py:195
|
||||
#: agenda_culturel/forms.py:197
|
||||
msgid "Select {} as representative version."
|
||||
msgstr "Sélectionner {} comme version représentative"
|
||||
|
||||
#: agenda_culturel/forms.py:204
|
||||
#: agenda_culturel/forms.py:206
|
||||
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:211
|
||||
#: agenda_culturel/forms.py:213
|
||||
msgid " Warning: a version is already locally modified."
|
||||
msgstr " Attention: une version a déjà été modifiée localement."
|
||||
|
||||
#: agenda_culturel/forms.py:216
|
||||
#: agenda_culturel/forms.py:218
|
||||
msgid "Create a new version by merging (interactive mode)."
|
||||
msgstr "Créer une nouvelle version par fusion (mode interactif)."
|
||||
|
||||
#: agenda_culturel/forms.py:223
|
||||
#: agenda_culturel/forms.py:225
|
||||
msgid "Make {} independent."
|
||||
msgstr "Rendre {} indépendant."
|
||||
|
||||
#: agenda_culturel/forms.py:225
|
||||
#: agenda_culturel/forms.py:227
|
||||
msgid "Make all versions independent."
|
||||
msgstr "Rendre toutes les versions indépendantes."
|
||||
|
||||
#: agenda_culturel/forms.py:281
|
||||
#: agenda_culturel/forms.py:283
|
||||
msgid "Value of the selected version"
|
||||
msgstr "Valeur de la version sélectionnée"
|
||||
|
||||
#: agenda_culturel/forms.py:283 agenda_culturel/forms.py:287
|
||||
#: agenda_culturel/forms.py:285 agenda_culturel/forms.py:289
|
||||
msgid "Value of version {}"
|
||||
msgstr "Valeur de la version {}"
|
||||
|
||||
#: agenda_culturel/forms.py:474
|
||||
#: agenda_culturel/forms.py:476
|
||||
msgid "Apply category {} to the event {}"
|
||||
msgstr "Appliquer la catégorie {} à l'événement {}"
|
||||
|
||||
#: agenda_culturel/forms.py:489 agenda_culturel/models.py:370
|
||||
#: agenda_culturel/models.py:1727
|
||||
#: agenda_culturel/forms.py:491 agenda_culturel/models.py:370
|
||||
#: agenda_culturel/models.py:1749
|
||||
msgid "Place"
|
||||
msgstr "Lieu"
|
||||
|
||||
#: agenda_culturel/forms.py:491
|
||||
#: agenda_culturel/forms.py:493
|
||||
msgid "Create a missing place"
|
||||
msgstr "Créer un lieu manquant"
|
||||
|
||||
#: agenda_culturel/forms.py:501
|
||||
#: agenda_culturel/forms.py:503
|
||||
msgid "Add \"{}\" to the aliases of the place"
|
||||
msgstr "Ajouter « {} » aux alias du lieu"
|
||||
|
||||
#: agenda_culturel/forms.py:528
|
||||
#: agenda_culturel/forms.py:530
|
||||
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 "
|
||||
@ -180,8 +180,8 @@ msgstr ""
|
||||
|
||||
#: agenda_culturel/models.py:49 agenda_culturel/models.py:94
|
||||
#: agenda_culturel/models.py:172 agenda_culturel/models.py:332
|
||||
#: agenda_culturel/models.py:349 agenda_culturel/models.py:1442
|
||||
#: agenda_culturel/models.py:1516
|
||||
#: agenda_culturel/models.py:349 agenda_culturel/models.py:1464
|
||||
#: agenda_culturel/models.py:1538
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
@ -335,7 +335,7 @@ msgstr ""
|
||||
msgid "Places"
|
||||
msgstr "Lieux"
|
||||
|
||||
#: agenda_culturel/models.py:424 agenda_culturel/models.py:1557
|
||||
#: agenda_culturel/models.py:424 agenda_culturel/models.py:1579
|
||||
msgid "Published"
|
||||
msgstr "Publié"
|
||||
|
||||
@ -355,7 +355,7 @@ msgstr "Titre"
|
||||
msgid "Short title"
|
||||
msgstr "Titre court"
|
||||
|
||||
#: agenda_culturel/models.py:441 agenda_culturel/models.py:1643
|
||||
#: agenda_culturel/models.py:441 agenda_culturel/models.py:1665
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@ -389,7 +389,7 @@ msgstr "Heure de fin"
|
||||
msgid "Recurrence"
|
||||
msgstr "Récurrence"
|
||||
|
||||
#: agenda_culturel/models.py:481 agenda_culturel/models.py:1562
|
||||
#: agenda_culturel/models.py:481 agenda_culturel/models.py:1584
|
||||
msgid "Location"
|
||||
msgstr "Localisation"
|
||||
|
||||
@ -481,139 +481,139 @@ msgstr "Événement"
|
||||
msgid "Events"
|
||||
msgstr "Événements"
|
||||
|
||||
#: agenda_culturel/models.py:1433
|
||||
#: agenda_culturel/models.py:1455
|
||||
msgid "Contact message"
|
||||
msgstr "Message de contact"
|
||||
|
||||
#: agenda_culturel/models.py:1434
|
||||
#: agenda_culturel/models.py:1456
|
||||
msgid "Contact messages"
|
||||
msgstr "Messages de contact"
|
||||
|
||||
#: agenda_culturel/models.py:1437
|
||||
#: agenda_culturel/models.py:1459
|
||||
msgid "Subject"
|
||||
msgstr "Sujet"
|
||||
|
||||
#: agenda_culturel/models.py:1438
|
||||
#: agenda_culturel/models.py:1460
|
||||
msgid "The subject of your message"
|
||||
msgstr "Sujet de votre message"
|
||||
|
||||
#: agenda_culturel/models.py:1443
|
||||
#: agenda_culturel/models.py:1465
|
||||
msgid "Your name"
|
||||
msgstr "Votre nom"
|
||||
|
||||
#: agenda_culturel/models.py:1449
|
||||
#: agenda_culturel/models.py:1471
|
||||
msgid "Email address"
|
||||
msgstr "Adresse email"
|
||||
|
||||
#: agenda_culturel/models.py:1450
|
||||
#: agenda_culturel/models.py:1472
|
||||
msgid "Your email address"
|
||||
msgstr "Votre adresse email"
|
||||
|
||||
#: agenda_culturel/models.py:1455
|
||||
#: agenda_culturel/models.py:1477
|
||||
msgid "Message"
|
||||
msgstr "Message"
|
||||
|
||||
#: agenda_culturel/models.py:1455
|
||||
#: agenda_culturel/models.py:1477
|
||||
msgid "Your message"
|
||||
msgstr "Votre message"
|
||||
|
||||
#: agenda_culturel/models.py:1460 agenda_culturel/views.py:981
|
||||
#: agenda_culturel/models.py:1482 agenda_culturel/views.py:1005
|
||||
msgid "Spam"
|
||||
msgstr "Spam"
|
||||
|
||||
#: agenda_culturel/models.py:1461
|
||||
#: agenda_culturel/models.py:1483
|
||||
msgid "This message is a spam."
|
||||
msgstr "Ce message est un spam."
|
||||
|
||||
#: agenda_culturel/models.py:1466 agenda_culturel/views.py:976
|
||||
#: agenda_culturel/models.py:1488 agenda_culturel/views.py:1000
|
||||
msgid "Closed"
|
||||
msgstr "Fermé"
|
||||
|
||||
#: agenda_culturel/models.py:1468
|
||||
#: agenda_culturel/models.py:1490
|
||||
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:1473
|
||||
#: agenda_culturel/models.py:1495
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: agenda_culturel/models.py:1474
|
||||
#: agenda_culturel/models.py:1496
|
||||
msgid "Comments on the message from the moderation team"
|
||||
msgstr "Commentaires sur ce message par l'équipe de modération"
|
||||
|
||||
#: agenda_culturel/models.py:1486 agenda_culturel/models.py:1623
|
||||
#: agenda_culturel/models.py:1508 agenda_culturel/models.py:1645
|
||||
msgid "Recurrent import"
|
||||
msgstr "Import récurrent"
|
||||
|
||||
#: agenda_culturel/models.py:1487
|
||||
#: agenda_culturel/models.py:1509
|
||||
msgid "Recurrent imports"
|
||||
msgstr "Imports récurrents"
|
||||
|
||||
#: agenda_culturel/models.py:1491
|
||||
#: agenda_culturel/models.py:1513
|
||||
msgid "ical"
|
||||
msgstr "ical"
|
||||
|
||||
#: agenda_culturel/models.py:1492
|
||||
#: agenda_culturel/models.py:1514
|
||||
msgid "ical no busy"
|
||||
msgstr "ical sans busy"
|
||||
|
||||
#: agenda_culturel/models.py:1493
|
||||
#: agenda_culturel/models.py:1515
|
||||
msgid "ical no VC"
|
||||
msgstr "ical sans VC"
|
||||
|
||||
#: agenda_culturel/models.py:1494
|
||||
#: agenda_culturel/models.py:1516
|
||||
msgid "lacoope.org"
|
||||
msgstr "lacoope.org"
|
||||
|
||||
#: agenda_culturel/models.py:1495
|
||||
#: agenda_culturel/models.py:1517
|
||||
msgid "la comédie"
|
||||
msgstr "la comédie"
|
||||
|
||||
#: agenda_culturel/models.py:1496
|
||||
#: agenda_culturel/models.py:1518
|
||||
msgid "le fotomat"
|
||||
msgstr "le fotomat"
|
||||
|
||||
#: agenda_culturel/models.py:1497
|
||||
#: agenda_culturel/models.py:1519
|
||||
msgid "la puce à l'oreille"
|
||||
msgstr "la puce à loreille"
|
||||
|
||||
#: agenda_culturel/models.py:1498
|
||||
#: agenda_culturel/models.py:1520
|
||||
msgid "Plugin wordpress MEC"
|
||||
msgstr "Plugin wordpress MEC"
|
||||
|
||||
#: agenda_culturel/models.py:1499
|
||||
#: agenda_culturel/models.py:1521
|
||||
msgid "Événements d'une page FB"
|
||||
msgstr "Événements d'une page FB"
|
||||
|
||||
#: agenda_culturel/models.py:1500
|
||||
#: agenda_culturel/models.py:1522
|
||||
msgid "la cour des 3 coquins"
|
||||
msgstr "la cour des 3 coquins"
|
||||
|
||||
#: agenda_culturel/models.py:1501
|
||||
#: agenda_culturel/models.py:1523
|
||||
msgid "Arachnée concert"
|
||||
msgstr "Arachnée concert"
|
||||
|
||||
#: agenda_culturel/models.py:1504
|
||||
#: agenda_culturel/models.py:1526
|
||||
msgid "simple"
|
||||
msgstr "simple"
|
||||
|
||||
#: agenda_culturel/models.py:1505
|
||||
#: agenda_culturel/models.py:1527
|
||||
msgid "Headless Chromium"
|
||||
msgstr "chromium sans interface"
|
||||
|
||||
#: agenda_culturel/models.py:1506
|
||||
#: agenda_culturel/models.py:1528
|
||||
msgid "Headless Chromium (pause)"
|
||||
msgstr "chromium sans interface (pause)"
|
||||
|
||||
#: agenda_culturel/models.py:1511
|
||||
#: agenda_culturel/models.py:1533
|
||||
msgid "daily"
|
||||
msgstr "chaque jour"
|
||||
|
||||
#: agenda_culturel/models.py:1513
|
||||
#: agenda_culturel/models.py:1535
|
||||
msgid "weekly"
|
||||
msgstr "chaque semaine"
|
||||
|
||||
#: agenda_culturel/models.py:1518
|
||||
#: agenda_culturel/models.py:1540
|
||||
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."
|
||||
@ -621,135 +621,135 @@ 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:1525
|
||||
#: agenda_culturel/models.py:1547
|
||||
msgid "Processor"
|
||||
msgstr "Processeur"
|
||||
|
||||
#: agenda_culturel/models.py:1528
|
||||
#: agenda_culturel/models.py:1550
|
||||
msgid "Downloader"
|
||||
msgstr "Téléchargeur"
|
||||
|
||||
#: agenda_culturel/models.py:1535
|
||||
#: agenda_culturel/models.py:1557
|
||||
msgid "Import recurrence"
|
||||
msgstr "Récurrence d'import"
|
||||
|
||||
#: agenda_culturel/models.py:1542
|
||||
#: agenda_culturel/models.py:1564
|
||||
msgid "Source"
|
||||
msgstr "Source"
|
||||
|
||||
#: agenda_culturel/models.py:1543
|
||||
#: agenda_culturel/models.py:1565
|
||||
msgid "URL of the source document"
|
||||
msgstr "URL du document source"
|
||||
|
||||
#: agenda_culturel/models.py:1547
|
||||
#: agenda_culturel/models.py:1569
|
||||
msgid "Browsable url"
|
||||
msgstr "URL navigable"
|
||||
|
||||
#: agenda_culturel/models.py:1549
|
||||
#: agenda_culturel/models.py:1571
|
||||
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:1558
|
||||
#: agenda_culturel/models.py:1580
|
||||
msgid "Status of each imported event (published or draft)"
|
||||
msgstr "Status de chaque événement importé (publié ou brouillon)"
|
||||
|
||||
#: agenda_culturel/models.py:1563
|
||||
#: agenda_culturel/models.py:1585
|
||||
msgid "Address for each imported event"
|
||||
msgstr "Adresse de chaque événement importé"
|
||||
|
||||
#: agenda_culturel/models.py:1571
|
||||
#: agenda_culturel/models.py:1593
|
||||
msgid "Category of each imported event"
|
||||
msgstr "Catégorie de chaque événement importé"
|
||||
|
||||
#: agenda_culturel/models.py:1579
|
||||
#: agenda_culturel/models.py:1601
|
||||
msgid "Tags for each imported event"
|
||||
msgstr "Étiquettes de chaque événement importé"
|
||||
|
||||
#: agenda_culturel/models.py:1580
|
||||
#: agenda_culturel/models.py:1602
|
||||
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:1609
|
||||
#: agenda_culturel/models.py:1631
|
||||
msgid "Running"
|
||||
msgstr "En cours"
|
||||
|
||||
#: agenda_culturel/models.py:1610
|
||||
#: agenda_culturel/models.py:1632
|
||||
msgid "Canceled"
|
||||
msgstr "Annulé"
|
||||
|
||||
#: agenda_culturel/models.py:1611
|
||||
#: agenda_culturel/models.py:1633
|
||||
msgid "Success"
|
||||
msgstr "Succès"
|
||||
|
||||
#: agenda_culturel/models.py:1612
|
||||
#: agenda_culturel/models.py:1634
|
||||
msgid "Failed"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: agenda_culturel/models.py:1615
|
||||
#: agenda_culturel/models.py:1637
|
||||
msgid "Batch importation"
|
||||
msgstr "Importation par lot"
|
||||
|
||||
#: agenda_culturel/models.py:1616
|
||||
#: agenda_culturel/models.py:1638
|
||||
msgid "Batch importations"
|
||||
msgstr "Importations par lot"
|
||||
|
||||
#: agenda_culturel/models.py:1624
|
||||
#: agenda_culturel/models.py:1646
|
||||
msgid "Reference to the recurrent import processing"
|
||||
msgstr "Référence du processus d'import récurrent"
|
||||
|
||||
#: agenda_culturel/models.py:1632
|
||||
#: agenda_culturel/models.py:1654
|
||||
msgid "URL (if not recurrent import)"
|
||||
msgstr "URL (si pas d'import récurrent)"
|
||||
|
||||
#: agenda_culturel/models.py:1634
|
||||
#: agenda_culturel/models.py:1656
|
||||
msgid "Source URL if no RecurrentImport is associated."
|
||||
msgstr "URL source si aucun import récurrent n'est associé"
|
||||
|
||||
#: agenda_culturel/models.py:1647
|
||||
#: agenda_culturel/models.py:1669
|
||||
msgid "Error message"
|
||||
msgstr "Votre message"
|
||||
|
||||
#: agenda_culturel/models.py:1651
|
||||
#: agenda_culturel/models.py:1673
|
||||
msgid "Number of collected events"
|
||||
msgstr "Nombre d'événements collectés"
|
||||
|
||||
#: agenda_culturel/models.py:1654
|
||||
#: agenda_culturel/models.py:1676
|
||||
msgid "Number of imported events"
|
||||
msgstr "Nombre d'événements importés"
|
||||
|
||||
#: agenda_culturel/models.py:1657
|
||||
#: agenda_culturel/models.py:1679
|
||||
msgid "Number of updated events"
|
||||
msgstr "Nombre d'événements mis à jour"
|
||||
|
||||
#: agenda_culturel/models.py:1660
|
||||
#: agenda_culturel/models.py:1682
|
||||
msgid "Number of removed events"
|
||||
msgstr "Nombre d'événements supprimés"
|
||||
|
||||
#: agenda_culturel/models.py:1668
|
||||
#: agenda_culturel/models.py:1690
|
||||
msgid "Weight"
|
||||
msgstr "Poids"
|
||||
|
||||
#: agenda_culturel/models.py:1669
|
||||
#: agenda_culturel/models.py:1691
|
||||
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:1676
|
||||
#: agenda_culturel/models.py:1698
|
||||
msgid "Category applied to the event"
|
||||
msgstr "Catégorie appliquée à l'événement"
|
||||
|
||||
#: agenda_culturel/models.py:1681
|
||||
#: agenda_culturel/models.py:1703
|
||||
msgid "Contained in the title"
|
||||
msgstr "Contenu dans le titre"
|
||||
|
||||
#: agenda_culturel/models.py:1682
|
||||
#: agenda_culturel/models.py:1704
|
||||
msgid "Text contained in the event title"
|
||||
msgstr "Texte contenu dans le titre de l'événement"
|
||||
|
||||
#: agenda_culturel/models.py:1688
|
||||
#: agenda_culturel/models.py:1710
|
||||
msgid "Exact title extract"
|
||||
msgstr "Extrait exact du titre"
|
||||
|
||||
#: agenda_culturel/models.py:1690
|
||||
#: agenda_culturel/models.py:1712
|
||||
msgid ""
|
||||
"If checked, the extract will be searched for in the title using the exact "
|
||||
"form (capitals, accents)."
|
||||
@ -757,19 +757,19 @@ msgstr ""
|
||||
"Si coché, l'extrait sera recherché dans le titre en utilisant la forme "
|
||||
"exacte (majuscules, accents)"
|
||||
|
||||
#: agenda_culturel/models.py:1696
|
||||
#: agenda_culturel/models.py:1718
|
||||
msgid "Contained in the description"
|
||||
msgstr "Contenu dans la description"
|
||||
|
||||
#: agenda_culturel/models.py:1697
|
||||
#: agenda_culturel/models.py:1719
|
||||
msgid "Text contained in the description"
|
||||
msgstr "Texte contenu dans la description"
|
||||
|
||||
#: agenda_culturel/models.py:1703
|
||||
#: agenda_culturel/models.py:1725
|
||||
msgid "Exact description extract"
|
||||
msgstr "Extrait exact de description"
|
||||
|
||||
#: agenda_culturel/models.py:1705
|
||||
#: agenda_culturel/models.py:1727
|
||||
msgid ""
|
||||
"If checked, the extract will be searched for in the description using the "
|
||||
"exact form (capitals, accents)."
|
||||
@ -777,19 +777,19 @@ msgstr ""
|
||||
"Si coché, l'extrait sera recherché dans la description en utilisant la forme "
|
||||
"exacte (majuscules, accents)"
|
||||
|
||||
#: agenda_culturel/models.py:1711
|
||||
#: agenda_culturel/models.py:1733
|
||||
msgid "Contained in the location"
|
||||
msgstr "Contenu dans la localisation"
|
||||
|
||||
#: agenda_culturel/models.py:1712
|
||||
#: agenda_culturel/models.py:1734
|
||||
msgid "Text contained in the event location"
|
||||
msgstr "Texte contenu dans la localisation de l'événement"
|
||||
|
||||
#: agenda_culturel/models.py:1718
|
||||
#: agenda_culturel/models.py:1740
|
||||
msgid "Exact location extract"
|
||||
msgstr "Extrait exact de localisation"
|
||||
|
||||
#: agenda_culturel/models.py:1720
|
||||
#: agenda_culturel/models.py:1742
|
||||
msgid ""
|
||||
"If checked, the extract will be searched for in the location using the exact "
|
||||
"form (capitals, accents)."
|
||||
@ -797,56 +797,56 @@ msgstr ""
|
||||
"Si coché, l'extrait sera recherché dans la localisation en utilisant la "
|
||||
"forme exacte (majuscules, accents)"
|
||||
|
||||
#: agenda_culturel/models.py:1728
|
||||
#: agenda_culturel/models.py:1750
|
||||
msgid "Location from place"
|
||||
msgstr "Localisation depuis le lieu"
|
||||
|
||||
#: agenda_culturel/models.py:1737
|
||||
#: agenda_culturel/models.py:1759
|
||||
msgid "Categorisation rule"
|
||||
msgstr "Règle de catégorisation"
|
||||
|
||||
#: agenda_culturel/models.py:1738
|
||||
#: agenda_culturel/models.py:1760
|
||||
msgid "Categorisation rules"
|
||||
msgstr "Règles de catégorisation"
|
||||
|
||||
#: agenda_culturel/models.py:1809 agenda_culturel/models.py:1841
|
||||
#: agenda_culturel/models.py:1831 agenda_culturel/models.py:1863
|
||||
msgid "Question"
|
||||
msgstr "Question"
|
||||
|
||||
#: agenda_culturel/models.py:1810 agenda_culturel/models.py:1848
|
||||
#: agenda_culturel/models.py:1832 agenda_culturel/models.py:1870
|
||||
msgid "Text that will be shown to moderators"
|
||||
msgstr "Text tel que présenté aux modérateurices"
|
||||
|
||||
#: agenda_culturel/models.py:1816
|
||||
#: agenda_culturel/models.py:1838
|
||||
msgid "Moderation question"
|
||||
msgstr "Question de modération"
|
||||
|
||||
#: agenda_culturel/models.py:1817
|
||||
#: agenda_culturel/models.py:1839
|
||||
msgid "Moderation questions"
|
||||
msgstr "Questions de modération"
|
||||
|
||||
#: agenda_culturel/models.py:1842
|
||||
#: agenda_culturel/models.py:1864
|
||||
msgid "Associated question from moderation"
|
||||
msgstr "Question associée pour la modération"
|
||||
|
||||
#: agenda_culturel/models.py:1847
|
||||
#: agenda_culturel/models.py:1869
|
||||
msgid "Answer"
|
||||
msgstr "Réponse"
|
||||
|
||||
#: agenda_culturel/models.py:1854
|
||||
#: agenda_culturel/models.py:1876
|
||||
msgid "Adds tags"
|
||||
msgstr "Ajoute les étiquettes"
|
||||
|
||||
#: agenda_culturel/models.py:1855
|
||||
#: agenda_culturel/models.py:1877
|
||||
msgid "A list of tags that will be added if you choose this answer."
|
||||
msgstr ""
|
||||
"Une liste d'étiquettes qui seront ajoutées si vous choisissez cette réponse."
|
||||
|
||||
#: agenda_culturel/models.py:1861
|
||||
#: agenda_culturel/models.py:1883
|
||||
msgid "Removes tags"
|
||||
msgstr "Retire les étiquettes"
|
||||
|
||||
#: agenda_culturel/models.py:1862
|
||||
#: agenda_culturel/models.py:1884
|
||||
msgid "A list of tags that will be removed if you choose this answer."
|
||||
msgstr ""
|
||||
"Une liste d'étiquettes qui seront retirées si vous choisissez cette réponse."
|
||||
@ -875,11 +875,11 @@ msgstr "Naviguer..."
|
||||
msgid "No file selected."
|
||||
msgstr "Pas de fichier sélectionné."
|
||||
|
||||
#: agenda_culturel/views.py:541
|
||||
#: agenda_culturel/views.py:545
|
||||
msgid "The static content has been successfully updated."
|
||||
msgstr "Le contenu statique a été modifié avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:549
|
||||
#: agenda_culturel/views.py:553
|
||||
msgid ""
|
||||
"The event cannot be updated because the import process is not available for "
|
||||
"the referenced sources."
|
||||
@ -887,29 +887,29 @@ 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:552
|
||||
#: agenda_culturel/views.py:556
|
||||
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:562 agenda_culturel/views.py:635
|
||||
#: agenda_culturel/views.py:566 agenda_culturel/views.py:640
|
||||
msgid "The event has been successfully modified."
|
||||
msgstr "L'événement a été modifié avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:604
|
||||
#: agenda_culturel/views.py:609
|
||||
msgid "The event has been successfully deleted."
|
||||
msgstr "L'événement a été supprimé avec succès"
|
||||
|
||||
#: agenda_culturel/views.py:660
|
||||
#: agenda_culturel/views.py:665
|
||||
msgid "The status has been successfully modified."
|
||||
msgstr "Le status a été modifié avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:696
|
||||
#: agenda_culturel/views.py:701
|
||||
msgid "The event was created: <a href=\"{}\">{}</a>."
|
||||
msgstr "L'événement a été créé: <a href=\"{}\">{}</a>."
|
||||
|
||||
#: agenda_culturel/views.py:698 agenda_culturel/views.py:712
|
||||
#: agenda_culturel/views.py:703 agenda_culturel/views.py:717
|
||||
msgid ""
|
||||
"The event has been submitted and will be published as soon as it has been "
|
||||
"validated by the moderation team."
|
||||
@ -917,94 +917,110 @@ 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:706
|
||||
#: agenda_culturel/views.py:711
|
||||
msgid "The event is saved."
|
||||
msgstr "L'événement est enregistré."
|
||||
|
||||
#: agenda_culturel/views.py:798 agenda_culturel/views.py:850
|
||||
#: agenda_culturel/views.py:803 agenda_culturel/views.py:855
|
||||
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:803 agenda_culturel/views.py:856
|
||||
#: agenda_culturel/views.py:808 agenda_culturel/views.py:861
|
||||
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:813
|
||||
#: agenda_culturel/views.py:818
|
||||
msgid "Integrating {} url(s) into our import process."
|
||||
msgstr "Intégration de {} url(s) dans notre processus d'import."
|
||||
|
||||
#: agenda_culturel/views.py:863
|
||||
#: agenda_culturel/views.py:868
|
||||
msgid "Integrating {} into our import process."
|
||||
msgstr "Intégration de {} dans notre processus d'import."
|
||||
|
||||
#: agenda_culturel/views.py:936
|
||||
#: agenda_culturel/views.py:921
|
||||
msgid "Representative version"
|
||||
msgstr "Version représentative"
|
||||
|
||||
#: agenda_culturel/views.py:922
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
|
||||
#: agenda_culturel/views.py:922
|
||||
msgid "Non"
|
||||
msgstr "Non"
|
||||
|
||||
#: agenda_culturel/views.py:927
|
||||
msgid "Imported from"
|
||||
msgstr "Importé depuis"
|
||||
|
||||
#: agenda_culturel/views.py:960
|
||||
msgid "Your message has been sent successfully."
|
||||
msgstr "Votre message a été envoyé avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:946
|
||||
#: agenda_culturel/views.py:970
|
||||
msgid "The contact message has been successfully deleted."
|
||||
msgstr "Le message de contact a été supprimé avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:960
|
||||
#: agenda_culturel/views.py:984
|
||||
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:976
|
||||
#: agenda_culturel/views.py:1000
|
||||
msgid "Open"
|
||||
msgstr "Ouvert"
|
||||
|
||||
#: agenda_culturel/views.py:981
|
||||
#: agenda_culturel/views.py:1005
|
||||
msgid "Non spam"
|
||||
msgstr "Non spam"
|
||||
|
||||
#: agenda_culturel/views.py:1044
|
||||
#: agenda_culturel/views.py:1131
|
||||
msgid "Spam has been successfully deleted."
|
||||
msgstr "Le spam a été supprimé avec succès"
|
||||
|
||||
#: agenda_culturel/views.py:1061
|
||||
#: agenda_culturel/views.py:1148
|
||||
msgid "Search"
|
||||
msgstr "Rechercher"
|
||||
|
||||
#: agenda_culturel/views.py:1247
|
||||
#: agenda_culturel/views.py:1340
|
||||
msgid "The import has been run successfully."
|
||||
msgstr "L'import a été lancé avec succès"
|
||||
|
||||
#: agenda_culturel/views.py:1266
|
||||
#: agenda_culturel/views.py:1359
|
||||
msgid "The import has been canceled."
|
||||
msgstr "L'import a été annulé"
|
||||
|
||||
#: agenda_culturel/views.py:1340
|
||||
#: agenda_culturel/views.py:1433
|
||||
msgid "The recurrent import has been successfully modified."
|
||||
msgstr "L'import récurrent a été modifié avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:1349
|
||||
#: agenda_culturel/views.py:1442
|
||||
msgid "The recurrent import has been successfully deleted."
|
||||
msgstr "L'import récurrent a été supprimé avec succès"
|
||||
|
||||
#: agenda_culturel/views.py:1389
|
||||
#: agenda_culturel/views.py:1482
|
||||
msgid "The import has been launched."
|
||||
msgstr "L'import a été lancé"
|
||||
|
||||
#: agenda_culturel/views.py:1411
|
||||
#: agenda_culturel/views.py:1504
|
||||
msgid "Imports has been launched."
|
||||
msgstr "Les imports ont été lancés"
|
||||
|
||||
#: agenda_culturel/views.py:1482
|
||||
#: agenda_culturel/views.py:1575
|
||||
msgid "Update successfully completed."
|
||||
msgstr "Mise à jour réalisée avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:1540
|
||||
#: agenda_culturel/views.py:1633
|
||||
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:1576
|
||||
#: agenda_culturel/views.py:1669
|
||||
msgid "Events have been marked as unduplicated."
|
||||
msgstr "Les événements ont été marqués comme non dupliqués."
|
||||
|
||||
#: agenda_culturel/views.py:1590 agenda_culturel/views.py:1599
|
||||
#: agenda_culturel/views.py:1617
|
||||
#: agenda_culturel/views.py:1683 agenda_culturel/views.py:1692
|
||||
#: agenda_culturel/views.py:1710
|
||||
msgid ""
|
||||
"The selected item is no longer included in the list of duplicates. Someone "
|
||||
"else has probably modified the list in the meantime."
|
||||
@ -1012,23 +1028,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:1593
|
||||
#: agenda_culturel/views.py:1686
|
||||
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:1608
|
||||
#: agenda_culturel/views.py:1701
|
||||
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:1652
|
||||
#: agenda_culturel/views.py:1745
|
||||
msgid "Cleaning up duplicates: {} item(s) fixed."
|
||||
msgstr "Nettoyage des dupliqués: {} élément(s) corrigé(s)."
|
||||
|
||||
#: agenda_culturel/views.py:1701
|
||||
#: agenda_culturel/views.py:1794
|
||||
msgid "The event was successfully duplicated."
|
||||
msgstr "L'événement a été marqué dupliqué avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:1709
|
||||
#: agenda_culturel/views.py:1802
|
||||
msgid ""
|
||||
"The event has been successfully flagged as a duplicate. The moderation team "
|
||||
"will deal with your suggestion shortly."
|
||||
@ -1036,32 +1052,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:1762
|
||||
#: agenda_culturel/views.py:1855
|
||||
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:1771
|
||||
#: agenda_culturel/views.py:1864
|
||||
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:1793
|
||||
#: agenda_culturel/views.py:1886
|
||||
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:1800
|
||||
#: agenda_culturel/views.py:1893
|
||||
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:1807 agenda_culturel/views.py:1860
|
||||
#: agenda_culturel/views.py:1900 agenda_culturel/views.py:1953
|
||||
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:1846
|
||||
#: agenda_culturel/views.py:1939
|
||||
msgid ""
|
||||
"The rules were successfully applied and 1 event with default category was "
|
||||
"categorised."
|
||||
@ -1069,7 +1085,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:1853
|
||||
#: agenda_culturel/views.py:1946
|
||||
msgid ""
|
||||
"The rules were successfully applied and {} events with default category were "
|
||||
"categorised."
|
||||
@ -1077,46 +1093,46 @@ 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:1900
|
||||
#: agenda_culturel/views.py:1993
|
||||
msgid "The moderation question has been created with success."
|
||||
msgstr "La question de modération a été créée avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:2026 agenda_culturel/views.py:2088
|
||||
#: agenda_culturel/views.py:2126
|
||||
#: agenda_culturel/views.py:2122 agenda_culturel/views.py:2184
|
||||
#: agenda_culturel/views.py:2222
|
||||
msgid "{} events have been updated."
|
||||
msgstr "{} événements ont été mis à jour."
|
||||
|
||||
#: agenda_culturel/views.py:2029 agenda_culturel/views.py:2090
|
||||
#: agenda_culturel/views.py:2129
|
||||
#: agenda_culturel/views.py:2125 agenda_culturel/views.py:2186
|
||||
#: agenda_culturel/views.py:2225
|
||||
msgid "1 event has been updated."
|
||||
msgstr "1 événement a été mis à jour"
|
||||
|
||||
#: agenda_culturel/views.py:2031 agenda_culturel/views.py:2092
|
||||
#: agenda_culturel/views.py:2131
|
||||
#: agenda_culturel/views.py:2127 agenda_culturel/views.py:2188
|
||||
#: agenda_culturel/views.py:2227
|
||||
msgid "No events have been modified."
|
||||
msgstr "Aucun événement n'a été modifié."
|
||||
|
||||
#: agenda_culturel/views.py:2040
|
||||
#: agenda_culturel/views.py:2136
|
||||
msgid "The place has been successfully updated."
|
||||
msgstr "Le lieu a été modifié avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:2049
|
||||
#: agenda_culturel/views.py:2145
|
||||
msgid "The place has been successfully created."
|
||||
msgstr "Le lieu a été créé avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:2114
|
||||
#: agenda_culturel/views.py:2210
|
||||
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:2118
|
||||
#: agenda_culturel/views.py:2214
|
||||
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:2174
|
||||
#: agenda_culturel/views.py:2270
|
||||
msgid "The tag has been successfully updated."
|
||||
msgstr "L'étiquette a été modifiée avec succès."
|
||||
|
||||
#: agenda_culturel/views.py:2181
|
||||
#: agenda_culturel/views.py:2277
|
||||
msgid "The tag has been successfully created."
|
||||
msgstr "L'étiquette a été créée avec succès."
|
||||
|
||||
|
@ -0,0 +1,52 @@
|
||||
{% extends "agenda_culturel/page-admin.html" %}
|
||||
|
||||
{% load utils_extra %}
|
||||
{% block title %}{% block og_title %}Administration{% endblock %}{% endblock %}
|
||||
|
||||
{% load cat_extra %}
|
||||
{% block entete_header %}
|
||||
{% css_categories %}
|
||||
{% endblock %}
|
||||
|
||||
{% block sidemenu-bouton %}
|
||||
<li><a href="#contenu-principal" aria-label="Aller au contenu">{% picto_from_name "chevron-up" %}</a></li>
|
||||
<li><a href="#sidebar" aria-label="Aller au menu latéral">{% picto_from_name "chevron-down" %}</a></li>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="grid two-columns">
|
||||
<div id="contenu-principal">
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<div class="slide-buttons">
|
||||
<a href="{% url 'activite' %}" role="button">Voir l'historique {% picto_from_name "chevron-right" %}</a>
|
||||
</div>
|
||||
<h2>Activité des derniers jours</h2>
|
||||
</header>
|
||||
{% include "agenda_culturel/recent-activity-inc.html" with modifications=daily_modifications %}
|
||||
<p>Détail des imports récurrents :
|
||||
{% include "agenda_culturel/rimports-info-inc.html" with all=1 %}</p>
|
||||
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<div class="slide-buttons">
|
||||
<a href="{% url 'moderation' %}" role="button">Voir tout {% picto_from_name "chevron-right" %}</a>
|
||||
</div>
|
||||
<h2>Derniers événements soumis</h2>
|
||||
</header>
|
||||
{% for e in events %}
|
||||
<article>{% include "agenda_culturel/single-event/event-in-flat-list-inc.html" with event=e %}</article>
|
||||
{% endfor %}
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
{% include "agenda_culturel/side-nav.html" with current="administration" %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
@ -31,16 +31,6 @@
|
||||
<div style="clear: both"></div>
|
||||
{% endif %}
|
||||
|
||||
{% if daily_modifications %}
|
||||
<article>
|
||||
<div class="slide-buttons">
|
||||
<a href="{% url 'activite' %}" role="button">Voir l'historique {% picto_from_name "chevron-right" %}</a>
|
||||
</div>
|
||||
<h2>Activité des derniers jours</h2>
|
||||
{% include "agenda_culturel/recent-activity-inc.html" with modifications=daily_modifications %}
|
||||
</article>
|
||||
{% endif %}
|
||||
|
||||
{% include 'agenda_culturel/paginator_filter.html' %}
|
||||
</header>
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
||||
<div id="boutons-fixes">
|
||||
<ul>
|
||||
{% block sidemenu-bouton %}{% endblock %}
|
||||
{% if user.is_authenticated %}{% block configurer-bouton %}<li class="configurer-bouton"><a href="{% url 'moderation' %}" aria-label="Administrer">{% picto_from_name "settings" %}</a></li>{% endblock %}{% endif %}
|
||||
{% if user.is_authenticated %}{% block configurer-bouton %}<li class="configurer-bouton"><a href="{% url 'administration' %}" aria-label="Administrer">{% picto_from_name "settings" %}</a></li>{% endblock %}{% endif %}
|
||||
{% block ajouter-bouton %}<li class="ajouter-bouton"><a href="{% url 'add_event' %}" aria-label="Ajouter un événement">{% picto_from_name "plus" %}</a></li>{% endblock %}
|
||||
{% block rechercher-bouton %}<li class="rechercher-bouton"><a href="{% url 'event_search' %}" aria-label="Rechercher">{% picto_from_name "search" %}</a></li>{% endblock %}
|
||||
</ul>
|
||||
@ -47,7 +47,7 @@
|
||||
<input class="menu-btn" type="checkbox" id="menu-btn" />
|
||||
<label class="menu-icon" for="menu-btn">{% picto_from_name "menu" %}</label>
|
||||
<ul class="menu">
|
||||
{% if user.is_authenticated %}{% block configurer-menu %}<li id="menu-configurer" class="configurer-bouton"><a href="{% url 'moderation' %}">Administrer {% picto_from_name "settings" %}</a></li>{% endblock %}{% endif %}
|
||||
{% if user.is_authenticated %}{% block configurer-menu %}<li id="menu-configurer" class="configurer-bouton"><a href="{% url 'administration' %}">Administrer {% picto_from_name "settings" %}</a></li>{% endblock %}{% endif %}
|
||||
{% block ajouter-menu %}<li id="menu-ajouter" class="ajouter-bouton"><a href="{% url 'add_event' %}">Ajouter un événement {% picto_from_name "plus-circle" %}</a></li>{% endblock %}
|
||||
{% block rechercher-menu %}<li id="menu-rechercher" class="rechercher-bouton"><a href="{% url 'event_search' %}">Rechercher {% picto_from_name "search" %}</a></li>{% endblock %}
|
||||
<li><a href="{% url 'a_venir' %}{% block a_venir_parameters %}{% endblock %}">À venir</a></li>
|
||||
@ -120,10 +120,10 @@
|
||||
</div>
|
||||
<div>
|
||||
{% if user.is_authenticated %}
|
||||
<a href="{% url 'moderation' %}">{% picto_from_name "settings" %} administrer</a>
|
||||
<a href="{% url 'administration' %}">{% picto_from_name "settings" %} administrer</a>
|
||||
<p>Vous êtes connecté(e) en tant que {{ user }}</p>
|
||||
{% else %}
|
||||
<a href="{% url 'login' %}?next={% url 'moderation' %}">{% picto_from_name "log-in" %} administrer</a>
|
||||
<a href="{% url 'login' %}?next={% url 'administration' %}">{% picto_from_name "log-in" %} administrer</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -0,0 +1,26 @@
|
||||
{% if status or all == 1 %}
|
||||
<a href="{% url 'recurrent_imports' %}">tous : {{ nb_all }}</a>
|
||||
{% else %}
|
||||
<strong>tous : {{ nb_all }}</strong>
|
||||
{% endif %}
|
||||
{% if nb_failed > 0 or all == 1 %}—
|
||||
{% if not status or status != "failed" %}
|
||||
<a href="{% url 'recurrent_imports_status' 'failed' %}">échoués : {{ nb_failed }}</a>
|
||||
{% else %}
|
||||
<strong>échoués : {{ nb_failed }}</strong>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if nb_canceled > 0 or all == 1 %}—
|
||||
{% if not status or status != "canceled" %}
|
||||
<a href="{% url 'recurrent_imports_status' 'canceled' %}">annulés : {{ nb_canceled }}</a>
|
||||
{% else %}
|
||||
<strong>annulés : {{ nb_canceled }}</strong>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if nb_running > 0 or all == 1 %}—
|
||||
{% if not status or status != "running" %}
|
||||
<a href="{% url 'recurrent_imports_status' 'running' %}">en cours : {{ nb_running }}</a>
|
||||
{% else %}
|
||||
<strong>en cours : {{ nb_running }}</strong>
|
||||
{% endif %}
|
||||
{% endif %}
|
@ -31,32 +31,7 @@
|
||||
<a href="{% url 'add_rimport'%}" role="button">Ajouter {% picto_from_name "plus-circle" %}</a>
|
||||
</div>
|
||||
<h1>Importations récurrentes {% if status %}<em>{{ status }}</em>{% endif %}</h1>
|
||||
{% if status %}
|
||||
<a href="{% url 'recurrent_imports' %}">tous : {{ nb_all }}</a>
|
||||
{% else %}
|
||||
<strong>tous : {{ nb_all }}</strong>
|
||||
{% endif %}
|
||||
{% if nb_failed > 0 %}—
|
||||
{% if not status or status != "failed" %}
|
||||
<a href="{% url 'recurrent_imports_status' 'failed' %}">échoués : {{ nb_failed }}</a>
|
||||
{% else %}
|
||||
<strong>échoués : {{ nb_failed }}</strong>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if nb_canceled > 0 %}—
|
||||
{% if not status or status != "canceled" %}
|
||||
<a href="{% url 'recurrent_imports_status' 'canceled' %}">annulés : {{ nb_canceled }}</a>
|
||||
{% else %}
|
||||
<strong>annulés : {{ nb_canceled }}</strong>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if nb_running > 0 %}—
|
||||
{% if not status or status != "running" %}
|
||||
<a href="{% url 'recurrent_imports_status' 'running' %}">en cours : {{ nb_running }}</a>
|
||||
{% else %}
|
||||
<strong>en cours : {{ nb_running }}</strong>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% include "agenda_culturel/rimports-info-inc.html" with all=0 %}
|
||||
</header>
|
||||
|
||||
<table role="grid">
|
||||
|
@ -6,6 +6,11 @@
|
||||
<header>
|
||||
<h2>Administrer</h2>
|
||||
</header>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a {% if current == "administration" %}class="selected" {% endif %}href="{% url 'administration' %}">Administration</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h3>Événements</h3>
|
||||
<nav>
|
||||
<ul>
|
||||
|
@ -29,6 +29,7 @@
|
||||
<h4>
|
||||
{{ event|picto_status }}
|
||||
<a href="{{ event.get_absolute_url }}">{{ event.title }}</a>
|
||||
{{ event|picto_visibility:user.is_authenticated }}
|
||||
</h4>
|
||||
{% if event.location or event.exact_location %}
|
||||
{% if not no_location %}
|
||||
|
@ -3,10 +3,11 @@
|
||||
{% load tag_extra %}
|
||||
{% load event_extra %}
|
||||
|
||||
<header>{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
{{ event|picto_status }}
|
||||
<a href="{{ event.get_absolute_url }}">
|
||||
{% if event.title_hl %}{{ event.title_hl | safe }}{% else %}{{ event.title }}{% endif %}</a></p>
|
||||
<header><h3>{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
{{ event|picto_status }} <a href="{{ event.get_absolute_url }}">
|
||||
{% if event.title_hl %}{{ event.title_hl | safe }}{% else %}{{ event.title }}{% endif %}</a>
|
||||
{{ event|picto_visibility:user.is_authenticated }}
|
||||
</h3>
|
||||
<p class="subentry-search">{% picto_from_name "calendar" %}
|
||||
{% if event.end_day and event.end_day != event.start_day %}du{% else %}le{% endif %}
|
||||
{% include "agenda_culturel/date-times-inc.html" with event=event %}
|
||||
|
@ -1,84 +0,0 @@
|
||||
{% load static %}
|
||||
{% load cat_extra %}
|
||||
{% load utils_extra %}
|
||||
{% load event_extra %}
|
||||
{% load tag_extra %}
|
||||
|
||||
<article id="event-{{ event.pk}}">
|
||||
{% if indexlink %}<a role="button" class="secondary slide-buttons" href="#index-day" data-tooltip="Retour au résumé">{% picto_from_name "arrow-up" %}</a>{% endif %}
|
||||
{% if event|can_show_start_time:day %}
|
||||
{% if event.start_time %}
|
||||
<article class='ephemeris-hour'>
|
||||
<span class="large">{{ event.start_time }}</span>
|
||||
</article>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if event|can_show_end_time:day %}
|
||||
{% if event.end_time %}
|
||||
<article class='ephemeris-hour'>
|
||||
jusqu'à <span class="large">{{ event.end_time }}</span>
|
||||
</article>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
{% if event.location or event.exact_location %}<hgroup>{% endif %}
|
||||
<h3>
|
||||
{{ event|picto_status }}
|
||||
<a href="{{ event.get_absolute_url }}">{{ event.title }}</a>
|
||||
</h3>
|
||||
{% if event.location or event.exact_location %}
|
||||
<h4>
|
||||
{% picto_from_name "map-pin" %}
|
||||
{% include "agenda_culturel/event-location-inc.html" with event=event %}
|
||||
</h4>
|
||||
</hgroup>
|
||||
{% endif %}
|
||||
|
||||
{% if event|need_complete_display:True %}<p>
|
||||
{% picto_from_name "calendar" %}
|
||||
|
||||
<em>{% if event.end_day and event.end_day != event.start_day %}Cet événement dure du {% else %}Cet événement a lieu le{% endif %}
|
||||
{% include "agenda_culturel/date-times-inc.html" with event=event %}
|
||||
</em></p>
|
||||
{% endif %}
|
||||
|
||||
{% if event.image or event.local_image %}
|
||||
<article class='illustration'>
|
||||
<img src="{% if event.local_image %}{{ event.local_image.url }}{% else %}{{ event.image }}{% endif %}" alt="{{ event.image_alt }}" />
|
||||
</article>
|
||||
{% endif %}
|
||||
|
||||
<p>{{ event.description |linebreaks }}</p>
|
||||
|
||||
|
||||
<footer class="infos-and-buttons">
|
||||
<div class="infos">
|
||||
<p>
|
||||
{% for tag in event.tags %}
|
||||
<a href="{% url 'view_tag' tag|prepare_tag %}" role="button" class="small-cat">{{ tag }}</a>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
{% include "agenda_culturel/event-sources-inc.html" %}
|
||||
|
||||
{% if event.has_recurrences %}
|
||||
<p class="footer">
|
||||
{% picto_from_name "repeat" %}
|
||||
<!-- TODO: see https://forge.chapril.org/jmtrivial/agenda_culturel/issues/65 -->
|
||||
{% for r in event.recurrences.rrules %}
|
||||
{{ r.to_text }}{% if not forloop.first %}, {% endif %}{% endfor %}, depuis le {{ event.recurrences.dtstart.date }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if perms.agenda_culturel.change_event %}
|
||||
<div class="buttons">
|
||||
{% include "agenda_culturel/edit-buttons-inc.html" with event=event %}
|
||||
<a href="{{ event.get_absolute_url }}" role="button">Voir l'événement <svg width="1em" height="1em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<use href="{% static 'images/feather-sprite.svg' %}#chevron-right" />
|
||||
</svg></a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</footer>
|
||||
</article>
|
||||
|
@ -1,62 +0,0 @@
|
||||
{% load static %}
|
||||
{% load cat_extra %}
|
||||
{% load utils_extra %}
|
||||
{% load event_extra %}
|
||||
{% load tag_extra %}
|
||||
|
||||
<article>
|
||||
{% include "agenda_culturel/ephemeris-inc.html" with event=event filter=filter with_year=with_year %}
|
||||
|
||||
{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
{% if event.location or event.exact_location %}<hgroup>{% endif %}
|
||||
<h2>
|
||||
{{ event|picto_status }}
|
||||
<a href="{{ event.get_absolute_url }}">{{ event.title }}</a>
|
||||
</h2>
|
||||
{% if event.location or event.exact_location %}
|
||||
<h3>
|
||||
{% picto_from_name "map-pin" %}
|
||||
|
||||
{% include "agenda_culturel/event-location-inc.html" with event=event %}
|
||||
</h3>
|
||||
</hgroup>
|
||||
{% endif %}
|
||||
{% if event|need_complete_display:False %}<p>
|
||||
{% picto_from_name "calendar" %}
|
||||
|
||||
<em>{% if event.end_day and event.end_day != event.start_day %}Cet événement dure du {% else %}Cet événement a lieu le{% endif %}
|
||||
{% include "agenda_culturel/date-times-inc.html" with event=event %}
|
||||
</em></p>
|
||||
{% endif %}
|
||||
|
||||
{% if event.image or event.local_image %}
|
||||
<article class='illustration'>
|
||||
<img src="{% if event.local_image %}{{ event.local_image.url }}{% else %}{{ event.image }}{% endif %}" alt="{{ event.image_alt }}" />
|
||||
</article>
|
||||
{% endif %}
|
||||
|
||||
<p>{{ event.description |truncatewords:20 |linebreaks }}</p>
|
||||
|
||||
|
||||
<footer class="infos-and-buttons">
|
||||
<div class="infos">
|
||||
<p>
|
||||
{% for tag in event.tags %}
|
||||
<a href="{% url 'view_tag' tag|prepare_tag %}" role="button" class="small-cat">{{ tag }}</a>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
{% include "agenda_culturel/event-sources-inc.html" %}
|
||||
</div>
|
||||
{% if perms.agenda_culturel.change_event %}
|
||||
<div class="buttons">
|
||||
{% include "agenda_culturel/edit-buttons-inc.html" with event=event %}
|
||||
<a href="{{ event.get_absolute_url }}" role="button">Voir l'événement <svg width="1em" height="1em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<use href="{% static 'images/feather-sprite.svg' %}#chevron-right" />
|
||||
</svg></a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</footer>
|
||||
|
||||
</article>
|
||||
|
@ -11,10 +11,12 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
<h3>{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
{{ event|picto_status }}
|
||||
<a href="{{ event.get_absolute_url }}">
|
||||
{{ event.title }}</a></p>
|
||||
{{ event.title }}</a>
|
||||
{{ event|picto_visibility:user.is_authenticated }}</h3>
|
||||
|
||||
{% picto_from_name "map-pin" %}
|
||||
{% include "agenda_culturel/event-location-inc.html" with event=event %}
|
||||
<p>{% picto_from_name "calendar" %}
|
||||
|
@ -11,7 +11,7 @@
|
||||
class="close"
|
||||
data-target="event-{{ event.id }}"
|
||||
onClick="toggleModal(event)"></a>
|
||||
<h3>{{ event.category|small_cat_recurrent:event.has_recurrences }} {{ event|picto_status }} {{ event.title }}</h3>
|
||||
<h3>{{ event.category|small_cat_recurrent:event.has_recurrences }} {{ event|picto_status }} {{ event.title }} {{ event|picto_visibility:user.is_authenticated }}</h3>
|
||||
|
||||
<p>
|
||||
{% picto_from_name "map-pin" %}
|
||||
|
@ -8,7 +8,7 @@
|
||||
<header>
|
||||
{% include "agenda_culturel/ephemeris-inc.html" with event=event filter=filter %}
|
||||
{{ event.category | small_cat_recurrent:event.has_recurrences }}
|
||||
<h1>{{ event|picto_status }} {{ event.title }}</h1>
|
||||
<h1>{{ event|picto_status }} {{ event.title }} {{ event|picto_visibility:user.is_authenticated }}</h1>
|
||||
<p>
|
||||
{% picto_from_name "calendar" %}
|
||||
{% if event.end_day and event.end_day != event.start_day %}du{% else %}le{% endif %}
|
||||
|
@ -52,6 +52,17 @@ def picto_status(event):
|
||||
else:
|
||||
return ""
|
||||
|
||||
@register.filter
|
||||
def picto_visibility(event, visible=True):
|
||||
if not visible:
|
||||
return ""
|
||||
if event.is_representative():
|
||||
return picto_from_name("award", "version mise en avant")
|
||||
elif event.masked():
|
||||
return picto_from_name("archive", "version non mise en avant")
|
||||
else:
|
||||
return ""
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def show_badges_events(placement="top"):
|
||||
|
@ -24,6 +24,7 @@ urlpatterns = [
|
||||
path("tag/<int:pk>/delete", TagDeleteView.as_view(), name="delete_tag"),
|
||||
path("tags/add", TagCreateView.as_view(), name="add_tag"),
|
||||
path("moderation/", moderation, name="moderation"),
|
||||
path("administration/", administration, name="administration"),
|
||||
path("activite/", activite, name="activite"),
|
||||
path(
|
||||
"event/<int:year>/<int:month>/<int:day>/<int:pk>-<extra>",
|
||||
|
@ -917,8 +917,14 @@ class EventFilterAdmin(django_filters.FilterSet):
|
||||
choices=Event.STATUS.choices, widget=forms.CheckboxSelectMultiple
|
||||
)
|
||||
|
||||
representative = django_filters.MultipleChoiceFilter(
|
||||
label=_("Representative version"),
|
||||
choices=[(True, _("Yes")), (False, _("Non"))],
|
||||
method="filter_by_representative",
|
||||
widget=forms.CheckboxSelectMultiple)
|
||||
|
||||
import_sources = django_filters.ModelChoiceFilter(
|
||||
label="Importé depuis",
|
||||
label=_("Imported from"),
|
||||
method="filter_by_source",
|
||||
queryset=RecurrentImport.objects.all().order_by("name__unaccent")
|
||||
)
|
||||
@ -927,6 +933,19 @@ class EventFilterAdmin(django_filters.FilterSet):
|
||||
src = RecurrentImport.objects.get(pk=value.pk).source
|
||||
return queryset.filter(import_sources__contains=[src])
|
||||
|
||||
def filter_by_representative(self, queryset, name, value):
|
||||
if value is None or len(value) != 1:
|
||||
return queryset
|
||||
else:
|
||||
q = (Q(other_versions__isnull=True) |
|
||||
Q(other_versions__representative=F('pk')) |
|
||||
Q(other_versions__representative__isnull=True))
|
||||
if value[0] == True:
|
||||
return queryset.filter(q)
|
||||
else:
|
||||
return queryset.exclude(q)
|
||||
|
||||
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = ["status"]
|
||||
@ -1014,6 +1033,45 @@ def activite(request):
|
||||
{"daily_modifications": daily_modifications, "weekly_modifications": weekly_modifications },
|
||||
)
|
||||
|
||||
@login_required(login_url="/accounts/login/")
|
||||
@permission_required("agenda_culturel.view_event")
|
||||
def administration(request):
|
||||
|
||||
# get information about recent modifications
|
||||
days = [date.today()]
|
||||
for i in range(0, 2):
|
||||
days.append(days[-1] + timedelta(days=-1))
|
||||
daily_modifications = Event.get_count_modifications([(d, 1) for d in days])
|
||||
|
||||
# get last created events
|
||||
events = queryset=Event.objects.all().order_by("-created_date")[:10]
|
||||
|
||||
# get info about batch information
|
||||
newest = BatchImportation.objects.filter(recurrentImport=OuterRef("pk")).order_by(
|
||||
"-created_date"
|
||||
)
|
||||
imported_events = RecurrentImport.objects.annotate(
|
||||
last_run_status=Subquery(newest.values("status")[:1])
|
||||
)
|
||||
|
||||
nb_failed = (imported_events
|
||||
.filter(last_run_status=BatchImportation.STATUS.FAILED)
|
||||
.count())
|
||||
nb_canceled = (imported_events
|
||||
.filter(last_run_status=BatchImportation.STATUS.CANCELED)
|
||||
.count())
|
||||
nb_running = (imported_events
|
||||
.filter(last_run_status=BatchImportation.STATUS.RUNNING)
|
||||
.count())
|
||||
nb_all = imported_events.count()
|
||||
|
||||
return render(
|
||||
request,
|
||||
"agenda_culturel/administration.html",
|
||||
{"daily_modifications": daily_modifications, "events": events, "nb_failed": nb_failed, "nb_canceled": nb_canceled,
|
||||
"nb_running": nb_running, "nb_all": nb_all},
|
||||
)
|
||||
|
||||
|
||||
@login_required(login_url="/accounts/login/")
|
||||
@permission_required("agenda_culturel.view_event")
|
||||
@ -1024,12 +1082,7 @@ def moderation(request):
|
||||
paginator = PaginatorFilter(filter, 10, request)
|
||||
page = request.GET.get("page")
|
||||
|
||||
daily_modifications = []
|
||||
if not page or page == 1:
|
||||
days = [date.today()]
|
||||
for i in range(0, 2):
|
||||
days.append(days[-1] + timedelta(days=-1))
|
||||
daily_modifications = Event.get_count_modifications([(d, 1) for d in days])
|
||||
|
||||
try:
|
||||
response = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
@ -1040,7 +1093,7 @@ def moderation(request):
|
||||
return render(
|
||||
request,
|
||||
"agenda_culturel/moderation.html",
|
||||
{"filter": filter, "paginator_filter": response, "daily_modifications": daily_modifications},
|
||||
{"filter": filter, "paginator_filter": response},
|
||||
)
|
||||
|
||||
|
||||
@ -1194,21 +1247,27 @@ def event_search(request, full=False):
|
||||
tags = None
|
||||
places = None
|
||||
|
||||
qs = get_event_qs(request).order_by("-start_day")
|
||||
if not request.user.is_authenticated:
|
||||
qs = qs.filter((Q(other_versions__isnull=True) |
|
||||
Q(other_versions__representative=F('pk')) |
|
||||
Q(other_versions__representative__isnull=True)))
|
||||
if full:
|
||||
filter = SearchEventFilter(
|
||||
request.GET,
|
||||
queryset=get_event_qs(request).order_by("-start_day"),
|
||||
queryset=qs,
|
||||
request=request,
|
||||
)
|
||||
else:
|
||||
filter = SimpleSearchEventFilter(
|
||||
request.GET,
|
||||
queryset=get_event_qs(request).order_by("-start_day"),
|
||||
queryset=qs,
|
||||
request=request,
|
||||
)
|
||||
if 'q' in request.GET:
|
||||
categories = Category.objects.filter(name__icontains=request.GET['q'])
|
||||
tags = [item for row in Event.objects.extra(where=['%s ILIKE ANY (tags)'], params=[request.GET['q']]).values_list('tags', flat=True).distinct() for item in row]
|
||||
tags = list(set([item for row in Event.objects.extra(where=['%s ILIKE ANY (tags)'], params=[request.GET['q']]).values_list('tags', flat=True).distinct() for item in row]))
|
||||
tags.sort(key=lambda x: remove_accents(x).lower())
|
||||
places = Place.objects.filter(Q(name__icontains=request.GET['q']))
|
||||
|
||||
paginator = PaginatorFilter(filter, 10, request)
|
||||
|
Loading…
x
Reference in New Issue
Block a user