diff --git a/dockerfile-dev-with-volumes/README.adoc b/dockerfile-dev-with-volumes/README.adoc
index 978bd698ed..a902038a23 100755
--- a/dockerfile-dev-with-volumes/README.adoc
+++ b/dockerfile-dev-with-volumes/README.adoc
@@ -108,6 +108,13 @@ MIGRATION_MODULES = {'flatpages': 'pod.db_migrations'}
# pour avoir le maximum de log sur la console
LOGGING = {}
+# PUSH NOTIFICATIONS
+# Les clés VAPID peuvent être générées avec https://web-push-codelab.glitch.me/
+WEBPUSH_SETTINGS = {
+ "VAPID_PUBLIC_KEY": "",
+ "VAPID_PRIVATE_KEY": "",
+ "VAPID_ADMIN_EMAIL": "contact@example.org"
+}
----
== Commandes
diff --git a/pod/authentication/forms.py b/pod/authentication/forms.py
index 1a917c0a1b..e920bae91d 100644
--- a/pod/authentication/forms.py
+++ b/pod/authentication/forms.py
@@ -49,6 +49,17 @@ class Meta(object):
fields = []
+class SetNotificationForm(forms.ModelForm):
+ """Push notification preferences form."""
+
+ def __init__(self, *args, **kwargs):
+ super(SetNotificationForm, self).__init__(*args, **kwargs)
+
+ class Meta(object):
+ model = Owner
+ fields = ["accepts_notifications"]
+
+
User = get_user_model()
diff --git a/pod/authentication/models.py b/pod/authentication/models.py
index b788045410..1cd8c126fd 100644
--- a/pod/authentication/models.py
+++ b/pod/authentication/models.py
@@ -105,6 +105,12 @@ class Owner(models.Model):
)
accessgroups = models.ManyToManyField("authentication.AccessGroup", blank=True)
sites = models.ManyToManyField(Site)
+ accepts_notifications = models.BooleanField(
+ verbose_name=_("Accept notifications"),
+ default=None,
+ null=True,
+ help_text=_("Receive push notifications on your devices."),
+ )
class Meta:
verbose_name = _("Owner")
diff --git a/pod/locale/fr/LC_MESSAGES/django.mo b/pod/locale/fr/LC_MESSAGES/django.mo
index 190518175f..ee898c9eed 100644
Binary files a/pod/locale/fr/LC_MESSAGES/django.mo and b/pod/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/pod/locale/fr/LC_MESSAGES/django.po b/pod/locale/fr/LC_MESSAGES/django.po
index 30a923534e..b0db4d7358 100644
--- a/pod/locale/fr/LC_MESSAGES/django.po
+++ b/pod/locale/fr/LC_MESSAGES/django.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pod\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-22 16:41+0200\n"
+"POT-Creation-Date: 2023-09-27 12:16+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: obado \n"
"Language-Team: Pod Team pod@esup-portail.org\n"
@@ -100,6 +100,14 @@ msgstr "Commentaire"
msgid "Picture"
msgstr "Image"
+#: pod/authentication/models.py
+msgid "Accept notifications"
+msgstr "Accepter les notifications"
+
+#: pod/authentication/models.py
+msgid "Receive push notifications on your devices."
+msgstr "Recevez des notifications push sur vos appareils"
+
#: pod/authentication/models.py pod/live/models.py pod/meeting/models.py
#: pod/podfile/models.py pod/video/admin.py pod/video/models.py
#: pod/video_search/templates/search/search.html
@@ -820,6 +828,7 @@ msgstr "Le fichier doit être au format VTT."
#: pod/chapter/models.py pod/completion/models.py pod/enrichment/models.py
#: pod/playlist/templates/playlist/playlist_card.html pod/video/models.py
+#: pod/video_encode_transcript/utils.py
msgid "video"
msgstr "vidéo"
@@ -2118,8 +2127,8 @@ msgid ""
msgstr ""
"Les champs \"Début\" et \"Fin\" doivent contenir des valeurs en secondes. "
"Lancez la lecture de la vidéo, mettez sur pause et cliquez sur \"Récupérer "
-"le temps depuis le lecteur\" pour renseigner automatiquement le champ \"Début"
-"\". Vous pouvez le faire également pour remplir le champ \"Fin\"."
+"le temps depuis le lecteur\" pour renseigner automatiquement le champ "
+"\"Début\". Vous pouvez le faire également pour remplir le champ \"Fin\"."
#: pod/enrichment/templates/enrichment/edit_enrichment.html
msgid "You cannot overlap enrichments."
@@ -2624,8 +2633,8 @@ msgid ""
"This video was uploaded to Pod; its origin is %(type)s: %(url)s"
msgstr ""
-"Cette vidéo a été téléversée sur Pod ; son origine est %(type)s : %(url)s"
+"Cette vidéo a été téléversée sur Pod ; son origine est %(type)s : %(url)s"
#: pod/import_video/views.py pod/meeting/views.py
msgid "Try changing the record type or address for this recording."
@@ -2636,8 +2645,8 @@ msgstr ""
#: pod/import_video/views.py
#, python-format
msgid ""
-"This video '%(name)s' was uploaded to Pod; its origin is Youtube: %(url)s"
+"This video '%(name)s' was uploaded to Pod; its origin is Youtube: %(url)s"
msgstr ""
"Cette vidéo « %(name)s » a été téléversée sur Pod ; son origine est "
"Youtube : %(url)s"
@@ -4731,6 +4740,14 @@ msgstr "Mes fichiers"
msgid "Claim a record"
msgstr "Revendiquer un enregistrement"
+#: pod/main/templates/navbar.html pod/progressive_web_app/templates/debug.html
+msgid "Notifications settings"
+msgstr "Paramètres de notifications"
+
+#: pod/main/templates/navbar.html
+msgid "Install"
+msgstr "Installer"
+
#: pod/main/templates/navbar.html
msgid "Log out"
msgstr "Déconnexion"
@@ -5526,16 +5543,16 @@ msgid ""
msgstr ""
"\n"
"
Bonjour,\n"
-"
%(owner)s vous invite à une réunion récurrente "
-"%(meeting_title)s.
\n"
+"
%(owner)s vous invite à une réunion récurrente "
+"%(meeting_title)s.
\n"
"
Date de début : %(start_date_time)s
\n"
"
Récurrent jusqu’à la date : %(end_date)s
\n"
"
La réunion se tiendra tou(te)s les %(frequency)s %(recurrence)s "
"p>\n"
"
Voici le lien pour rejoindre la réunion :\n"
" %(join_link)s
\n"
-"
Vous avez besoin de ce mot de passe pour entrer : "
-"%(password)s
\n"
+"
Vous avez besoin de ce mot de passe pour entrer : "
+"%(password)s
\n"
"
Cordialement
\n"
" "
@@ -5561,8 +5578,8 @@ msgstr ""
"
Date de fin : %(end_date)s
\n"
"
Voici le lien pour rejoindre la réunion :\n"
" %(join_link)s
\n"
-"
Vous avez besoin de ce mot de passe pour entrer : "
-"%(password)s
\n"
+"
Vous avez besoin de ce mot de passe pour entrer : "
+"%(password)s
\n"
"
Cordialement
\n"
" "
@@ -6254,6 +6271,22 @@ msgstr "Vous ne pouvez pas voir ce dossier."
msgid "You cannot edit this file."
msgstr "Vous ne pouvez pas éditer ce fichier."
+#: pod/progressive_web_app/templates/notification_toast.html
+msgid "Get application notifications"
+msgstr "Recevez les notifications de l'application"
+
+#: pod/progressive_web_app/templates/notification_toast.html
+msgid ""
+"Get notified for specific events (when one of your video encoding is "
+"completed)."
+msgstr ""
+"Recevez des notifications pour des événements spécifiques (lorsque "
+"l'encodage d'une de vos vidéos est terminé)"
+
+#: pod/progressive_web_app/templates/notification_toast.html
+msgid "Allow"
+msgstr "Autoriser"
+
#: pod/recorder/admin.py
msgid "Delete selected Recording file treatments + source files"
msgstr ""
@@ -6538,8 +6571,8 @@ msgstr "Prévisualisation d’enregistrement"
#: pod/video/templates/videos/video-element.html
msgid ""
"To view this video please enable JavaScript, and consider upgrading to a web "
-"browser that supports HTML5 video"
+"browser that supports HTML5 video"
msgstr ""
"Pour visionner cette vidéo, veuillez activer JavaScript et envisager de "
"passer à un navigateur Web qui un nouvel enregistrement a été ajouté sur la plateforme "
"%(title_site)s à partir de l’enregistreur \"%(recorder)s\". Pour "
-"l’ajouter, cliquez sur le lien ci dessous.
"
-"%(link_url)s Si le lien n’est pas actif, il faut le copier-coller "
-"dans la barre d’adresse de votre navigateur.
Cordialement
"
+"l’ajouter, cliquez sur le lien ci dessous.%(link_url)s Si le lien n’est pas actif, il "
+"faut le copier-coller dans la barre d’adresse de votre navigateur."
+"i>
Cordialement
"
#: pod/recorder/views.py
msgid "New recording added."
@@ -6634,6 +6668,17 @@ msgstr "L’enregistrement a été supprimé."
msgid "Recorder for Studio not found."
msgstr "Enregistreur studio non trouvé."
+#: pod/settings.py
+msgid ""
+"Pod is aimed at users of our institutions, by allowing the publication of "
+"videos in the fields of research (promotion of platforms, etc.), training "
+"(tutorials, distance training, student reports, etc.), institutional life "
+"(video of events), offering several days of content."
+msgstr ""
+"Pod a pour but de faciliter la mise à disposition de vidéo et de ce "
+"fait, d’encourager l’utilisation de celles-ci dans le cadre de "
+"l’enseignement et la recherche."
+
#: pod/urls.py
msgid "Pod Administration"
msgstr "Administration de Pod"
@@ -6968,8 +7013,8 @@ msgid ""
"%(url)s\n"
msgstr ""
"vous pouvez changer la date de suppression en éditant votre vidéo :\n"
-"