Model upgrade + events api automatically filters by user

clubs
Laurent 2 years ago
parent 359c3c9776
commit 43d28ede72
  1. 1
      padelclub_backend/settings_app.py
  2. 1
      padelclub_backend/urls.py
  3. 34
      tournaments/migrations/0023_remove_tournament_creator_club_creator_event_creator_and_more.py
  4. 18
      tournaments/migrations/0024_rename_loser_round_parent.py
  5. 2
      tournaments/models/__init__.py
  6. 1
      tournaments/models/club.py
  7. 8
      tournaments/models/custom_user.py
  8. 3
      tournaments/models/event.py
  9. 6
      tournaments/models/round.py
  10. 5
      tournaments/models/tournament.py
  11. 6
      tournaments/views.py

@ -9,6 +9,7 @@ REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [ 'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
] ]
} }

@ -13,7 +13,6 @@ Including another URLconf
1. Import the include() function: from django.urls import include, path 1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
""" """
from posixpath import basename
from django.contrib import admin from django.contrib import admin
from django.urls import include, path, re_path from django.urls import include, path, re_path
from rest_framework import routers from rest_framework import routers

@ -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'),
),
]

@ -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',
),
]

@ -1,5 +1,5 @@
from .club import Club
from .custom_user import CustomUser from .custom_user import CustomUser
from .club import Club
from .enums import FederalCategory, FederalLevelCategory, FederalAgeCategory, FederalMatchCategory from .enums import FederalCategory, FederalLevelCategory, FederalAgeCategory, FederalMatchCategory
from .event import Event from .event import Event
from .tournament import Tournament, TeamSummon from .tournament import Tournament, TeamSummon

@ -3,6 +3,7 @@ import uuid
class Club(models.Model): class Club(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) 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) name = models.CharField(max_length=50)
acronym = models.CharField(max_length=10) acronym = models.CharField(max_length=10)
phone = models.CharField(max_length=15, null=True, blank=True) phone = models.CharField(max_length=15, null=True, blank=True)

@ -1,13 +1,13 @@
from django.db import models from django.db import models
from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import AbstractUser
from . import Club from . import club
import uuid import uuid
class CustomUser(AbstractUser): class CustomUser(AbstractUser):
pass pass
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
umpire_code = models.CharField(max_length=50, blank=True, null=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) phone = models.CharField(max_length=15, null=True, blank=True)
first_name = models.CharField(max_length=50) first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50)
@ -15,3 +15,7 @@ class CustomUser(AbstractUser):
def __str__(self): def __str__(self):
return self.username return self.username
# quels sont les champs qu'on veut absolument lorsque l'on créé un user ?
# first/last name ?
# club ?

@ -1,11 +1,12 @@
from django.db import models from django.db import models
from . import Club, FederalMatchCategory from . import Club, CustomUser, FederalMatchCategory
import uuid import uuid
class Event(models.Model): class Event(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
club = models.ForeignKey(Club, on_delete=models.CASCADE) club = models.ForeignKey(Club, on_delete=models.CASCADE)
creation_date = models.DateTimeField() 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) name = models.CharField(max_length=200, null=True, blank=True)
federal_tournament_data = models.JSONField(null=True, blank=True) federal_tournament_data = models.JSONField(null=True, blank=True)
court_count = models.IntegerField(null=True, blank=True) court_count = models.IntegerField(null=True, blank=True)

@ -6,17 +6,17 @@ class Round(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE) tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
index = models.IntegerField(default=0) 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) format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
def __str__(self): def __str__(self):
if self.loser: if self.parent:
return f"{self.tournament.name} - Loser bracket of : {self.name()}" return f"{self.tournament.name} - Loser bracket of : {self.name()}"
else: else:
return f"{self.tournament.name} - {self.name()}" return f"{self.tournament.name} - {self.name()}"
def name(self): def name(self):
if self.loser: if self.parent:
return "Matchs de classement" return "Matchs de classement"
else: else:
if self.index == 0: if self.index == 0:

@ -1,12 +1,11 @@
from django.db import models from django.db import models
from . import Event, CustomUser, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory from . import Event, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory
import uuid import uuid
from django.utils import timezone, formats from django.utils import timezone, formats
class Tournament(models.Model): class Tournament(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
event = models.ForeignKey(Event, blank=True, null=True, on_delete=models.CASCADE) 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) name = models.CharField(max_length=200, null=True, blank=True)
start_date = models.DateTimeField() start_date = models.DateTimeField()
end_date = models.DateTimeField(null=True, blank=True) end_date = models.DateTimeField(null=True, blank=True)
@ -199,7 +198,7 @@ class Tournament(models.Model):
return matches[0] return matches[0]
def round_for_index(self, index): 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): def group_stages_matches(self):
matches = [] matches = []

@ -187,6 +187,7 @@ class TournamentViewSet(viewsets.ModelViewSet):
queryset = Tournament.objects.all() queryset = Tournament.objects.all()
serializer_class = TournamentSerializer serializer_class = TournamentSerializer
# class ExpandedTournamentViewSet(viewsets.ModelViewSet): # class ExpandedTournamentViewSet(viewsets.ModelViewSet):
# queryset = Tournament.objects.all() # queryset = Tournament.objects.all()
# serializer_class = ExpandedTournamentSerializer # serializer_class = ExpandedTournamentSerializer
@ -209,6 +210,11 @@ class EventViewSet(viewsets.ModelViewSet):
queryset = Event.objects.all() queryset = Event.objects.all()
serializer_class = EventSerializer 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): class RoundViewSet(viewsets.ModelViewSet):
queryset = Round.objects.all() queryset = Round.objects.all()
serializer_class = RoundSerializer serializer_class = RoundSerializer

Loading…
Cancel
Save