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': [
'rest_framework.authentication.BasicAuthentication',
'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
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

@ -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 .club import Club
from .enums import FederalCategory, FederalLevelCategory, FederalAgeCategory, FederalMatchCategory
from .event import Event
from .tournament import Tournament, TeamSummon

@ -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)

@ -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 ?

@ -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)

@ -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:

@ -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 = []

@ -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

Loading…
Cancel
Save