diff --git a/home/templates/admin.html b/home/templates/admin.html index d78ad7cc7921cc4869a9b2e509383dc0eeabf0eb..6be8059b2724f64a261a30122446e0a895941292 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 f56f51efa8bd40c5484ea54de2754ba8abccc444..b6191b4cdc288f9d67a09552ac00f0e69eacee0e 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 e24f7361309f83ac90372ba542a87a29d29d3501..9b061a521c9825943bec25dceebde6ad698a7c27 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"