fix: Separate accepted talks from canceled ones. Help #13

This commit is contained in:
Mindiell 2023-02-17 15:36:21 +01:00 committed by Gitea
parent 1085cd497c
commit 4b34081457
2 changed files with 8 additions and 2 deletions

View File

@ -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)

View File

@ -81,6 +81,8 @@
<span class="text-warning">{% blocktrans count pending=participant.pending_talk_count %}pending: {{ pending }}{% plural %}pending: {{ pending }}{% endblocktrans %}</span>
<span class="text-danger">{% blocktrans count refused=participant.refused_talk_count %}refused: {{ refused }}{% plural %}refused: {{ refused }}{% endblocktrans %}</span>
<span class="text-danger">{% blocktrans count canceled=participant.canceled_talk_count %}canceled: {{ canceled }}{% plural %}canceled: {{ canceled }}{% endblocktrans %}</span>
</td>
</tr>
{% if forloop.last %}