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