diff --git a/tournaments/models/group_stage.py b/tournaments/models/group_stage.py index a47eedf..5e7b154 100644 --- a/tournaments/models/group_stage.py +++ b/tournaments/models/group_stage.py @@ -34,7 +34,10 @@ class GroupStage(SideStoreModel): super().save(*args, **kwargs) def get_tournament_id(self): - return self.tournament.id + if self.tournament: + return self.tournament.id + else: + return None def display_name(self): if self.name: diff --git a/tournaments/models/match.py b/tournaments/models/match.py index 110bd84..b8afac8 100644 --- a/tournaments/models/match.py +++ b/tournaments/models/match.py @@ -46,11 +46,16 @@ class Match(SideStoreModel): def tournament(self): if self.round: return self.round.tournament - else: + elif self.group_stage: return self.group_stage.tournament + return None def get_tournament_id(self): - return self.tournament().id + tournament = self.tournament() + if tournament: + return tournament.id + else: + return None def court_name(self, index): club = None diff --git a/tournaments/models/player_registration.py b/tournaments/models/player_registration.py index 86505bd..e23be85 100644 --- a/tournaments/models/player_registration.py +++ b/tournaments/models/player_registration.py @@ -49,7 +49,10 @@ class PlayerRegistration(SideStoreModel): super().save(*args, **kwargs) def get_tournament_id(self): - return self.team_registration.tournament.id + if self.team_registration and self.team_registration.tournament: + return self.team_registration.tournament.id + else: + return None def name(self): return f"{self.first_name} {self.last_name}" diff --git a/tournaments/models/round.py b/tournaments/models/round.py index 352435b..a6c0250 100644 --- a/tournaments/models/round.py +++ b/tournaments/models/round.py @@ -31,7 +31,10 @@ class Round(SideStoreModel): super().save(*args, **kwargs) def get_tournament_id(self): - return self.tournament.id + if self.tournament: + return self.tournament.id + else: + return None def name(self): if self.parent and self.parent.parent is None: diff --git a/tournaments/models/team_registration.py b/tournaments/models/team_registration.py index 28fcf29..f4abfd0 100644 --- a/tournaments/models/team_registration.py +++ b/tournaments/models/team_registration.py @@ -50,7 +50,10 @@ class TeamRegistration(SideStoreModel): super().save(*args, **kwargs) def get_tournament_id(self): - return self.tournament.id + if self.tournament: + return self.tournament.id + else: + return None def player_names_as_list(self): players = list(self.player_registrations.all()) diff --git a/tournaments/models/team_score.py b/tournaments/models/team_score.py index 0d87dbc..078f015 100644 --- a/tournaments/models/team_score.py +++ b/tournaments/models/team_score.py @@ -14,7 +14,10 @@ class TeamScore(SideStoreModel): pass def __str__(self): - return f"{self.match.stage_name()} #{self.match.index}: {self.player_names()}" + if self.match: + return f"{self.match.stage_name()} #{self.match.index}: {self.player_names()}" + else: + return "Empty" def save(self, *args, **kwargs): self.store_id = str(self.get_tournament_id()) @@ -29,7 +32,11 @@ class TeamScore(SideStoreModel): return None def get_tournament_id(self): - return self.tournament().id + tournament = self.tournament() + if tournament: + return tournament.id + else: + return None def player_names(self): if self.team_registration: diff --git a/tournaments/signals.py b/tournaments/signals.py index f991688..70c85e3 100644 --- a/tournaments/signals.py +++ b/tournaments/signals.py @@ -91,6 +91,8 @@ def notify_team(team, tournament, message_type): @receiver(pre_delete, sender=TeamRegistration) def unregister_team(sender, instance, **kwargs): + if not instance.tournament: + return if instance.tournament.is_deleted: return if instance.tournament.enable_online_registration is False: @@ -157,7 +159,7 @@ def check_waiting_list(sender, instance, **kwargs): @receiver(pre_save, sender=TeamRegistration) def warn_team_walkout_status_change(sender, instance, **kwargs): - if instance.id is None or instance.tournament.enable_online_registration is False: + if instance.id is None or instance.tournament is None or instance.tournament.enable_online_registration is False: return previous_instance = None