From 6113409ca92decf9d107799124f35dc43ae0a281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89loi=20Rivard?= Date: Wed, 16 Aug 2023 11:40:10 +0200 Subject: [PATCH] Add PWA functionality to app and notifications capabilities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owners can set their notification preference. Notifications are sent when video encoding is complete. Co-authored-by: Éloi Rivard Co-authored-by: Loan Robert --- dockerfile-dev-with-volumes/README.adoc | 7 ++ pod/authentication/forms.py | 11 ++++ pod/authentication/models.py | 6 ++ pod/locale/fr/LC_MESSAGES/django.mo | Bin 165913 -> 167065 bytes pod/locale/fr/LC_MESSAGES/django.po | 43 +++++++++++++ pod/locale/fr/LC_MESSAGES/djangojs.mo | Bin 17393 -> 17858 bytes pod/locale/fr/LC_MESSAGES/djangojs.po | 20 ++++++ pod/locale/nl/LC_MESSAGES/django.po | 38 +++++++++++ pod/locale/nl/LC_MESSAGES/djangojs.po | 18 ++++++ pod/main/configuration.json | 24 ++++++- pod/main/templates/base.html | 6 +- pod/main/templates/navbar.html | 5 ++ pod/main/views.py | 23 ++++++- pod/progressive_web_app/__init__.py | 0 pod/progressive_web_app/apps.py | 8 +++ .../static/img/icon_x1024.png | Bin 0 -> 59934 bytes .../static/img/icon_x128.png | Bin 0 -> 4317 bytes .../static/img/icon_x192.png | Bin 0 -> 6707 bytes .../static/img/icon_x384.png | Bin 0 -> 16231 bytes .../static/img/icon_x48.png | Bin 0 -> 1530 bytes .../static/img/icon_x512.png | Bin 0 -> 23871 bytes .../static/img/icon_x72.png | Bin 0 -> 2356 bytes .../static/img/icon_x96.png | Bin 0 -> 3160 bytes .../static/img/splash-512.png | Bin 0 -> 14292 bytes .../static/js/notification-toast.js | 58 +++++++++++++++++ .../static/js/serviceworker.js | 45 +++++++++++++ pod/progressive_web_app/templates/debug.html | 24 +++++++ .../templates/notification_toast.html | 32 ++++++++++ pod/progressive_web_app/urls.py | 10 +++ pod/progressive_web_app/utils.py | 16 +++++ pod/progressive_web_app/views.py | 24 +++++++ pod/settings.py | 60 ++++++++++++++++++ pod/urls.py | 11 ++++ pod/video/static/js/video_edit.js | 4 ++ pod/video/templates/videos/video_edit.html | 9 ++- pod/video_encode_transcript/encode.py | 7 +- pod/video_encode_transcript/utils.py | 34 ++++++++++ requirements.txt | 2 + 38 files changed, 540 insertions(+), 5 deletions(-) create mode 100644 pod/progressive_web_app/__init__.py create mode 100644 pod/progressive_web_app/apps.py create mode 100644 pod/progressive_web_app/static/img/icon_x1024.png create mode 100644 pod/progressive_web_app/static/img/icon_x128.png create mode 100644 pod/progressive_web_app/static/img/icon_x192.png create mode 100644 pod/progressive_web_app/static/img/icon_x384.png create mode 100644 pod/progressive_web_app/static/img/icon_x48.png create mode 100644 pod/progressive_web_app/static/img/icon_x512.png create mode 100644 pod/progressive_web_app/static/img/icon_x72.png create mode 100644 pod/progressive_web_app/static/img/icon_x96.png create mode 100644 pod/progressive_web_app/static/img/splash-512.png create mode 100644 pod/progressive_web_app/static/js/notification-toast.js create mode 100644 pod/progressive_web_app/static/js/serviceworker.js create mode 100644 pod/progressive_web_app/templates/debug.html create mode 100644 pod/progressive_web_app/templates/notification_toast.html create mode 100644 pod/progressive_web_app/urls.py create mode 100644 pod/progressive_web_app/utils.py create mode 100644 pod/progressive_web_app/views.py 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 f47d3026c6406f08c6a69a4e9c727fcfcd7e398e..9c8610fef064b2526fad37c1e5992a5ec78cf8d4 100644 GIT binary patch delta 38977 zcmaLg1$0zb!}k3%!QI^^K!6~@-QC@#Ku7`!gd`-vp#ueqw?OdXTD(Z1xYOcVC{opN?m{@nMMis4Eu!C*p9SP*XFieA^Q8So@8rV9U ze!zMjbCZ4_^{kUEHD*IKTnJNQ6;%Dkm<+pNQ;a~>+qIPSSKtH*sqreR;xp91KB1mn z@@3pu19M?h%!ZMe7009MFGKdOvjz3&_M+PP6Eos1%!Kc)X_vG98ezfZX698<1)HN9 z3`ITLftVDhU|yVyYIq-Nz^72cz~E40?;Z$;JL zgIbAGr~zF;k2cFQ0-9OI^=9S;P)k`F^=zwH>!CVoftqOtn;we+#J|NtxCS+$i>Pwf zQT5)V2I8~9#M5qI{Wa38B&b6_Oo;)Q6Dy;Zx)W;Tv6vi(+4w|MgR?L#u0TDq9jFdZ z+4x_ma*u8NKU9CIH?saJm}R3`0bfi(ydnQP^V)W>VO@RCiEJ$;-75XlVpo|W@#}k8C6gfnxh)(hFZEPEQ-TW4g7-Y zU^}Yg{iuPSM3ujadQ?wQEA#=i7s~!--l)xy0ePIB1TvBlV>8B~I$n&$aJ@~xiQ4@i zPy@)h)s*wc%*4y0I%tNPX-`a#F{qUtgZfmRjqz{`rqKD{PC!d|*m@GRd;df&^%c~6 z;V!Dimx*pb@P=b-V^ua1-iN zZa->?uc6-ck1!Xe+Rkeki=sLR#WFYy)8Q5@h)1zFzQMv+V263ct`>&=(_61DJ%_a0zO_du;l38-KNv^;g04yUbD+ zK+Uuqy0I2&B|>a^EPBsB>e)_2J%UB3b~d0M(IHg5)2Q~YV@Z6BI&JRVW`gy0v;JjC zh#^5svkLw2FVr*sgqm6UJ&rRK^I&9NSf;}+Czeqi%o*!=%co6Tpx*_^3Sk0b+X!1-*voV7k`g*u>C zCIaXmiiwXcO5YC)TjZvQ62cB_Dp3P?}gckdr&UMP*~paE(^olp~sMU@|g zDmU4>40CwTKLO3`B6^qF`T{lc4>mvPA=5xs)Fv#7TB%Cb23V7LJ5;?n)>WwXw_!Xy zg6ii4=I{`>KtP-AHTq++-_0g0je0Y7#2grnYG@Lwfd!ZsS70JMfg0F(>n+Sl{5fhR zQvG2c6>3HO(W4GZ5zvw~M2$Si#-mZ2a~x_3=b{F%0(0Y5)T{Rjs@!X=jfoGNm1%<7 z^_^_IJ0>O`i)wG^Vb;Gbfw3fLgg0!#7np#!bHuDnLe#*rV?r#1#jylx0KuqdI~27? zrl2}lhU#zws=e))1oxsg>Cq#se|!S(NRXdUOBnB{S)$aa3fWKt@Ix(WDbz}|L=7m& z#(Sd54Z=h?7Hi;S8$X9ysVk@zf94@jjX4DKVxDOPwDc=&#&*<<4xl#OQEY|}FdtSpVHygw z##l$8FZnaD0B%Js`AyUW?qgDXg=+t^N%uGjPnwaZMU5;gro=p04NG8oj6n@_4XWW? zsPYFeD;`I!$bD2tFHjwQ#QYfll&M!3QxPwL#dQ8_5XeJ9464EmOzm=uu7 z!q|+3a2uAyyI35vo;6=e8(~@EKVVZlgnwbib3AW+hNH0OpXS5pIkqHT<2=v55`pOi zD&Se{fhjMTg8i@y@jp;sGz!qF8Vp30yMnn{sah9#>k;p9$*jm8)Jh(*9!I_4&S7SJ zh4-PSTo_{Gqfn1<7V23q z#$31xHPEA|c5k3I?L91t&piZE5O7~NBMLxOD34>YDYnIn*bR%{Fds5gt$(39%zo2s z&b+7&%3Et-YT^x1^d_K97K=J|15nRsG-@+0K<)aas0Oy7p4~oF17~dd zMbt{(Kn>uj^(|^b&Mor|DRJ7Sxp5h)qr<2H zokw+e6*J*IoBkO!fke0MBgO2*)1p?SD5j@>rD|SOK*{ZBPU4jA}Q?#v{<9V--U{yLu6-!_BBoxeqn-Q>c+& zLoM|SOn@Iy1906l9VNqr#M7b5XGPU7f|_6@RQvT&d#Lq2)?XPRBvi&|tcSm#-udrv z8L++?;>l41%!qpSIZ>N159$=uMXiV@ zn1Dty0<~MGVKQ8cYIqxJCI_q+P%H2dRqiDw$Iqzp$)A`GGosqdhMI9H)T66~8fXKI zr}N*OfEsL#YM?XfJrIgXaVV;zF*biH`VgOoT8V||#$%{*Pf(lg9cloHpPC8!q9#%j zHK00}S?9kE0Y4HVQ5{diD!3B0bPrGid5Rj~JDVQwnVETFOhI}EOo@3=GcAD`u^j4j zHATG%gHZhp#N0anKM?S422=z4F%_OcJ;R%*jvwNDe1(N@>T~m=*<*c$ zRKz==+Ubc}>1fm@AB-N2bOHg5a0)8E3^nrA=pB&t3~J;zPz}Dp-uMZ%Lg6n=2mP(X ztYcB_PQg+*6SW79zhM1a5jaPJI`V&MR-&A>0V=(djrT&$XeeqX6H&W(I%-${ifQl+ zrp4Q+J@FQGs^Yye1F3*&r`jvlUkx=QK^?V6H57{a3>bxOT#jn^59=k=3Oq)YdxiR} z$oSgqg#c8%5~jyisJ#@1>Mz3D-$OvpVi>A}$*6%WMvZWTbsuUEoUvZP8pQ8nHS~XD z_CimLAU+$%W0JSVX*iC!@4x0d95Ch4-;E=J;S<$t_XGG7?!Ck2A(5%*Cu^Y{tTP8tdRE)DqVI z&)C5li2es&5x*zte?%7#xVSq zcpAs$UE<$SyFIbX^mR~=q#f!N+a1+#AJjmHV}2Zu z+JqaiB3?z+&zj8CFN|7&3aEj!$6V+MC7_1KppHqLEwB#tNOqx?@(}vrNt^x}we%mY z@sqo}ui9j&8D_E;Mtwi1j&5v%TDeGMA|B^E0$S23SPqxj0@qL@e1ZDrk~W1IXc<&` zb<~?P5Y<66CPNQu;N!78#-UEfaa8$-)(`0Y{7;_JJR?8Ur&L8$!Rn|Px3KvGP)qs) zs>21SnXIw-d(ch%JZg#GqE;?pD)Y!vq1w%b`Yb4hS#|zP6HvissD|64o_TlFOkz

