From 4b34081457ee63d3b674ffe87bc979dc78b4c486 Mon Sep 17 00:00:00 2001 From: Mindiell Date: Fri, 17 Feb 2023 15:36:21 +0100 Subject: [PATCH] fix: Separate accepted talks from canceled ones. Help #13 --- cfp/models.py | 8 ++++++-- cfp/templates/cfp/staff/participant_list.html | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cfp/models.py b/cfp/models.py index 74be745..2b3b40c 100644 --- a/cfp/models.py +++ b/cfp/models.py @@ -100,9 +100,10 @@ class ParticipantManager(models.Manager): def get_queryset(self): qs = super().get_queryset() qs = qs.annotate( - accepted_talk_count=Count(Case(When(talk__accepted=True, then='talk__pk'), output_field=models.IntegerField()), distinct=True), + accepted_talk_count=Count(Case(When(Q(talk__accepted=True) & (Q(talk__confirmed=True) | Q(talk__confirmed__isnull=True)), then='talk__pk'), output_field=models.IntegerField()), distinct=True), pending_talk_count=Count(Case(When(talk__accepted=None, then='talk__pk'), output_field=models.IntegerField()), distinct=True), refused_talk_count=Count(Case(When(talk__accepted=False, then='talk__pk'), output_field=models.IntegerField()), distinct=True), + canceled_talk_count=Count(Case(When(talk__confirmed=False, then='talk__pk'), output_field=models.IntegerField()), distinct=True), ) return qs @@ -154,7 +155,10 @@ class Participant(PonyConfModel): @property def accepted_talk_set(self): - return self.talk_set.filter(accepted=True) + return self.talk_set.filter(accepted=True).exclude(confirmed=False) + @property + def canceled_talk_set(self): + return self.talk_set.filter(confirmed=False) @property def pending_talk_set(self): return self.talk_set.filter(accepted=None) diff --git a/cfp/templates/cfp/staff/participant_list.html b/cfp/templates/cfp/staff/participant_list.html index 343d01a..8684f8c 100644 --- a/cfp/templates/cfp/staff/participant_list.html +++ b/cfp/templates/cfp/staff/participant_list.html @@ -81,6 +81,8 @@ {% blocktrans count pending=participant.pending_talk_count %}pending: {{ pending }}{% plural %}pending: {{ pending }}{% endblocktrans %}{% blocktrans count refused=participant.refused_talk_count %}refused: {{ refused }}{% plural %}refused: {{ refused }}{% endblocktrans %} + — + {% blocktrans count canceled=participant.canceled_talk_count %}canceled: {{ canceled }}{% plural %}canceled: {{ canceled }}{% endblocktrans %} {% if forloop.last %}