Laurent 2 months ago
commit 17d5a1e7a5
  1. 4
      api/serializers.py
  2. 16
      api/views.py
  3. 4
      tournaments/static/tournaments/js/tournament_bracket.js

@ -49,7 +49,7 @@ class UserSerializer(serializers.ModelSerializer):
username_lower = validated_data['username'].lower()
if CustomUser.objects.filter(username__iexact=username_lower) | CustomUser.objects.filter(email__iexact=username_lower):
raise IntegrityError("Cet identifiant est déjà utilisé. Veuillez en choisir un autre :)")
raise serializers.ValidationError("Cet identifiant est déjà utilisé. Veuillez en choisir un autre :)")
user = CustomUser.objects.create_user(
username=validated_data['username'],
@ -143,7 +143,7 @@ class TournamentSummarySerializer(serializers.ModelSerializer):
fields = ['id', 'name', 'start_date', 'day_duration', 'team_count', 'federal_category', 'federal_level_category', 'federal_age_category', 'registration_count']
def get_registration_count(self, obj):
return len(obj.teams(True))
return len(obj.teams(False))
class EventSerializer(serializers.ModelSerializer):
class Meta:

@ -40,6 +40,7 @@ import pandas as pd
import os
import logging
from datetime import datetime
logger = logging.getLogger(__name__)
@ -83,10 +84,23 @@ class TournamentSummaryViewSet(SoftDeleteViewSet):
if self.request.user.is_anonymous:
return Tournament.objects.none()
return self.queryset.filter(
queryset = self.queryset.filter(
Q(event__creator=self.request.user) | Q(related_user=self.request.user)
).distinct()
# Add min_start_date filtering
min_start_date = self.request.query_params.get('min_start_date')
if min_start_date:
try:
# Parse the date string (assumes ISO format: YYYY-MM-DD)
min_date = datetime.fromisoformat(min_start_date).date()
print(min_date)
queryset = queryset.filter(start_date__gte=min_date)
except (ValueError, TypeError):
# If date parsing fails, ignore the filter
pass
return queryset
class TournamentViewSet(SoftDeleteViewSet):
queryset = Tournament.objects.all()

@ -259,6 +259,10 @@ function renderBracket(options) {
top = (parentPos1 + parentPos2) / 2;
if (parent1Disable && parent2Disable) {
nextMatchDistance = 0;
const keys = Object.keys(matchPositions[roundIndex]).map(Number);
const lastKey = Math.max(...keys);
top =
(matchHeight + matchSpacing) * minimumMatchDistance * keys.length;
} else {
nextMatchDistance = parentPos2 - parentPos1;
}

Loading…
Cancel
Save