You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
padelclub_backend/tournaments/models.py

162 lines
7.3 KiB

from django.db import models
from django.contrib.auth.models import AbstractUser
import uuid
import tournaments
class Club(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=50)
acronym = models.CharField(max_length=10)
phone = models.CharField(max_length=15, null=True, blank=True)
code = models.CharField(max_length=10, null=True, blank=True)
federal_club_data = models.JSONField(null=True, blank=True)
address = models.CharField(max_length=200, null=True, blank=True)
city = models.CharField(max_length=100, null=True, blank=True)
zip_code = models.CharField(max_length=10, null=True, blank=True)
latitude = models.FloatField(null=True, blank=True)
longitude = models.FloatField(null=True, blank=True)
def __str__(self):
return self.name
class CustomUser(AbstractUser):
pass
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
umpire_code = models.CharField(max_length=50, blank=True, null=True)
clubs = models.ManyToManyField(Club)
phone = models.CharField(max_length=15, null=True, blank=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
licence_id = models.CharField(max_length=10, null=True, blank=True)
def __str__(self):
return self.username
class Event(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
club = models.ForeignKey(Club, on_delete=models.CASCADE)
date = models.DateField()
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)
tenup_id = models.IntegerField(null=True, blank=True)
group_stage_format = models.IntegerField(null=True, blank=True)
round_format = models.IntegerField(null=True, blank=True)
loser_round_format = models.IntegerField(null=True, blank=True)
def __str__(self):
return self.name
class Tournament(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event = models.ForeignKey(Event, blank=True, null=True, on_delete=models.CASCADE)
user = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True, blank=True)
start_date = models.DateField()
end_date = models.DateField(null=True, blank=True)
creation_date = models.DateField()
is_private = models.BooleanField()
format = models.IntegerField(null=True, blank=True)
group_stage_format = models.IntegerField(null=True, blank=True)
round_format = models.IntegerField(null=True, blank=True)
loser_round_format = models.IntegerField(null=True, blank=True)
bracket_sort_mode = models.IntegerField(default=0)
group_stage_count = models.IntegerField(default=0)
rank_source_date = models.DateField(null=True, blank=True)
custom_name = models.CharField(max_length=100, null=True, blank=True)
day_duration = models.IntegerField(default=0)
team_count = models.IntegerField(default=0)
team_sorting = models.IntegerField(default=0)
federal_category = models.IntegerField(default=0)
federal_level_category = models.IntegerField(default=0)
federal_age_category = models.IntegerField(default=0)
group_stage_court_count = models.IntegerField(null=True, blank=True)
seed_count = models.IntegerField(default=0)
closed_registration_date = models.DateField(null=True, blank=True)
additional_qualified = models.IntegerField(default=0)
court_count = models.IntegerField(null=True, blank=True)
prioritize_club_members = models.BooleanField()
qualified_per_group_stage = models.IntegerField(default=0)
teams_per_group_stage = models.IntegerField(default=0)
#estimated_end_date = models.DateField(null=True, blank=True)
def __str__(self):
return self.name
class Round(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tournament = models.ForeignKey(Club, on_delete=models.CASCADE)
index = models.IntegerField(null=True, blank=True)
loser = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE)
format = models.IntegerField(null=True, blank=True)
def __str__(self):
return self.index
class GroupStage(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tournament = models.ForeignKey(Club, on_delete=models.CASCADE)
index = models.IntegerField(null=True, blank=True)
format = models.IntegerField(null=True, blank=True)
def __str__(self):
return self.index
class Match(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
round = models.ForeignKey(Round, null=True, blank=True, on_delete=models.CASCADE)
group_stage = models.ForeignKey(GroupStage, null=True, blank=True, on_delete=models.CASCADE)
index = models.IntegerField(null=True, blank=True)
format = models.IntegerField(null=True, blank=True)
court = models.IntegerField(null=True, blank=True)
start_date = models.DateField(null=True, blank=True)
end_date = models.DateField(null=True, blank=True)
serving_team_id = models.UUIDField(null=True, blank=True)
winning_team_id = models.UUIDField(null=True, blank=True)
losing_team_id = models.UUIDField(null=True, blank=True)
class TeamState(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
match = models.ForeignKey(Match, on_delete=models.CASCADE)
score = models.CharField(max_length=200)
walk_out = models.IntegerField(null=True, blank=True) #id, int of the walked_out team
lucky_loser = models.BooleanField()
class TeamRegistration(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
group_stage = models.ForeignKey(GroupStage, null=True, blank=True, on_delete=models.SET_NULL)
registration_date = models.DateField(null=True, blank=True)
call_date = models.DateField(null=True, blank=True)
initial_position = models.IntegerField(null=True, blank=True)
group_stage_position = models.IntegerField(null=True, blank=True)
logo = models.CharField(max_length=200, null=True, blank=True)
class PlayerRegistration(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
team_registration = models.ForeignKey(TeamRegistration, on_delete=models.CASCADE)
team_state = models.ManyToManyField(TeamState)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
licence_id = models.CharField(max_length=200)
rank = models.IntegerField(null=True, blank=True)
has_paid = models.BooleanField()
def __str__(self):
return self.first_name
# player = models.ForeignKey(Club, on_delete=models.CASCADE)
# class Set(models.Model):
# class Game(models.Model):
# set = models.ForeignKey(Set, on_delete=models.CASCADE)
# format = models.IntegerField()
# class Point(models.Model):
# game = models.ForeignKey(Game, on_delete=models.CASCADE)
# action = models.IntegerField()
# date = models.DateField()
# team_id = models.IntegerField()