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.
162 lines
7.3 KiB
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()
|
|
|