From 6b6871b2a1413962ed5c8f75b8d01f245b2c6932 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 29 May 2024 12:18:36 +0200 Subject: [PATCH] fix issue with in progress and future tournaments --- tournaments/models/tournament.py | 6 +++++- tournaments/views.py | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tournaments/models/tournament.py b/tournaments/models/tournament.py index 1e173e0..59590ab 100644 --- a/tournaments/models/tournament.py +++ b/tournaments/models/tournament.py @@ -6,7 +6,7 @@ if TYPE_CHECKING: from . import Event, TournamentPayment, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory import uuid from django.utils import timezone, formats -from datetime import datetime +from datetime import datetime, timedelta class TeamSortingType(models.IntegerChoices): @@ -501,6 +501,10 @@ class Tournament(models.Model): def getEightAm(self, date): return date.replace(hour=8, minute=0, second=0, microsecond=0) + def supposedly_in_progress(self): + end = self.start_date + timedelta(days=self.day_duration) + return timezone.now() > self.start_date.replace(hour=0, minute=0) and timezone.now() < end + class MatchGroup: def __init__(self, name, matches): self.name = name diff --git a/tournaments/views.py b/tournaments/views.py index dceebd2..09590de 100644 --- a/tournaments/views.py +++ b/tournaments/views.py @@ -12,8 +12,7 @@ from tournaments.models import group_stage from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer from .models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Purchase from .models import TeamSummon -from datetime import datetime -import datetime +from datetime import datetime, timedelta from rest_framework import viewsets, permissions from rest_framework.authtoken.models import Token @@ -35,12 +34,13 @@ from qr_code.qrcode.utils import QRCodeOptions def index(request): today = date.today() + tomorrow = today + timedelta(days=1) club_id = request.GET.get('club') q_is_private = Q(is_private=False) - q_future = [q_is_private, Q(end_date__isnull=True, start_date__gt=today)] - q_live = [q_is_private, Q(end_date__isnull=True, start_date__lte=today)] + q_after_tomorrow = [q_is_private, Q(end_date__isnull=True, start_date__gt=tomorrow)] + q_after_today = [q_is_private, Q(end_date__isnull=True, start_date__gt=today)] q_ended = [q_is_private, Q(end_date__isnull=False)] club = None @@ -48,18 +48,24 @@ def index(request): club = get_object_or_404(Club, pk=club_id) q_club = Q(event__club=club) - q_future.append(q_club) - q_live.append(q_club) + q_after_tomorrow.append(q_club) + q_after_today.append(q_club) q_ended.append(q_club) - future_tournaments = Tournament.objects.filter(*q_future).order_by('start_date') - live_tournaments = Tournament.objects.filter(*q_live).order_by('start_date') + after_tomorrow_tournaments = Tournament.objects.filter(*q_after_tomorrow).order_by('start_date') + after_today_tournaments = Tournament.objects.filter(*q_after_today).order_by('start_date') + + live_tournaments = [] + for tournament in after_today_tournaments: + if tournament.supposedly_in_progress(): + live_tournaments.append(tournament) + ended_tournaments = Tournament.objects.filter(*q_ended).order_by('start_date') return render( request, "tournaments/tournaments.html", { - 'future': future_tournaments, + 'future': after_tomorrow_tournaments, 'live': live_tournaments, 'ended': ended_tournaments, 'club': club,