From 5fb78447cd768030846e8ef9eaa13829cb5090b6 Mon Sep 17 00:00:00 2001 From: Dorian Lesbre <dorian.lesbre@gmail.com> Date: Mon, 29 Mar 2021 15:50:23 +0200 Subject: [PATCH] New boolean field for activity inscription --- home/admin.py | 9 +++++---- home/forms.py | 2 +- home/models.py | 9 +++++++-- home/views.py | 10 ++++------ 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/home/admin.py b/home/admin.py index 30e6931..f6292eb 100644 --- a/home/admin.py +++ b/home/admin.py @@ -13,16 +13,16 @@ admin.site.site_title = "Admin Interludes" class InterludesActivityAdmin(ExportCsvMixin, admin.ModelAdmin): """option d'affichage des activités dans la vue django admin""" filename = "export_activites.csv" - list_display = ("title", "host_name", "display", "must_subscribe","on_planning") - list_filter = ("display", "must_subscribe", "on_planning", "status") + list_display = ("title", "host_name", "display", "must_subscribe", "subscribing_open","on_planning") + list_filter = ("display", "must_subscribe", "subscribing_open", "on_planning", "status") ordering = ("title", "host_name",) - list_editable = ("display",) + list_editable = ("display", "subscribing_open",) fields = ( "title", ("host_name", "host_email"), "status", "act_type", "duration", ("min_participants", "max_participants"), - "must_subscribe", + ("must_subscribe", "subscribing_open"), "communicate_participants", "description", "desc_as_html", "display", @@ -31,6 +31,7 @@ class InterludesActivityAdmin(ExportCsvMixin, admin.ModelAdmin): "notes" ) list_per_page = 100 + save_as = True # Allow to duplicate models @admin.register(InterludesParticipant) class InterludesParticipantAdmin(ExportCsvMixin, admin.ModelAdmin): diff --git a/home/forms.py b/home/forms.py index 9b3f5d9..a246a72 100644 --- a/home/forms.py +++ b/home/forms.py @@ -37,7 +37,7 @@ class ActivityForm(FormRenderMixin, forms.ModelForm): def __init__(self, *args, **kwargs): super(ActivityForm, self).__init__(*args, **kwargs) - activities = InterludesActivity.objects.filter(display=True, must_subscribe=True) + activities = InterludesActivity.objects.filter(subscribing_open=True) self.fields['activity'].queryset = activities class BaseActivityFormSet(forms.BaseFormSet): diff --git a/home/models.py b/home/models.py index 5714442..2e6e16c 100644 --- a/home/models.py +++ b/home/models.py @@ -43,9 +43,14 @@ class InterludesActivity(models.Model): ) 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) + display = models.BooleanField("afficher dans la liste", default=False, + help_text="Si vrai, s'affiche sur la page activités" + ) 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" + help_text="Informatif, il faut utiliser 'ouverte aux inscriptions' pour ajouter dans la liste d'inscription" + ) + subscribing_open = models.BooleanField("ouverte aux inscriptions", default=False, + help_text="Si vrai, apparaît dans la liste du formulaire d'inscription" ) host_name = models.CharField("nom de l'organisateur", max_length=50) host_email = models.EmailField("email de l'organisateur") diff --git a/home/views.py b/home/views.py index 6381088..77de3a7 100644 --- a/home/views.py +++ b/home/views.py @@ -186,7 +186,7 @@ class AdminView(SuperuserRequiredMixin, TemplateView): def validate_activity_participant_nb(self): """ Vérifie que le nombre de participant inscrit à chaque activité est compris entre le min et le max""" - activities = InterludesActivity.objects.filter(must_subscribe=True, display=True) + activities = InterludesActivity.objects.filter(subscribing_open=True) min_fails = "" max_fails = "" for act in activities: @@ -216,7 +216,7 @@ class AdminView(SuperuserRequiredMixin, TemplateView): def validate_activity_conflicts(self): """Vérifie que personne n'est inscrit à des activités simultanées""" - activities = InterludesActivity.objects.filter(must_subscribe=True, display=True) + activities = InterludesActivity.objects.filter(subscribing_open=True) conflicts = [] for i, act1 in enumerate(activities): for act2 in activities[i+1:]: @@ -262,7 +262,7 @@ class AdminView(SuperuserRequiredMixin, TemplateView): user_email_nb = InterludesParticipant.objects.filter(is_registered=True).count() orga_email_nb = InterludesActivity.objects.filter( - display=True, must_subscribe=True, communicate_participants=True + subscribing_open=True, communicate_participants=True ).count() return { @@ -348,7 +348,6 @@ class SendUserEmail(SendEmailBase): def get_emails(self): """genere les mails a envoyer""" - # on envoie qu'au participant qui se sont inscrit à des activites participants = InterludesParticipant.objects.filter(is_registered=True) emails = [] settings = SiteSettings.load() @@ -394,9 +393,8 @@ class SendOrgaEmail(SendEmailBase): def get_emails(self): """genere les mails a envoyer""" - # on envoie qu'au participant qui se sont inscrit à des activites activities = InterludesActivity.objects.filter( - must_subscribe=True, display=True, communicate_participants=True + subscribing_open=True, communicate_participants=True ) emails = [] settings = SiteSettings.load() -- GitLab