diff --git a/home/admin.py b/home/admin.py index 50d91c3a86c86f7260ef5c4cdb9cf4d4ee4c47d9..b34cf2713272b643a8ba87a2bd30df15144c0117 100644 --- a/home/admin.py +++ b/home/admin.py @@ -22,6 +22,7 @@ class InterludesActivityAdmin(ExportCsvMixin, admin.ModelAdmin): "status", "act_type", "duration", ("min_participants", "max_participants"), "must_subscribe", + "communicate_participants", "description", "display", "room", "start", diff --git a/home/models.py b/home/models.py index 11fbceceb5b81b7cf335725794c680c5e72416ad..434e13b26a442301baf663206a3bd72d378c1146 100644 --- a/home/models.py +++ b/home/models.py @@ -41,6 +41,8 @@ class InterludesActivity(models.Model): min_participants = models.PositiveIntegerField( "Nombre minimum de participants" ) + + communicate_participants = models.BooleanField("communiquer la liste des participants à l'orga avant l'événement") display = models.BooleanField("afficher dans la liste d'activités", default=False) must_subscribe = models.BooleanField("sur inscription", default=False, help_text="Une activité doit être affichée dans la liste également pour que l'on puisse si inscrire" diff --git a/home/static/css/style.css b/home/static/css/style.css index 6e5e2b669b4bec5e6534648c2f510c9db7055cb3..faed900b3dd5ed498dbd6f756fbc854aff8da419 100644 --- a/home/static/css/style.css +++ b/home/static/css/style.css @@ -267,6 +267,11 @@ dl dd { .button:hover, input[type=submit]:hover { background-color: var(--color_bg_2); } +.disabled, .disabled:hover { + color: black; + background-color: #888; + cursor: not-allowed; +} span.helptext { color: #444444; diff --git a/home/templates/admin.html b/home/templates/admin.html index 71a169cb2bc71166156a0176da945968573bbdd7..14d70bacbc406b98445f968bb958b6dc22edc177 100644 --- a/home/templates/admin.html +++ b/home/templates/admin.html @@ -116,23 +116,46 @@ {{ validations|safe }} <script type="text/javascript"> - function mail_inscrits() { - if (confirm( - `Cette action va envoyer 20 emails.\nÊtes-vous sur de vouloir continuer ?` - )) - window.location = "{% url 'home' %}"; - } - + {% if not settings.user_notified %} + function mail_inscrits() { + if (confirm( + `Cette action va envoyer 20 emails.\nÊtes-vous sur de vouloir continuer ?` + )) + window.location = "{% url 'home' %}"; + } + {% endif %} + {% if not settings.orga_notified %} function mail_orgas() { if (confirm( - `Cette action va envoyer 20 emails.\nÊtes-vous sur de vouloir continuer ?` + `Cette action va envoyer 10 emails.\nÊtes-vous sur de vouloir continuer ?` )) window.location = "{% url 'home' %}"; } + {% endif %} </script> - <p class="centered"><strong>N'ENVOYER LES EMAILS QUE SI VOUS ÊTES SUR DE VOUS !</strong></p> + <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 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) + </p> + {% endif %} + {% if settings.orga_notified %} + <p>Un email communiquant les inscrits aux organisateur à déjà été envoyé. + (Modifiez les paramètres s'il faut en renvoyer un) + </p> + {% endif %} + <div class="flex wrap"> - <button class="button" onclick="mail_inscrits();">Email aux inscrits</button> - <button class="button" onclick="mail_inscrits();">Email aux orgas</button> + {% if settings.user_notified %} + <button class="button disabled">Email aux inscrits</button> + {% else %} + <button class="button" onclick="mail_inscrits();">Email aux inscrits</button> + {% endif %} + {% if settings.orga_notified %} + <button class="button disabled">Email aux orgas</button> + {% else %} + <button class="button" onclick="mail_orgas();">Email aux orgass</button> + {% endif %} </div> {% endblock %} \ No newline at end of file diff --git a/site_settings/models.py b/site_settings/models.py index 74e374b4e2c6d3b0c63d29a78c56ca9b254163d6..9d19d601b6ed1eddb53ec080a6a014b97e461f80 100644 --- a/site_settings/models.py +++ b/site_settings/models.py @@ -48,6 +48,15 @@ class SiteSettings(SingletonModel): activity_submission_form = models.CharField("Lien pour soumettre une activité", max_length=200, default="") + 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" + ) + orga_notified = models.BooleanField( + "L'email de liste des participants 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" + ) + @property def contact_email_reversed(self): return self.contact_email[::-1]