|7qaZaAbJjy(%m8hGB^REK!NYE+hgL+nD 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 fm${kR7BVC2 delta 4069 zcmYk;39wgH9S899P!?qqP~HO<9wE9wvm#Qxr8fT%$Bn6P0|S{S{OsiZmo~ z1qC;7f37u|IuqJ7spU3fGhykp$ly9PQ%>6F`~Tl&Jj3t*IrskW|K4+c=XWmeg%wR7 zFKep(Y2fy&i}sAzO}y8=l+XA;Zy(y4{-tcsn|UVh;9!2i^Eh~?QYQ1t%BMKh@dw<4 z;|7$n9S^5drK9q6x=*cKsI#XpuH_VNq<`gIAN%s3oWM~7OBu_#9Lg)$gKOB6Yq>Y? z%bpao?RA4;arpU?NBGAZEbxnCq^p zT+88(f5{AN3zNjZvJXF@TbD1`!a=*ZujiKuI+^i)?8RBM3gsA@L^*-7UCw20d>NC< zT6O+g>DqD|GvddX+Sts@ z{9PucJ)0X&W@bL0`F&JYLWkp^dcvAUWCL^k6Z{JQP#t$uFveVlF&UlAHXc4y{xkB$PGsb_Gb4YV zdEk4@19#Z9l#v|G9Ct7eTEJFb#}w=R%naY=Fm`iMQa^&0z06@UH=lXljWwOj;At9c z`F-V9`d7MpTGn<1v-abdC23^XF8n@RmeOopyu9&jrUr-3z!jK%GAPb)%gv~^$#&Ke6jMi>iaEB&HRH| z;*U7Gsg(b6d&eV6o<-S9NCgqxXKd4n1Fr%c8_n;`%0Q3mYYD6VPD43|<_l=ZZnWi#``_n8;S zC(H||yUm=LH`Cb5c;>njtMjKb6IsYC#pO)REM9M~am zFxzT1lbMI<`u&Uwpv) zp#Of2Y9GZEO$YPf`E2JkR8M6yNAn|QceEJAbWW#Rl^QeCE_!x(msYI|Ryg_nVVvsu zQq%B)kGdKJ>Gt+I=_dVr5+i@1nten9V-4bR3>!|L^ zbIj6iWBvdCf9bS1@j3k~%@(FN=WsAjV+M9HQ%tLA3zxObfPT%?$om|?U94w*H=4Q6 zA#CLlOokS41~;*meY#DjFULAal^($Q52^0T5zGTRnQgd%o>jJTE=PJvB;}pV3?F1N z^fp(suQWcx^-Lz_N#}{Y;t=`&y3XrPsJk-3@Uk7}aR`@lH?C&}@EiwmD>J|^*qy!G z{q@8F%xbJ;_Tz1EZrpT$Z1T5X4iD`!dT2cT*{36`s(-rW~9$BOY|G& z`nQ;YZebI5MwJ`?zn!o1ka$=m#aV{C z#Es%^F;6@pHi{*pRixc7&K8&FKue`(0_{Sw>xGH>JI0dM$_WlKvu}yxMB11J<(ph7 zE)ow2JFUJ|AL9igEon^~+MvEndsO`t>rcgH)p2%L>MAYSzO+6hol8Uyu|}i~7t6(5 zagRvLx?d@t64`cX-)>Njschq;Vsv#JZWSkqCv%`J6*q_-Kndav1bTkp&5@#-Ku=T5Pm@QSIo^L$<}z9Fv2^XKbyh<+mN zzy|eK@BaE-;tnxP>?4jAX(x-P#qHudB5ihq`g{Lt`cuVG;(Ov2@t{b%Su7MYGXI@& zM%yHs>pg#ZRfa)Te_dtxe$~H^qr^|D<8ZY&r8>Tt7gqh_D{tc&V!T+E)QuG_!d5Pe zMA|u`cfHs6xaLd!(zUJspdPD^8~pE8$2K>2Eo&ay)b(0Rzviy#`ySb}>V?C0?RvFs Mc~jTANh1dS4+n;f)&Kwi diff --git a/pod/locale/fr/LC_MESSAGES/djangojs.po b/pod/locale/fr/LC_MESSAGES/djangojs.po index 0b5914f280..a79a3c312f 100644 --- a/pod/locale/fr/LC_MESSAGES/djangojs.po +++ b/pod/locale/fr/LC_MESSAGES/djangojs.po @@ -546,6 +546,22 @@ msgstr "Voir plus" msgid "This folder is empty" msgstr "Ce dossier est vide" +#: pod/progressive_web_app/static/js/notification-toast.js +msgid "Error" +msgstr "Erreur" + +#: pod/progressive_web_app/static/js/notification-toast.js +msgid "" +"Don't forget to allow notifications from this website in your browser's " +"settings!" +msgstr "" +"N'oubliez pas d'autoriser les notifications provenant de ce site web dans " +"votre navigateur !" + +#: pod/progressive_web_app/static/js/notification-toast.js +msgid "Error during unsubscription..." +msgstr "Erreur durant la désinscription..." + #: pod/video/static/js/ajax-display-channels.js msgid "Channel" msgstr "Chaîne" @@ -757,6 +773,10 @@ msgstr "Créer catégorie" msgid "Select the general type of the video." msgstr "Sélectionnez le type général de vidéo." +#: pod/video/static/js/video_edit.js +msgid "Get notified when the video encoding is finished." +msgstr "Recevez une notification lorsque l'encodage de la vidéo est terminé." + #: pod/video/static/js/video_stats_view.js msgid "Title" msgstr "Titre" diff --git a/pod/locale/nl/LC_MESSAGES/django.po b/pod/locale/nl/LC_MESSAGES/django.po index bae4f6d043..d2ca7dd64b 100644 --- a/pod/locale/nl/LC_MESSAGES/django.po +++ b/pod/locale/nl/LC_MESSAGES/django.po @@ -100,6 +100,14 @@ msgstr "" msgid "Picture" msgstr "" +#: pod/authentication/models.py +msgid "Accept notifications" +msgstr "" + +#: pod/authentication/models.py +msgid "Receive push notifications on your devices." +msgstr "" + #: 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 @@ -4486,6 +4494,10 @@ msgstr "" msgid "Claim a record" msgstr "" +#: pod/main/templates/navbar.html pod/progressive_web_app/templates/debug.html +msgid "Notifications settings" +msgstr "" + #: pod/main/templates/navbar.html msgid "Log out" msgstr "Uitloggen" @@ -5873,6 +5885,24 @@ msgstr "" msgid "You cannot edit this file." msgstr "" +#: pod/progressive_web_app/templates/notification_toast.html +msgid "Get application notifications" +msgstr "" + +#: pod/progressive_web_app/templates/notification_toast.html +msgid "" +"Get notified for specific events (when one of your video encoding is " +"completed)." +msgstr "" + +#: pod/progressive_web_app/templates/notification_toast.html +msgid "Allow" +msgstr "" + +#: pod/progressive_web_app/templates/notification_toast.html +msgid "Deny on all devices" +msgstr "" + #: pod/recorder/admin.py msgid "Delete selected Recording file treatments + source files" msgstr "" @@ -6220,6 +6250,14 @@ msgstr "" msgid "Recorder for Studio not found." msgstr "" +#: pod/settings.py +msgid "" +"Podeduc 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/urls.py msgid "Pod Administration" msgstr "" diff --git a/pod/locale/nl/LC_MESSAGES/djangojs.po b/pod/locale/nl/LC_MESSAGES/djangojs.po index c2472d12c4..85c6aa8a2b 100644 --- a/pod/locale/nl/LC_MESSAGES/djangojs.po +++ b/pod/locale/nl/LC_MESSAGES/djangojs.po @@ -521,6 +521,20 @@ msgstr "" msgid "This folder is empty" msgstr "" +#: pod/progressive_web_app/static/js/notification-toast.js +msgid "Error" +msgstr "" + +#: pod/progressive_web_app/static/js/notification-toast.js +msgid "" +"Don't forget to allow notifications from this website in your browser's " +"settings!" +msgstr "" + +#: pod/progressive_web_app/static/js/notification-toast.js +msgid "Error during unsubscription..." +msgstr "" + #: pod/video/static/js/ajax-display-channels.js msgid "Channel" msgstr "" @@ -731,6 +745,10 @@ msgstr "" msgid "Select the general type of the video." msgstr "" +#: pod/video/static/js/video_edit.js +msgid "Get notified when the video encoding is finished." +msgstr "" + #: pod/video/static/js/video_stats_view.js msgid "Title" msgstr "Titel" diff --git a/pod/main/configuration.json b/pod/main/configuration.json index d1af4d3ecd..695706b6ef 100644 --- a/pod/main/configuration.json +++ b/pod/main/configuration.json @@ -1714,6 +1714,28 @@ "fr": "Configuration application podfile" } }, + "progressive_web_app": { + "description": {}, + "settings": { + "WEBPUSH_SETTINGS": { + "default_value": "```python\n{\n 'VAPID_PUBLIC_KEY': '',\n 'VAPID_PRIVATE_KEY': '',\n 'VAPID_ADMIN_EMAIL': 'contact@esup-portail.org'\n}\n```", + "description": { + "en": [ + "" + ], + "fr": [ + "Les clés VAPID sont nécessaires à la lib [django-webpush](https://github.com/safwanrahman/django-webpush). Elles peuvent être générées avec [https://web-push-codelab.glitch.me/]()" + ] + }, + "pod_version_end": "", + "pod_version_init": "" + } + }, + "title": { + "en": "", + "fr": "Configuration application progressive_web_app" + } + }, "recorder": { "description": {}, "settings": { @@ -4965,4 +4987,4 @@ } } } -] \ No newline at end of file +] diff --git a/pod/main/templates/base.html b/pod/main/templates/base.html index 7a8cf660b1..31ccc6947f 100644 --- a/pod/main/templates/base.html +++ b/pod/main/templates/base.html @@ -1,4 +1,6 @@ {% load static i18n custom_tags %} +{% load pwa %} +{% load webpush_notifications %} {% get_current_language as LANGUAGE_CODE %} @@ -46,8 +48,9 @@ {% if request.GET.is_iframe %} {% endif %} + {% progressive_web_app_meta %} {% endspaceless %} - + {% webpush_header %} @@ -116,6 +119,7 @@

{{page_title|capfirst}}

{% endif %} + {% include "notification_toast.html" %} {% endblock content %} {% if not request.GET.is_iframe %} diff --git a/pod/main/templates/navbar.html b/pod/main/templates/navbar.html index e3e790cb26..44d5a3f84a 100644 --- a/pod/main/templates/navbar.html +++ b/pod/main/templates/navbar.html @@ -243,6 +243,11 @@
{% if user.get_full_name != '' %}{{ user.get_ {% trans 'Perform a BigBlueButton live' %} {% endif %} {% endif %} + {% comment %} Gestion de mon compte {% endcomment %} diff --git a/pod/main/views.py b/pod/main/views.py index bb482bffbe..3c61ba5073 100644 --- a/pod/main/views.py +++ b/pod/main/views.py @@ -34,7 +34,7 @@ from wsgiref.util import FileWrapper from django.db.models import Q, Count from pod.video.models import Video, remove_accents -from pod.authentication.forms import FrontOwnerForm +from pod.authentication.forms import FrontOwnerForm, SetNotificationForm from django.db.models import Sum import os import mimetypes @@ -395,3 +395,24 @@ def userpicture(request): "userpicture/userpicture.html", {"frontOwnerForm": frontOwnerForm}, ) + + +@csrf_protect +@login_required(redirect_field_name="referrer") +def set_notifications(request): + """Sets 'accepts_notifications' attribute on owner instance.""" + setNotificationForm = SetNotificationForm(instance=request.user.owner) + + if request.method == "POST": + setNotificationForm = SetNotificationForm(request.POST, instance=request.user.owner) + if setNotificationForm.is_valid(): + setNotificationForm.save() + return JsonResponse({"success": True, "user_accepts_notifications": request.user.owner.accepts_notifications}) + else: + messages.add_message( + request, + messages.ERROR, + _("One or more errors have been found in the form."), + ) + + return JsonResponse({"success": False}) diff --git a/pod/progressive_web_app/__init__.py b/pod/progressive_web_app/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pod/progressive_web_app/apps.py b/pod/progressive_web_app/apps.py new file mode 100644 index 0000000000..b8a90d624f --- /dev/null +++ b/pod/progressive_web_app/apps.py @@ -0,0 +1,8 @@ +from django.apps import AppConfig + + +class ProgressiveWebAppConfig(AppConfig): + """Push notification preferences.""" + + default_auto_field = "django.db.models.BigAutoField" + name = "pod.progressive_web_app" diff --git a/pod/progressive_web_app/static/img/icon_x1024.png b/pod/progressive_web_app/static/img/icon_x1024.png new file mode 100644 index 0000000000000000000000000000000000000000..eee5b7eb104065abaa875f4d661d981b8dbe38fd GIT binary patch literal 59934 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 OXHFXG79O{K@V@|Y@uh_T literal 0 HcmV?d00001 diff --git a/pod/progressive_web_app/static/img/icon_x128.png b/pod/progressive_web_app/static/img/icon_x128.png new file mode 100644 index 0000000000000000000000000000000000000000..526d8d1cbc109fb9f411ea93880258b7f6196d2c GIT binary patch literal 4317 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 Zr==Or0@__?eD$ILnrb?#l`7WZ{{cNo3;O^7 literal 0 HcmV?d00001 diff --git a/pod/progressive_web_app/static/img/icon_x192.png b/pod/progressive_web_app/static/img/icon_x192.png new file mode 100644 index 0000000000000000000000000000000000000000..216c676a3652f0bd93aab9b259cc6fdcf3d0ae7f GIT binary patch literal 6707 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 Yls=hcLzB+(`Qry5E2$t+C2rvVf0gQ;sQ>@~ literal 0 HcmV?d00001 diff --git a/pod/progressive_web_app/static/img/icon_x384.png b/pod/progressive_web_app/static/img/icon_x384.png new file mode 100644 index 0000000000000000000000000000000000000000..1a47212800b9d0d9876d83d1a563936233d60657 GIT binary patch literal 16231 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 WXQ@MEvQU}8-vv`^lS*Usz5fFer~upm literal 0 HcmV?d00001 diff --git a/pod/progressive_web_app/static/img/icon_x72.png b/pod/progressive_web_app/static/img/icon_x72.png new file mode 100644 index 0000000000000000000000000000000000000000..15ac15ef9abda09440ca7fe4029ca1351530b22f GIT binary patch literal 2356 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 R|1N new Promise(resolve => setTimeout(resolve, ms)); + const notificationsPreferenceTips = document.querySelector("#notifications-preference-tips"); + const notificationsSpinner = document.querySelector("#notifications-spinner"); + + notificationsSpinner.classList.toggle("d-none"); + webPushAction(registration); + await wait(1000); + let subscription = await registration.pushManager.getSubscription(); + let subscriptionFailed = true; + let acceptsNotifications = false; + let errorMessage = gettext("Error"); + if (webPushAction == subscribe) { + subscriptionFailed = subscription === null || Notification.permission !== "granted"; + acceptsNotifications = true + errorMessage = gettext("Don't forget to allow notifications from this website in your browser's settings!"); + } else if (webPushAction == unsubscribe) { + subscriptionFailed = subscription !== null; + acceptsNotifications = false + errorMessage = gettext("Error during unsubscription..."); + } + + if (subscriptionFailed) { + notificationsPreferenceTips.classList.remove("d-none"); + notificationsPreferenceTips.textContent = errorMessage; + notificationsSpinner.classList.toggle("d-none"); + } else { + const preferenceResponse = await postNotificationPreference(acceptsNotifications, notificationSettingUrl); + if (!preferenceResponse.ok) { + notificationsPreferenceTips.classList.remove("d-none"); + notificationsPreferenceTips.textContent = errorMessage; + notificationsSpinner.classList.toggle("d-none"); + } else { + if (!("d-none" in notificationsPreferenceTips.classList)) notificationsPreferenceTips.classList.add("d-none"); + await wait(500); + notificationsSpinner.classList.toggle("d-none"); + new bootstrap.Toast(document.querySelector('#notification-toast')).hide(); + } + } +} diff --git a/pod/progressive_web_app/static/js/serviceworker.js b/pod/progressive_web_app/static/js/serviceworker.js new file mode 100644 index 0000000000..3a9861976c --- /dev/null +++ b/pod/progressive_web_app/static/js/serviceworker.js @@ -0,0 +1,45 @@ +var staticCacheName = "django-pwa-v" + new Date().getTime(); + +var filesToCache = [ + '/static/img/logoPod.svg', + '/static/img/esup-pod.svg', + '/static/img/icon_x1024.png', +]; + +// Cache on install +self.addEventListener("install", event => { + this.skipWaiting(); + event.waitUntil( + caches.open(staticCacheName) + .then(cache => { + return cache.addAll(filesToCache); + }) + ) +}); + +// Clear cache on activate +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames + .filter(cacheName => (cacheName.startsWith("django-pwa-"))) + .filter(cacheName => (cacheName !== staticCacheName)) + .map(cacheName => caches.delete(cacheName)) + ); + }) + ); +}); + +// Serve from Cache +self.addEventListener("fetch", event => { + event.respondWith( + caches.match(event.request) + .then(response => { + return response || fetch(event.request); + }) + .catch(() => { + return caches.match('offline'); + }) + ) +}); diff --git a/pod/progressive_web_app/templates/debug.html b/pod/progressive_web_app/templates/debug.html new file mode 100644 index 0000000000..c9d15d7b85 --- /dev/null +++ b/pod/progressive_web_app/templates/debug.html @@ -0,0 +1,24 @@ +{% extends 'base.html' %} +{% load i18n %} +{% load static %} +{% load webpush_notifications %} + +{% block page_title %} + Notifications debug +{% endblock %} + +{% block page_content %} + + +{% endblock page_content %} + +{% block more_script %} + +{% endblock more_script %} diff --git a/pod/progressive_web_app/templates/notification_toast.html b/pod/progressive_web_app/templates/notification_toast.html new file mode 100644 index 0000000000..c9f7edbd2b --- /dev/null +++ b/pod/progressive_web_app/templates/notification_toast.html @@ -0,0 +1,32 @@ +{% load webpush_notifications %} +{% load static %} +{% load i18n %} + + +
+ +
+ + + diff --git a/pod/progressive_web_app/urls.py b/pod/progressive_web_app/urls.py new file mode 100644 index 0000000000..bfe76f6236 --- /dev/null +++ b/pod/progressive_web_app/urls.py @@ -0,0 +1,10 @@ +from django.urls import path +from . import views + +app_name = "progressive_web_app" + + +urlpatterns = [ + path("", views.debug, name="debug"), + path("send", views.send, name="send"), +] diff --git a/pod/progressive_web_app/utils.py b/pod/progressive_web_app/utils.py new file mode 100644 index 0000000000..470586cc47 --- /dev/null +++ b/pod/progressive_web_app/utils.py @@ -0,0 +1,16 @@ +from webpush import send_user_notification +from django.templatetags.static import static + + +DEFAULT_ICON = static('img/icon_x1024.png') + + +def notify_user(user, title, message, url=None, icon=None): + """Fills the payload to send a webpush notification to users devices.""" + payload = { + "head": title, + "body": message, + "url": url, + "icon": icon or DEFAULT_ICON, + } + send_user_notification(user=user, payload=payload, ttl=1000) diff --git a/pod/progressive_web_app/views.py b/pod/progressive_web_app/views.py new file mode 100644 index 0000000000..d742cb7002 --- /dev/null +++ b/pod/progressive_web_app/views.py @@ -0,0 +1,24 @@ +from django.shortcuts import render +from .utils import notify_user +from django.http import JsonResponse +from django.core.exceptions import PermissionDenied + + +def debug(request): + """Simple push notification debug page.""" + if not request.user.is_superuser: + raise PermissionDenied() + + return render( + request, + "debug.html", + ) + + +def send(request): + """Send a 'hello world' push notification for debug purpose.""" + if not request.user.is_superuser: + raise PermissionDenied() + + notify_user(request.user, "Hello", "World!") + return JsonResponse({"success": True}) diff --git a/pod/settings.py b/pod/settings.py index 7a6f56d13b..4b54416306 100644 --- a/pod/settings.py +++ b/pod/settings.py @@ -5,6 +5,7 @@ """ import os import importlib.util +from django.utils.translation import gettext_lazy as _ BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # will be update in pod/main/settings.py @@ -65,6 +66,9 @@ "pod.video_encode_transcript", "pod.import_video", "pod.custom", + "pwa", + "pod.progressive_web_app", + "webpush", ] ## @@ -381,6 +385,62 @@ # 'flatpages': 'pod.db_migrations' # } + +# PWA + +PWA_APP_NAME = 'Podeduc' +PWA_APP_DESCRIPTION = _( + "Podeduc 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." +) +PWA_APP_THEME_COLOR = '#0A0302' +PWA_APP_BACKGROUND_COLOR = '#ffffff' +PWA_APP_DISPLAY = 'standalone' +PWA_APP_SCOPE = '/' +PWA_APP_ORIENTATION = 'any' +PWA_APP_START_URL = '/' +PWA_APP_STATUS_BAR_COLOR = 'default' +PWA_APP_ICONS = [ + { + 'src': f'/static/img/icon_x{size}.png', + 'sizes': f"{size}x{size}", + 'purpose': "any maskable", + } + for size in (1024, 512, 384, 192, 128, 96, 72, 48) +] +PWA_APP_ICONS_APPLE = [ + { + 'src': f'/static/img/icon_x{size}.png', + 'sizes': f"{size}x{size}", + } + for size in (1024, 512, 384, 192, 128, 96, 72, 48) +] +PWA_APP_SPLASH_SCREEN = [ + { + 'src': '/static/img/splash-512.png', + 'media': ( + '(device-width: 320px) ' + 'and (device-height: 568px) ' + 'and (-webkit-device-pixel-ratio: 2)' + ) + } +] +PWA_APP_DIR = 'ltr' +PWA_APP_LANG = 'fr-FR' +PWA_APP_SCREENSHOTS = [ + { + 'src': '/static/img/esup-pod.svg', + 'sizes': '750x1334', + "type": "image/png" + } +] +PWA_SERVICE_WORKER_PATH = os.path.join( + BASE_DIR, "pod", "progressive_web_app", "static", "js", "serviceworker.js", +) +PWA_APP_DEBUG_MODE = locals().get("DEBUG", False) + ## # Applications settings (and settings locale if any) # diff --git a/pod/urls.py b/pod/urls.py index d4bafe30ac..d27cab0700 100644 --- a/pod/urls.py +++ b/pod/urls.py @@ -20,6 +20,7 @@ robots_txt, info_pod, userpicture, + set_notifications, ) from pod.main.rest_router import urlpatterns as rest_urlpatterns @@ -68,6 +69,7 @@ url(r"^accounts/change-password/$", auth_views.PasswordChangeView.as_view()), url(r"^accounts/reset-password/$", auth_views.PasswordResetView.as_view()), url(r"^accounts/userpicture/$", userpicture, name="userpicture"), + url(r"^accounts/set-notifications/$", set_notifications, name="set_notifications"), # rest framework url(r"^api-auth/", include("rest_framework.urls")), url(r"^rest/", include(rest_urlpatterns)), @@ -79,6 +81,10 @@ url(r"^custom/", include("pod.custom.urls")), # cut url(r"^cut/", include("pod.cut.urls")), + # pwa + url('', include('pwa.urls')), + # webpush + url(r'^webpush/', include('webpush.urls')) ] # CAS @@ -95,6 +101,11 @@ url(r"^oidc/", include("mozilla_django_oidc.urls")), ] +# PWA +urlpatterns += [ + path("pwa/", include("pod.progressive_web_app.urls", namespace="progressive_web_app")), +] + # BBB: TODO REPLACE BBB BY MEETING if getattr(settings, "USE_MEETING", False): urlpatterns += [ diff --git a/pod/video/static/js/video_edit.js b/pod/video/static/js/video_edit.js index 71c322292a..895e4807c5 100644 --- a/pod/video/static/js/video_edit.js +++ b/pod/video/static/js/video_edit.js @@ -137,3 +137,7 @@ if (document.getElementById("video_form")) { } } /** end channel **/ + +// Change notification setting text to stick with a video upload context +const notificationMessage = document.querySelector("#notification-toast>.toast-body>p") +notificationMessage.textContent = gettext("Get notified when the video encoding is finished.") diff --git a/pod/video/templates/videos/video_edit.html b/pod/video/templates/videos/video_edit.html index e5e3aded6f..e55078c740 100644 --- a/pod/video/templates/videos/video_edit.html +++ b/pod/video/templates/videos/video_edit.html @@ -293,5 +293,12 @@

{% trans "Help for fo const max_duration_date_delete = {{ form.max_duration_date_delete }}; - + {% if form.instance.encoding_in_progress and request.user.owner.accepts_notifications is not False %} + + {% endif %} {% endblock more_script %} diff --git a/pod/video_encode_transcript/encode.py b/pod/video_encode_transcript/encode.py index 53370595c8..bd53201e87 100644 --- a/pod/video_encode_transcript/encode.py +++ b/pod/video_encode_transcript/encode.py @@ -1,6 +1,8 @@ """This module handles video encoding with CPU.""" from django.conf import settings +from webpush.models import PushInformation + from pod.video.models import Video from .Encoding_video_model import Encoding_video_model from .encoding_studio import encode_video_studio @@ -13,6 +15,7 @@ add_encoding_log, send_email, send_email_encoding, + send_notification_encoding, time_to_seconds, ) import logging @@ -161,7 +164,9 @@ def get_encoding_video(video_to_encode): def end_of_encoding(video): """Send mail at the end of encoding, call transcription.""" - if EMAIL_ON_ENCODING_COMPLETION: + if video.owner.owner.accepts_notifications and PushInformation.objects.filter(user=video.owner).exists(): + send_notification_encoding(video) + elif EMAIL_ON_ENCODING_COMPLETION: send_email_encoding(video) transcript_video(video.id) diff --git a/pod/video_encode_transcript/utils.py b/pod/video_encode_transcript/utils.py index 2b206748e0..b6a46dace1 100644 --- a/pod/video_encode_transcript/utils.py +++ b/pod/video_encode_transcript/utils.py @@ -3,6 +3,7 @@ import bleach import time +from django.urls import reverse from django.conf import settings from django.utils.translation import ugettext_lazy as _ from django.core.mail import mail_admins @@ -10,6 +11,7 @@ from django.core.mail import mail_managers from django.core.mail import EmailMultiAlternatives from pod.video.models import Video +from pod.progressive_web_app.utils import notify_user from .models import EncodingStep from .models import EncodingLog @@ -127,6 +129,12 @@ def send_email_encoding(video_to_encode): send_notification_email(video_to_encode, subject_prefix) +def send_notification_encoding(video_to_encode): + """Send push notification on encoding completion.""" + subject_prefix = _("Encoding") + send_notification(video_to_encode, subject_prefix) + + def send_email(msg, video_id): """Send email notification when video encoding failed.""" send_email_item(msg, "Video", video_id) @@ -229,6 +237,32 @@ def send_notification_email(video_to_encode, subject_prefix): ) +def send_notification(video_to_encode, subject_prefix): + """Send push notification on video encoding or transcripting completion.""" + subject = "[%s] %s" % ( + __TITLE_SITE__, + _("%(subject)s #%(content_id)s completed") + % {"subject": subject_prefix, "content_id": video_to_encode.id}, + ) + message = _( + "%(content_type)s “%(content_title)s” has been %(action)s" + + ", and is now available on %(site_title)s." + ) % { + "content_type": ( + _("content") if subject_prefix == _("Transcripting") else _("video") + ), + "content_title": video_to_encode.title, + "action": ( + _("automatically transcript") + if (subject_prefix == _("Transcripting")) + else _("encoded to Web formats") + ), + "site_title": __TITLE_SITE__, + } + + notify_user(video_to_encode.owner, subject, message, url=reverse("video:video", args=(video_to_encode.slug,))) + + def time_to_seconds(a_time): """Convert a time to seconds.""" seconds = time.strptime(str(a_time), "%H:%M:%S") diff --git a/requirements.txt b/requirements.txt index c1ef5078d3..8718a726c3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,3 +35,5 @@ bleach==6.0.0 pytube==15.0.0 django-redis-sessions paramiko~=3.1.0 +django-pwa==1.1.0 +django-webpush==0.3.5