From 106516bfa936fcef51aebdd15d57f064adab293d Mon Sep 17 00:00:00 2001
From: Dorian Lesbre <dorian.lesbre@gmail.com>
Date: Mon, 29 Mar 2021 17:55:36 +0200
Subject: [PATCH] Warning for malformed ActivityList table

---
 home/admin.py             |  2 +-
 home/templates/admin.html | 10 ++++++++++
 home/views.py             | 14 +++++++-------
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/home/admin.py b/home/admin.py
index 0d9b260..cd9858c 100644
--- a/home/admin.py
+++ b/home/admin.py
@@ -54,7 +54,7 @@ class ActivityListAdmin(ExportCsvMixin, admin.ModelAdmin):
 	list_display = ("activity", "participant", "priority", "accepted")
 	list_filter = (
 		"activity", "participant__is_registered", "activity__display",
-		"accepted", "activity__must_subscribe",
+		"accepted", "activity__subscribing_open",
 	)
 	list_editable = ("accepted",)
 	ordering = ("activity", "priority", "participant",)
diff --git a/home/templates/admin.html b/home/templates/admin.html
index 2ce70f3..6335a12 100644
--- a/home/templates/admin.html
+++ b/home/templates/admin.html
@@ -139,6 +139,10 @@
 			<div class="qty">Obtenus</div>
 			<div class="nb_small">{{ metrics.granted }}</div>
 		</div>
+		<div class="stat">
+			<div class="qty">Malformé</div>
+			<div class="nb_small">{{ metrics.malformed }}</div>
+		</div>
 	</div>
 
 	<p>*Le nombre d'activité "inscription" est le nombre d'activités affichée (dans la liste de la page
@@ -147,6 +151,12 @@
 		apparaître plusieures fois)
 	</p>
 
+	{% if metrics.malformed %}
+	<ul class="messagelist"><li class="error">
+		Des activités non ouvertes aux inscriptions apparaissent dans les listes de souhait.
+	</li></ul>
+	{% endif %}
+
 	<h2>Répartition des activités</h2>
 
 	<p>La répartition se fait depuis la <a href="{% url 'admin:index' %}">page d'administration de django</a>,
diff --git a/home/views.py b/home/views.py
index 395b3a2..3facc96 100644
--- a/home/views.py
+++ b/home/views.py
@@ -155,6 +155,8 @@ class AdminView(SuperuserRequiredMixin, TemplateView):
 			rennes = registered.filter(school="R").count()
 			saclay = registered.filter(school="P").count()
 			non_registered = EmailUser.objects.filter(is_active=True).count() - participants
+			# mugs = registered.filter(mug=True).count()
+			sleeps = registered.filter(sleeps=True).count()
 
 			meal1 = registered.filter(meal_friday_evening=True).count()
 			meal2 = registered.filter(meal_saturday_morning=True).count()
@@ -164,21 +166,19 @@ class AdminView(SuperuserRequiredMixin, TemplateView):
 			meal6 = registered.filter(meal_sunday_midday=True).count()
 			meals = meal1 + meal2 + meal3 + meal4 + meal5 + meal6
 
-			# mugs = registered.filter(mug=True).count()
-			sleeps = registered.filter(sleeps=True).count()
-
 			activites = acts.count()
 			displayed = acts.filter(display=True).count()
 			planning = acts.filter(on_planning=True).count()
 			act_ins = acts.filter(display=True, must_subscribe=True).count()
-			true_ins = acts.filter(subscribing_open=True).count()
-			wish = wishes.count()
-			granted = wishes.filter(accepted=True).count()
-
 			st_present = acts.filter(display=True, status=InterludesActivity.Status.PRESENT).count()
 			st_distant = acts.filter(display=True, status=InterludesActivity.Status.DISTANT).count()
 			st_both = acts.filter(display=True, status=InterludesActivity.Status.BOTH).count()
 
+			true_ins = acts.filter(subscribing_open=True).count()
+			wish = wishes.count()
+			granted = wishes.filter(accepted=True).count()
+			malformed = ActivityList.objects.filter(activity__subscribing_open=False).count()
+
 		# validation de la repartition des activités
 		accepted = wishes.filter(accepted=True)
 		# order_by is useless but required
-- 
GitLab