from django.db import models from django.contrib.auth.models import AbstractUser import uuid class Club(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) name = models.CharField(max_length=200) address = models.CharField(max_length=200, 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) def __str__(self): return self.username class Event(models.Model): club = models.ForeignKey(Club, on_delete=models.CASCADE) 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() def __str__(self): return self.name 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) class GroupStage(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) index = 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) 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) class TeamState(models.Model): score_team = 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) 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) 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): 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)