|
|
|
|
@ -2,32 +2,82 @@ 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=True) |
|
|
|
|
name = models.CharField(max_length=200) |
|
|
|
|
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) |
|
|
|
|
umpire_code = models.CharField(max_length=200, blank=True, null=True) |
|
|
|
|
club = models.ForeignKey(Club, null=True, on_delete=models.SET_NULL) |
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
class Tournament(models.Model): |
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
|
|
|
|
event = models.ForeignKey(Event, on_delete=models.CASCADE) |
|
|
|
|
name = models.CharField(max_length=200) |
|
|
|
|
date = models.DateField(null=True, blank=True) |
|
|
|
|
private = models.BooleanField() |
|
|
|
|
user = models.ForeignKey(CustomUser, 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() |
|
|
|
|
group_stage_count = models.IntegerField() |
|
|
|
|
rank_source_date = models.DateField(null=True, blank=True) |
|
|
|
|
custom_name = models.CharField(max_length=100, null=True, blank=True) |
|
|
|
|
day_duration = models.IntegerField() |
|
|
|
|
team_count = models.IntegerField() |
|
|
|
|
team_sorting = models.IntegerField() |
|
|
|
|
federal_category = models.IntegerField() |
|
|
|
|
federal_level_category = models.IntegerField() |
|
|
|
|
federal_age_category = models.IntegerField() |
|
|
|
|
group_stage_court_count = models.IntegerField(null=True, blank=True) |
|
|
|
|
seed_count = models.IntegerField() |
|
|
|
|
closed_registration_date = models.DateField(null=True, blank=True) |
|
|
|
|
additional_qualified = models.IntegerField() |
|
|
|
|
court_count = models.IntegerField(null=True, blank=True) |
|
|
|
|
prioritize_club_members = models.BooleanField() |
|
|
|
|
qualified_per_group_stage = models.IntegerField() |
|
|
|
|
teams_per_group_stage = models.IntegerField() |
|
|
|
|
#estimated_end_date = models.DateField(null=True, blank=True) |
|
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
|
return self.name |
|
|
|
|
@ -36,34 +86,38 @@ class Round(models.Model): |
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
|
|
|
|
index = models.IntegerField(null=True, blank=True) |
|
|
|
|
tournament = models.ForeignKey(Club, on_delete=models.CASCADE) |
|
|
|
|
# winner = models.ForeignKey('self', on_delete=models.CASCADE) |
|
|
|
|
loser = models.ForeignKey('self', on_delete=models.CASCADE) |
|
|
|
|
format = models.IntegerField(null=True, blank=True) |
|
|
|
|
|
|
|
|
|
class GroupStage(models.Model): |
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
|
|
|
|
index = models.IntegerField(null=True, blank=True) |
|
|
|
|
tournament = models.ForeignKey(Club, on_delete=models.CASCADE) |
|
|
|
|
format = models.IntegerField(null=True, blank=True) |
|
|
|
|
|
|
|
|
|
class Match(models.Model): |
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
|
|
|
|
round = models.ForeignKey(Round, on_delete=models.CASCADE) |
|
|
|
|
group_stage = models.ForeignKey(GroupStage, on_delete=models.CASCADE) |
|
|
|
|
index = models.IntegerField(null=True, blank=True) |
|
|
|
|
format = models.IntegerField(null=True, blank=True) |
|
|
|
|
group_stage = models.ForeignKey(GroupStage, on_delete=models.CASCADE) |
|
|
|
|
court = models.IntegerField(null=True, blank=True) |
|
|
|
|
start_date = models.DateField(null=True, blank=True) |
|
|
|
|
end_date = models.DateField(null=True, blank=True) |
|
|
|
|
serve_team_id = models.UUIDField(null=True, blank=True) |
|
|
|
|
winning_team_id = models.UUIDField(null=True, blank=True) |
|
|
|
|
loser_team_id = models.UUIDField(null=True, blank=True) |
|
|
|
|
|
|
|
|
|
class TeamState(models.Model): |
|
|
|
|
score_team = models.CharField(max_length=200) |
|
|
|
|
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() |
|
|
|
|
serve = models.BooleanField() |
|
|
|
|
match = models.ForeignKey(Match, on_delete=models.CASCADE) |
|
|
|
|
has_won = models.BooleanField() |
|
|
|
|
|
|
|
|
|
class TeamRegistration(models.Model): |
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
|
|
|
|
match = models.ForeignKey(Club, on_delete=models.CASCADE) |
|
|
|
|
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE) |
|
|
|
|
registration_date = models.DateField(null=True, blank=True) |
|
|
|
|
call_date = models.DateField(null=True, blank=True) |
|
|
|
|
initial_position = models.IntegerField(null=True, blank=True) |
|
|
|
|
@ -71,17 +125,26 @@ class TeamRegistration(models.Model): |
|
|
|
|
group_stage = models.ForeignKey(GroupStage, on_delete=models.CASCADE) |
|
|
|
|
logo = models.CharField(max_length=200, null=True, blank=True) |
|
|
|
|
|
|
|
|
|
# class Group(models.Model): |
|
|
|
|
# id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
|
|
|
|
# # player = models.ForeignKey(Club, on_delete=models.CASCADE) |
|
|
|
|
|
|
|
|
|
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() |
|
|
|
|
|
|
|
|
|
team = models.ForeignKey(TeamRegistration, on_delete=models.CASCADE) |
|
|
|
|
teamState = models.ManyToManyField(TeamState) |
|
|
|
|
# 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() |
|
|
|
|
|