diff --git a/padelclub_backend/urls.py b/padelclub_backend/urls.py index b116899..1f7b789 100644 --- a/padelclub_backend/urls.py +++ b/padelclub_backend/urls.py @@ -13,6 +13,7 @@ Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ +from posixpath import basename from django.contrib import admin from django.urls import include, path from rest_framework import routers @@ -29,7 +30,7 @@ router.register(r'matches', views.MatchViewSet) router.register(r'team-states', views.TeamStateViewSet) router.register(r'team-registrations', views.TeamRegistrationViewSet) router.register(r'player-registrations', views.PlayerRegistrationViewSet) -router.register(r'exp-tournaments', views.ExpandedTournamentViewSet) +router.register(r'exp-tournaments', views.ExpandedTournamentViewSet, basename='tournaments-json') urlpatterns = [ path('api/', include(router.urls)), diff --git a/tournaments/migrations/0011_alter_teamstate_score.py b/tournaments/migrations/0011_alter_teamstate_score.py new file mode 100644 index 0000000..306cd0c --- /dev/null +++ b/tournaments/migrations/0011_alter_teamstate_score.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.11 on 2024-03-08 11:09 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0010_alter_groupstage_tournament_alter_round_tournament'), + ] + + operations = [ + migrations.AlterField( + model_name='teamstate', + name='score', + field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None), + ), + ] diff --git a/tournaments/migrations/0012_alter_teamstate_score.py b/tournaments/migrations/0012_alter_teamstate_score.py new file mode 100644 index 0000000..209ebaf --- /dev/null +++ b/tournaments/migrations/0012_alter_teamstate_score.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.11 on 2024-03-08 11:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0011_alter_teamstate_score'), + ] + + operations = [ + migrations.AlterField( + model_name='teamstate', + name='score', + field=models.CharField(blank=True, max_length=50, null=True), + ), + ] diff --git a/tournaments/models.py b/tournaments/models.py index 66dac03..2f07a3e 100644 --- a/tournaments/models.py +++ b/tournaments/models.py @@ -4,6 +4,7 @@ from django.contrib.auth.models import AbstractUser from django.conf import settings import uuid import os +from django.utils import timezone from django.utils.encoding import Promise @@ -254,6 +255,56 @@ class Match(models.Model): return "no date" # return str(self.start_date) #.strftime("%H:%M") + def current_duration(self): + if self.end_date: + return (self.end_date - self.start_date).total_seconds() + else: + return (timezone.now() - self.start_date).total_seconds() + + def durationPrefix(self): + if self.current_duration() > 0: + return "Temps de jeu" + else: + return "Démarrage prévu dans" + + def formatted_duration(self): + + _seconds = self.current_duration() + + if _seconds > 0: + _hours = int(_seconds / 3600) + _minutes = int((_seconds % 3600) / 60) + return f"{_hours:02d}h{_minutes:02d}min" + else : + _seconds = _seconds * -1 + _hours = int(_seconds / 3600) + _minutes = int((_seconds % 3600) / 60) + return f"{_hours:02d}h{_minutes:02d}min" + + def seconds(self): + return (timezone.now() - self.date).total_seconds() + + + def live_match(self): + title = f"{self.index}" + date = self.formatted_start_date() + duration = self.formatted_duration() + + livematch = LiveMatch(title, date, duration) + + for team_state in self.team_states: + break + + # def __init__(self, names, date, weight, stage, image): + + + + + # def __init__(self, title, date, teams, duration): + + + + class TeamRegistration(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE) @@ -333,13 +384,31 @@ class TeamState(models.Model): names = map(lambda player: player.name(), self.player_registrations.all()) return " - ".join(names) -# class StageCall: -# def __init__(self, stage): -# self.stage = stage -# self.team_calls = [] + def team_name(self): + + +class Team: + def __init__(self, image, names, scores, is_winner): + self.image = image + self.names = [] + self.scores = [] + self.is_winner = is_winner + + def add_names(self, name): + self.names.append(name) + + def add_set_score(self, score): + self.scores.append(score) + +class LiveMatch: + def __init__(self, title, date, duration): + self.title = title + self.date = date + self.teams = [] + self.duration = duration -# def add_team(self, team_call): -# self.team_calls.append(team_call) + def add_team(self, team): + self.teams.append(team) class TeamCall: def __init__(self, names, date, weight, stage, image): diff --git a/tournaments/serializers.py b/tournaments/serializers.py index bd131e3..7641327 100644 --- a/tournaments/serializers.py +++ b/tournaments/serializers.py @@ -138,6 +138,7 @@ class ExpandedGroupStageSerializer(serializers.HyperlinkedModelSerializer): class ExpandedTeamRegistrationSerializer(serializers.HyperlinkedModelSerializer): playerregistration_set = PlayerRegistrationSerializer(many=True, read_only=True) + call_date = serializers.DateTimeField(format='%H:%M') class Meta: # match_id = serializers.PrimaryKeyRelatedField(queryset=Match.objects.all()) group_stage_id = serializers.PrimaryKeyRelatedField(queryset=GroupStage.objects.all()) diff --git a/tournaments/templates/tournaments/match_cell.html b/tournaments/templates/tournaments/match_cell.html new file mode 100644 index 0000000..4b2db9e --- /dev/null +++ b/tournaments/templates/tournaments/match_cell.html @@ -0,0 +1,33 @@ +