From 3714dcc59df688bf54f4a1f586c3a91500cc073f Mon Sep 17 00:00:00 2001 From: Dorian Lesbre <dorian.lesbre@gmail.com> Date: Sun, 21 Mar 2021 17:31:05 +0100 Subject: [PATCH] Added global mail restrict setting for safety --- home/templates/admin.html | 14 +++++++++----- home/views.py | 6 +++++- site_settings/models.py | 5 +++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/home/templates/admin.html b/home/templates/admin.html index d78ad7c..6be8059 100644 --- a/home/templates/admin.html +++ b/home/templates/admin.html @@ -141,7 +141,7 @@ {% else %} const errors = ""; {% endif %} - {% if not settings.user_notified %} + {% if not settings.user_notified and settings.allow_mass_mail %} function mail_inscrits() { if (confirm( `${errors}Cette action va envoyer {{ user_email_nb }} emails.\nÊtes-vous sur de vouloir continuer ?` @@ -149,7 +149,7 @@ window.location = "{% url 'email_users' %}"; } {% endif %} - {% if not settings.orga_notified %} + {% if not settings.orga_notified and settings.allow_mass_mail %} function mail_orgas() { if (confirm( `${errors}Cette action va envoyer {{ orga_email_nb }} emails.\nÊtes-vous sur de vouloir continuer ?` @@ -159,7 +159,11 @@ {% endif %} </script> <p class="centered"><i class="fas fa-exclamation-triangle"></i> N'ENVOYER LES EMAILS QUE SI VOUS ÊTES SUR DE VOUS ! <i class="fas fa-exclamation-triangle"></i></p> - + {% if not settings.allow_mass_mail %} + <p>L'envoi d'emails collectifs est désactivé dans les réglages. Activez le avant d'envoyer + et redésactivez le après. + </p> + {% endif %} {% if settings.user_notified %} <p>Un email communiquant la répartition aux utilisateurs a déjà été envoyé. (Modifiez les paramètres s'il faut en renvoyer un) @@ -176,12 +180,12 @@ {% endif %} <div class="flex wrap"> - {% if settings.user_notified %} + {% if settings.user_notified or not settings.allow_mass_mail %} <button class="button disabled">Email aux inscrits</button> {% else %} <button class="button" onclick="mail_inscrits();">Email aux inscrits</button> {% endif %} - {% if settings.orga_notified %} + {% if settings.orga_notified or not settings.allow_mass_mail %} <button class="button disabled">Email aux orgas</button> {% else %} <button class="button" onclick="mail_orgas();">Email aux orgas</button> diff --git a/home/views.py b/home/views.py index f56f51e..b6191b4 100644 --- a/home/views.py +++ b/home/views.py @@ -331,7 +331,11 @@ class SendEmailBase(SuperuserRequiredMixin, RedirectView): raise NotImplementedError("{}.send_emails isn't implemented".format(self.__class__.__name__)) def get_redirect_url(self, *args, **kwargs): - self.send_emails() + settings = SiteSettings.load() + if settings.allow_mass_mail: + self.send_emails() + else: + messages.error(self.request, "L'envoi de mail de masse est désactivé dans les réglages") return reverse(self.pattern_name) class SendUserEmail(SendEmailBase): diff --git a/site_settings/models.py b/site_settings/models.py index e24f736..9b061a5 100644 --- a/site_settings/models.py +++ b/site_settings/models.py @@ -58,6 +58,11 @@ class SiteSettings(SingletonModel): activity_submission_form = models.CharField("Lien pour soumettre une activité", max_length=200, default="") + allow_mass_mail = models.BooleanField( + "Permettre l'envoi de mails collectifs (aux utilisateurs et orgas)", default=False, + help_text="Par sécurité, n'activez ceci qu'au moment d'envoyer les emails et désactivez le après" + ) + user_notified = models.BooleanField( "L'email de répartition des activités a été envoyé", default=False, help_text="Ce champ existe pour éviter l'envoie de plusieurs mails successifs. Le decocher permet de renvoyer tous les mails" -- GitLab