diff --git a/padelclub_backend/settings_app.py b/padelclub_backend/settings_app.py index bdf0716..e1f82c8 100644 --- a/padelclub_backend/settings_app.py +++ b/padelclub_backend/settings_app.py @@ -9,6 +9,7 @@ REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.TokenAuthentication', + 'rest_framework.authentication.SessionAuthentication', ] } diff --git a/padelclub_backend/urls.py b/padelclub_backend/urls.py index 06c8e17..01000ae 100644 --- a/padelclub_backend/urls.py +++ b/padelclub_backend/urls.py @@ -13,7 +13,6 @@ 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, re_path from rest_framework import routers diff --git a/tournaments/migrations/0023_remove_tournament_creator_club_creator_event_creator_and_more.py b/tournaments/migrations/0023_remove_tournament_creator_club_creator_event_creator_and_more.py new file mode 100644 index 0000000..2e7abdc --- /dev/null +++ b/tournaments/migrations/0023_remove_tournament_creator_club_creator_event_creator_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 4.2.11 on 2024-04-03 12:45 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0022_alter_round_loser_alter_tournament_is_private'), + ] + + operations = [ + migrations.RemoveField( + model_name='tournament', + name='creator', + ), + migrations.AddField( + model_name='club', + name='creator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='event', + name='creator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='customuser', + name='clubs', + field=models.ManyToManyField(blank=True, to='tournaments.club'), + ), + ] diff --git a/tournaments/migrations/0024_rename_loser_round_parent.py b/tournaments/migrations/0024_rename_loser_round_parent.py new file mode 100644 index 0000000..eb5b121 --- /dev/null +++ b/tournaments/migrations/0024_rename_loser_round_parent.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.11 on 2024-04-03 12:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0023_remove_tournament_creator_club_creator_event_creator_and_more'), + ] + + operations = [ + migrations.RenameField( + model_name='round', + old_name='loser', + new_name='parent', + ), + ] diff --git a/tournaments/models/__init__.py b/tournaments/models/__init__.py index c8ae85d..2d5917b 100644 --- a/tournaments/models/__init__.py +++ b/tournaments/models/__init__.py @@ -1,5 +1,5 @@ -from .club import Club from .custom_user import CustomUser +from .club import Club from .enums import FederalCategory, FederalLevelCategory, FederalAgeCategory, FederalMatchCategory from .event import Event from .tournament import Tournament, TeamSummon diff --git a/tournaments/models/club.py b/tournaments/models/club.py index 202ad90..cced66f 100644 --- a/tournaments/models/club.py +++ b/tournaments/models/club.py @@ -3,6 +3,7 @@ import uuid class Club(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) + creator = models.ForeignKey('CustomUser', blank=True, null=True, on_delete=models.CASCADE) # string to avoid circular import name = models.CharField(max_length=50) acronym = models.CharField(max_length=10) phone = models.CharField(max_length=15, null=True, blank=True) diff --git a/tournaments/models/custom_user.py b/tournaments/models/custom_user.py index a5c8caa..1f6f71b 100644 --- a/tournaments/models/custom_user.py +++ b/tournaments/models/custom_user.py @@ -1,13 +1,13 @@ from django.db import models from django.contrib.auth.models import AbstractUser -from . import Club +from . import club import uuid class CustomUser(AbstractUser): pass id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) umpire_code = models.CharField(max_length=50, blank=True, null=True) - clubs = models.ManyToManyField(Club, blank=True) + clubs = models.ManyToManyField(club.Club, blank=True) phone = models.CharField(max_length=15, null=True, blank=True) first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) @@ -15,3 +15,7 @@ class CustomUser(AbstractUser): def __str__(self): return self.username + + # quels sont les champs qu'on veut absolument lorsque l'on créé un user ? + # first/last name ? + # club ? diff --git a/tournaments/models/event.py b/tournaments/models/event.py index daf7f76..d2feb5c 100644 --- a/tournaments/models/event.py +++ b/tournaments/models/event.py @@ -1,11 +1,12 @@ from django.db import models -from . import Club, FederalMatchCategory +from . import Club, CustomUser, FederalMatchCategory import uuid class Event(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) club = models.ForeignKey(Club, on_delete=models.CASCADE) creation_date = models.DateTimeField() + creator = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.CASCADE) name = models.CharField(max_length=200, null=True, blank=True) federal_tournament_data = models.JSONField(null=True, blank=True) court_count = models.IntegerField(null=True, blank=True) diff --git a/tournaments/models/round.py b/tournaments/models/round.py index 236e0cb..80f37ac 100644 --- a/tournaments/models/round.py +++ b/tournaments/models/round.py @@ -6,17 +6,17 @@ 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(default=0) - loser = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE, related_name='children') + parent = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE, related_name='children') format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True) def __str__(self): - if self.loser: + if self.parent: return f"{self.tournament.name} - Loser bracket of : {self.name()}" else: return f"{self.tournament.name} - {self.name()}" def name(self): - if self.loser: + if self.parent: return "Matchs de classement" else: if self.index == 0: diff --git a/tournaments/models/tournament.py b/tournaments/models/tournament.py index ac55ab5..4af6527 100644 --- a/tournaments/models/tournament.py +++ b/tournaments/models/tournament.py @@ -1,12 +1,11 @@ from django.db import models -from . import Event, CustomUser, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory +from . import Event, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory import uuid from django.utils import timezone, formats class Tournament(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) event = models.ForeignKey(Event, blank=True, null=True, on_delete=models.CASCADE) - creator = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.CASCADE) name = models.CharField(max_length=200, null=True, blank=True) start_date = models.DateTimeField() end_date = models.DateTimeField(null=True, blank=True) @@ -199,7 +198,7 @@ class Tournament(models.Model): return matches[0] def round_for_index(self, index): - return self.round_set.filter(index=index,loser=None).first() + return self.round_set.filter(index=index,parent=None).first() def group_stages_matches(self): matches = [] diff --git a/tournaments/views.py b/tournaments/views.py index 86a77dc..591c9c0 100644 --- a/tournaments/views.py +++ b/tournaments/views.py @@ -187,6 +187,7 @@ class TournamentViewSet(viewsets.ModelViewSet): queryset = Tournament.objects.all() serializer_class = TournamentSerializer + # class ExpandedTournamentViewSet(viewsets.ModelViewSet): # queryset = Tournament.objects.all() # serializer_class = ExpandedTournamentSerializer @@ -209,6 +210,11 @@ class EventViewSet(viewsets.ModelViewSet): queryset = Event.objects.all() serializer_class = EventSerializer + def get_queryset(self): + if self.request.user.is_anonymous: + return [] + return self.queryset.filter(creator=self.request.user) + class RoundViewSet(viewsets.ModelViewSet): queryset = Round.objects.all() serializer_class = RoundSerializer