diff --git a/padelclub_backend/settings.py b/padelclub_backend/settings.py index 636d46a..dad300a 100644 --- a/padelclub_backend/settings.py +++ b/padelclub_backend/settings.py @@ -109,6 +109,11 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/4.1/topics/i18n/ +LANGUAGES = [ + ('fr', 'French'), + ('en', 'English'), +] + LANGUAGE_CODE = 'fr' TIME_ZONE = 'CET' diff --git a/tournaments/migrations/0020_alter_groupstage_index_alter_round_index.py b/tournaments/migrations/0020_alter_groupstage_index_alter_round_index.py new file mode 100644 index 0000000..ad7cd2f --- /dev/null +++ b/tournaments/migrations/0020_alter_groupstage_index_alter_round_index.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.11 on 2024-03-13 08:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0019_alter_match_index'), + ] + + operations = [ + migrations.AlterField( + model_name='groupstage', + name='index', + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name='round', + name='index', + field=models.IntegerField(default=0), + ), + ] diff --git a/tournaments/migrations/0021_match_name_match_order_and_more.py b/tournaments/migrations/0021_match_name_match_order_and_more.py new file mode 100644 index 0000000..9b7b3ad --- /dev/null +++ b/tournaments/migrations/0021_match_name_match_order_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.11 on 2024-03-13 08:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0020_alter_groupstage_index_alter_round_index'), + ] + + operations = [ + migrations.AddField( + model_name='match', + name='name', + field=models.CharField(blank=True, max_length=200, null=True), + ), + migrations.AddField( + model_name='match', + name='order', + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name='tournament', + name='federal_category', + field=models.IntegerField(choices=[(0, 'Homme'), (1, 'Femme'), (2, 'Mixte')], default=0), + ), + ] diff --git a/tournaments/models/enums.py b/tournaments/models/enums.py index ff1c9b7..bb694f2 100644 --- a/tournaments/models/enums.py +++ b/tournaments/models/enums.py @@ -2,9 +2,9 @@ from django.db import models import uuid class FederalCategory(models.IntegerChoices): - MEN = 0, 'Men' - WOMEN = 1, 'Women' - MIXED = 2, 'Mixed' + MEN = 0, 'Homme' + WOMEN = 1, 'Femme' + MIXED = 2, 'Mixte' class FederalLevelCategory(models.IntegerChoices): P25 = 25, 'P25' diff --git a/tournaments/models/group_stage.py b/tournaments/models/group_stage.py index 167914b..d2d3f5a 100644 --- a/tournaments/models/group_stage.py +++ b/tournaments/models/group_stage.py @@ -5,7 +5,7 @@ import uuid class GroupStage(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE) - index = models.IntegerField(null=True, blank=True) + index = models.IntegerField(default=0) format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True) def __str__(self): diff --git a/tournaments/models/match.py b/tournaments/models/match.py index 70106a9..ba621d7 100644 --- a/tournaments/models/match.py +++ b/tournaments/models/match.py @@ -2,14 +2,17 @@ from django.db import models from . import Round, GroupStage, FederalMatchCategory from django.utils import timezone import uuid +from django.utils import formats class Match(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) round = models.ForeignKey(Round, null=True, blank=True, on_delete=models.CASCADE) + name = models.CharField(max_length=200, null=True, blank=True) group_stage = models.ForeignKey(GroupStage, null=True, blank=True, on_delete=models.CASCADE) start_date = models.DateTimeField(null=True, blank=True) end_date = models.DateTimeField(null=True, blank=True) index = models.IntegerField(default=0) + order = models.IntegerField(default=0) format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True) court = models.CharField(max_length=50, null=True, blank=True) serving_team_id = models.UUIDField(null=True, blank=True) @@ -18,8 +21,8 @@ class Match(models.Model): broadcasted = models.BooleanField(default=False) def __str__(self): - - items = [self.name(), self.formatted_start_date()] + match_name = self.name if self.name else self.backup_name() #"x is greater" if x > y else "y is greater" + items = [match_name, self.formatted_start_date()] desc = " - ".join(items) player_names = " / ".join(self.player_names()) if self.round: @@ -29,7 +32,7 @@ class Match(models.Model): else: return "--" - def name(self): + def backup_name(self): items = [] if self.round: items.append(self.round.name()) @@ -64,16 +67,18 @@ class Match(models.Model): if self.started(): return self.formatted_duration() else: - start = self.start_date.strftime("%H:%M") - return f"Prévu à {start}" + return formats.date_format(self.start_date, format='SHORT_DATETIME_FORMAT') + # return self.start_date.strftime("%A %d %B à %H:%M") + # return f"Prévu à {start}" else: return 'À venir...' def current_duration(self): - if self.end_date: - return (self.end_date - self.start_date).total_seconds() - elif self.start_date: - return (timezone.now() - self.start_date).total_seconds() + if self.start_date: + if self.end_date: + return (self.end_date - self.start_date).total_seconds() + else: + return (timezone.now() - self.start_date).total_seconds() else: return 0 @@ -101,7 +106,7 @@ class Match(models.Model): # return (timezone.now() - self.start_date).total_seconds() def live_match(self): - title = self.name() + title = self.name date = self.formatted_start_date() duration = self.time_indication() court = "" @@ -110,7 +115,7 @@ class Match(models.Model): livematch = LiveMatch(title, date, duration, court, self.started()) - for team_score in self.team_scores.all(): + for team_score in self.sorted_team_scores(): image = team_score.team_registration.logo names = team_score.team_names() scores = team_score.scores_array() @@ -121,6 +126,19 @@ class Match(models.Model): return livematch + def sorted_team_scores(self): + return self.team_scores.order_by('team_registration__bracket_position') + + # def sort_value(self): + # sort_score = 0 + # if self.round.index: + # sort_score += 1 / (self.round.index + 1) * 1000 ** 2 + # if self.group_stage.index: + # sort_score += 1 / (self.group_stage.index + 1) * 1000 + # sort_score += self.index + # print(sort_score) + # return sort_score + class Team: def __init__(self, image, names, scores, weight, is_winner): self.image = image diff --git a/tournaments/models/round.py b/tournaments/models/round.py index 729c3d7..6a69339 100644 --- a/tournaments/models/round.py +++ b/tournaments/models/round.py @@ -5,7 +5,7 @@ import uuid class Round(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE) - index = models.IntegerField(null=True, blank=True) + index = models.IntegerField(default=0) loser = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE) format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True) diff --git a/tournaments/models/tournament.py b/tournaments/models/tournament.py index 21c0089..ca42b1d 100644 --- a/tournaments/models/tournament.py +++ b/tournaments/models/tournament.py @@ -76,6 +76,8 @@ class Tournament(models.Model): matches.append(match) matches = [m for m in matches if m.broadcasted==True] + matches = [m for m in matches if len(m.team_scores.all()) > 0] + matches.sort(key=lambda m: m.order) return map(lambda match: match.live_match(), matches) diff --git a/tournaments/templates/tournaments/match_cell.html b/tournaments/templates/tournaments/match_cell.html index 37e4746..9290704 100644 --- a/tournaments/templates/tournaments/match_cell.html +++ b/tournaments/templates/tournaments/match_cell.html @@ -19,7 +19,7 @@ {% endif %} --> -