From 3d4342da3296a49872819a3ae4b1dfe8c6f52a5f Mon Sep 17 00:00:00 2001
From: Dorian Lesbre <dorian.lesbre@gmail.com>
Date: Tue, 6 Apr 2021 21:32:37 +0200
Subject: [PATCH] Fix emails

---
 home/admin.py                  |  1 +
 home/models.py                 |  4 ++++
 home/templates/email/orga.html | 12 ++++++++----
 home/templates/email/user.html | 12 ++++++------
 home/views.py                  | 28 +++++++++++++---------------
 5 files changed, 32 insertions(+), 25 deletions(-)

diff --git a/home/admin.py b/home/admin.py
index 6ac49af..622a792 100644
--- a/home/admin.py
+++ b/home/admin.py
@@ -38,6 +38,7 @@ class InterludesSlotAdmin(ExportCsvMixin, admin.ModelAdmin):
 	list_display = ("__str__", "start", "room", "subscribing_open", "on_planning",)
 	list_filter = ("subscribing_open", "on_planning", "activity__display",)
 	list_editable = ("subscribing_open", "on_planning",)
+	ordering = ("activity", "title", "start",)
 
 
 @admin.register(models.InterludesParticipant)
diff --git a/home/models.py b/home/models.py
index a69d74a..7efa304 100644
--- a/home/models.py
+++ b/home/models.py
@@ -131,6 +131,10 @@ class InterludesSlot(models.Model):
 		help_text="Si vrai, apparaît dans la liste du formulaire d'inscription"
 	)
 
+	@property
+	def participants(self):
+		return InterludesActivityChoices.objects.filter(slot=self, accepted=True)
+
 	@property
 	def end(self):
 		"""Heure de fin du crénau"""
diff --git a/home/templates/email/orga.html b/home/templates/email/orga.html
index 6cd6a0e..6364a86 100644
--- a/home/templates/email/orga.html
+++ b/home/templates/email/orga.html
@@ -1,12 +1,16 @@
 {% autoescape off %}
 Bonjour {{ activity.host_name }},
 
-Voici la liste des participant·e·s inscrit·e·s à votre activité {{ activity }}{% if activity.start and activity.room %} (le {{ activity.start|date:"l à H:i" }} en {{ activity.room }}){% endif %} :
-{% for participant in participants %}
+Voici la liste des participant·e·s inscrit·e·s à votre activité {{ activity }} :
+
+{% for slot in slots %}{{ slot }}{% if slot.start %} (le {{ slot.start|date:"l à H:i" }}){% endif %} :
+{% for participant in slot.participants %}
 - {{ participant.participant }} {{ participant.participant.user.email }}{% empty %}
-Aucun participant inscrit.{% endfor %}
+- Aucun participant inscrit.{% endfor %}
+
+{% empty %}- Aucun crénau d'inscription.{% endfor %}
 
 --
 L'équipe Interludes
 {% if settings.contact_email %}Pour nous contacter, envoyer un email à {{ settings.contact_email }}{% endif %}
-{% endautoescape %}
\ No newline at end of file
+{% endautoescape %}
diff --git a/home/templates/email/user.html b/home/templates/email/user.html
index 515b62c..5f3a7f7 100644
--- a/home/templates/email/user.html
+++ b/home/templates/email/user.html
@@ -1,18 +1,18 @@
 {% autoescape off %}
 Bonjour {{ user.first_name }} {{ user.last_name }},
-
+{% if settings.discord_link %}
+Vous pouvez rejoindre notre serveur discord avec le lien suivant : {{ settings.discord_link }}
+{% endif %}
 Les inscriptions aux Interludes sont fermées et la répartition des activités à été effectuée.
 {% if requested_activities_nb %}
-Vous avez obtenu {{ activities|length }} activité(s) (sur {{ requested_activities_nb }} souhaitée(s)).
-{% for act in activities %}
-- {{ act.activity.title }}{% if act.activity.on_planning %} (le {{ act.activity.start|date:"l à H:i" }}){% endif %}{% endfor %}{% if activities %}
+Vous avez obtenu {{ my_choices|length }} activité(s) (sur {{ requested_activities_nb }} souhaitée(s)).
+{% for choice in my_choices %}
+- {{ choice.slot }}{% if choice.slot.on_planning %} (le {{ choice.slot.start|date:"l à H:i" }}){% endif %}{% endfor %}{% if activities %}
 
 Cette liste est également disponible sur la page "Mon compte" du site: {% url "accounts:profile" %}.
 Votre adresse email sera communiquée aux orgas pour les activités nécessitant préparation avant l'événement.{% endif %}
 {% else %}
 Vous n'aviez demandé aucune activité.
-{% endif %}{% if settings.discord_link %}
-Si vous ne l'avez pas encore fait, rejoignez notre serveur discord : {{ settings.discord_link }}
 {% endif %}
 --
 L'équipe Interludes
diff --git a/home/views.py b/home/views.py
index 8fd563c..b9f1a97 100644
--- a/home/views.py
+++ b/home/views.py
@@ -274,8 +274,8 @@ class AdminView(SuperuserRequiredMixin, TemplateView):
 		validations += '</ul>'
 
 		user_email_nb = models.InterludesParticipant.objects.filter(is_registered=True).count()
-		orga_email_nb = models.InterludesSlot.objects.filter(
-			subscribing_open=True, activity__communicate_participants=True
+		orga_email_nb = models.InterludesActivity.objects.filter(
+			communicate_participants=True
 		).count()
 
 		return {
@@ -377,15 +377,15 @@ class SendUserEmail(SendEmailBase):
 		emails = []
 		settings = SiteSettings.load()
 		for participant in participants:
-			my_activities = models.InterludesActivityChoices.objects.filter(participant=participant)
+			my_choices = models.InterludesActivityChoices.objects.filter(participant=participant)
 			message = render_to_string("email/user.html", {
 				"user": participant.user,
 				"settings": settings,
-				"requested_activities_nb": my_activities.count(),
-				"activities": my_activities.filter(accepted=True),
+				"requested_activities_nb": my_choices.count(),
+				"my_choices": my_choices.filter(accepted=True),
 			})
 			emails.append((
-				"Vos activités interludes", # subject
+				"Information interludes", # subject
 				message,
 				self.from_address, # From:
 				[participant.user.email], # To:
@@ -418,23 +418,21 @@ class SendOrgaEmail(SendEmailBase):
 
 	def get_emails(self):
 		"""genere les mails a envoyer"""
-		activities = models.InterludesActivity.objects.filter(
-			subscribing_open=True, communicate_participants=True
-		)
+		activities = models.InterludesActivity.objects.filter(communicate_participants=True)
 		emails = []
 		settings = SiteSettings.load()
-		for act in activities:
-			participants = models.InterludesActivityChoices.objects.filter(activity=act, accepted=True)
+		for activity in activities:
+			slots = models.InterludesSlot.objects.filter(activity=activity)
 			message = render_to_string("email/orga.html", {
-				"activity": act,
+				"activity": activity,
 				"settings": settings,
-				"participants": participants,
+				"slots": slots,
 			})
 			emails.append((
-				"Vos activités interludes", # subject
+				"[interludes] Liste d'inscrit à votre activité {}".format(activity.title), # subject
 				message,
 				self.from_address, # From:
-				[act.host_email] # To:
+				[activity.host_email] # To:
 			))
 		return emails
 
-- 
GitLab