From 2747a766b7b1d1e19e70571f960d699896027967 Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 12:50:10 +0530 Subject: [PATCH 01/13] Finds breaking teams for checkin --- tabbycat/checkins/views.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index c7ad269f185..feecffe2361 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -13,6 +13,7 @@ from actionlog.models import ActionLogEntry from options.utils import use_team_code_names from participants.models import Person, Speaker +from breakqual.models import BreakingTeam from participants.serializers import InstitutionSerializer from tournaments.mixins import PublicTournamentPageMixin, TournamentMixin from users.permissions import Permission @@ -68,6 +69,11 @@ class CheckInPeopleStatusView(BaseCheckInStatusView): edit_permission = Permission.EDIT_PARTICIPANT_CHECKIN def get_context_data(self, **kwargs): + #TODO: Find whether this is a break round or not + is_break_round = False + if is_break_round: + breaking_teams = BreakingTeam.objects.filter( break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() + breaking_team_ids = set(breaking_team.team.id for breaking_team in breaking_teams) team_codes = use_team_code_names(self.tournament, admin=self.for_admin, user=self.request.user) kwargs["team_codes"] = json.dumps(team_codes) @@ -89,6 +95,9 @@ def get_context_data(self, **kwargs): speakers = [] for speaker in Speaker.objects.filter(team__tournament=self.tournament).select_related('team', 'team__institution', 'checkin_identifier'): + if is_break_round: + if speaker.team.id not in breaking_team_ids: + continue try: code = speaker.checkin_identifier.barcode except ObjectDoesNotExist: From 56527b9889ab1c80dc6ce68fc91bbd82428737af Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 13:04:34 +0530 Subject: [PATCH 02/13] Show only breaking teams for checkin --- tabbycat/checkins/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index feecffe2361..88eeb5a9739 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -69,8 +69,10 @@ class CheckInPeopleStatusView(BaseCheckInStatusView): edit_permission = Permission.EDIT_PARTICIPANT_CHECKIN def get_context_data(self, **kwargs): - #TODO: Find whether this is a break round or not + break_rounds = self.tournament.break_rounds() is_break_round = False + if self.tournament.current_round in break_rounds: + is_break_round = True if is_break_round: breaking_teams = BreakingTeam.objects.filter( break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() breaking_team_ids = set(breaking_team.team.id for breaking_team in breaking_teams) From eb79a1c3a38403d901b0171d8962a9de0f04a18a Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 13:22:37 +0530 Subject: [PATCH 03/13] Fixed linter errors --- tabbycat/checkins/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index 88eeb5a9739..be462749e21 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -12,8 +12,8 @@ from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry from options.utils import use_team_code_names -from participants.models import Person, Speaker from breakqual.models import BreakingTeam +from participants.models import Person, Speaker from participants.serializers import InstitutionSerializer from tournaments.mixins import PublicTournamentPageMixin, TournamentMixin from users.permissions import Permission @@ -74,7 +74,7 @@ def get_context_data(self, **kwargs): if self.tournament.current_round in break_rounds: is_break_round = True if is_break_round: - breaking_teams = BreakingTeam.objects.filter( break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() + breaking_teams = BreakingTeam.objects.filter(break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() breaking_team_ids = set(breaking_team.team.id for breaking_team in breaking_teams) team_codes = use_team_code_names(self.tournament, admin=self.for_admin, user=self.request.user) From 281a5ecac00e941a177f4a03a18abe49f51875c5 Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 13:34:44 +0530 Subject: [PATCH 04/13] Fixed linter errors 2 --- tabbycat/checkins/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index be462749e21..519318d2a57 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -97,9 +97,8 @@ def get_context_data(self, **kwargs): speakers = [] for speaker in Speaker.objects.filter(team__tournament=self.tournament).select_related('team', 'team__institution', 'checkin_identifier'): - if is_break_round: - if speaker.team.id not in breaking_team_ids: - continue + if is_break_round and speaker.team.id not in breaking_team_ids: + continue try: code = speaker.checkin_identifier.barcode except ObjectDoesNotExist: From 548311efd4a1e112f087afb4e7f93bc070147993 Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 13:50:41 +0530 Subject: [PATCH 05/13] Reduce cyclomatic complexity --- tabbycat/checkins/views.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index 519318d2a57..24621d46ee8 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -68,12 +68,13 @@ class CheckInPeopleStatusView(BaseCheckInStatusView): edit_permission = Permission.EDIT_PARTICIPANT_CHECKIN - def get_context_data(self, **kwargs): + def is_break_round(self): + """Checks if the current round is a break round.""" break_rounds = self.tournament.break_rounds() - is_break_round = False - if self.tournament.current_round in break_rounds: - is_break_round = True - if is_break_round: + return self.tournament.current_round in break_rounds + + def get_context_data(self, **kwargs): + if self.is_break_round(): breaking_teams = BreakingTeam.objects.filter(break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() breaking_team_ids = set(breaking_team.team.id for breaking_team in breaking_teams) @@ -97,7 +98,7 @@ def get_context_data(self, **kwargs): speakers = [] for speaker in Speaker.objects.filter(team__tournament=self.tournament).select_related('team', 'team__institution', 'checkin_identifier'): - if is_break_round and speaker.team.id not in breaking_team_ids: + if self.is_break_round() and speaker.team.id not in breaking_team_ids: continue try: code = speaker.checkin_identifier.barcode From bf6883e780682d526934dee9573c7e2b63c0e56b Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 13:55:54 +0530 Subject: [PATCH 06/13] Reduce cyclomatic complexity 2 --- tabbycat/checkins/views.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index 24621d46ee8..4403bf3cdba 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -73,10 +73,13 @@ def is_break_round(self): break_rounds = self.tournament.break_rounds() return self.tournament.current_round in break_rounds + def get_breaking_team_ids(self): + breaking_teams = BreakingTeam.objects.filter(break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() + return set(breaking_team.team.id for breaking_team in breaking_teams) + def get_context_data(self, **kwargs): if self.is_break_round(): - breaking_teams = BreakingTeam.objects.filter(break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() - breaking_team_ids = set(breaking_team.team.id for breaking_team in breaking_teams) + breaking_team_ids = self.get_breaking_team_ids() team_codes = use_team_code_names(self.tournament, admin=self.for_admin, user=self.request.user) kwargs["team_codes"] = json.dumps(team_codes) From a27433bda7d7ef6981e65d6fec68aafe4305d602 Mon Sep 17 00:00:00 2001 From: Dineth Date: Sun, 8 Dec 2024 14:01:07 +0530 Subject: [PATCH 07/13] Fix linter error 3 --- tabbycat/checkins/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index 4403bf3cdba..fcafcab4f11 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -11,8 +11,8 @@ from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry -from options.utils import use_team_code_names from breakqual.models import BreakingTeam +from options.utils import use_team_code_names from participants.models import Person, Speaker from participants.serializers import InstitutionSerializer from tournaments.mixins import PublicTournamentPageMixin, TournamentMixin From 68681f1cd62ff88c8f62a9c96b95c8501cd128db Mon Sep 17 00:00:00 2001 From: Dineth Date: Fri, 13 Dec 2024 02:00:11 +0530 Subject: [PATCH 08/13] Change to add breaking team within speaker dict itself --- tabbycat/checkins/views.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index fcafcab4f11..9739df0f676 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -78,8 +78,7 @@ def get_breaking_team_ids(self): return set(breaking_team.team.id for breaking_team in breaking_teams) def get_context_data(self, **kwargs): - if self.is_break_round(): - breaking_team_ids = self.get_breaking_team_ids() + breaking_team_ids = self.get_breaking_team_ids() team_codes = use_team_code_names(self.tournament, admin=self.for_admin, user=self.request.user) kwargs["team_codes"] = json.dumps(team_codes) @@ -101,8 +100,9 @@ def get_context_data(self, **kwargs): speakers = [] for speaker in Speaker.objects.filter(team__tournament=self.tournament).select_related('team', 'team__institution', 'checkin_identifier'): - if self.is_break_round() and speaker.team.id not in breaking_team_ids: - continue + breaking = False; + if speaker.team.id in breaking_team_ids: + breaking = True try: code = speaker.checkin_identifier.barcode except ObjectDoesNotExist: @@ -114,8 +114,10 @@ def get_context_data(self, **kwargs): 'identifier': [code], 'locked': False, 'team': speaker.team.code_name if team_codes else speaker.team.short_name, 'institution': institution, + 'breaking': breaking, }) kwargs["speakers"] = json.dumps(speakers) + kwargs["is_break_round"] = self.is_break_round() return super().get_context_data(**kwargs) From cc1229f50c5b0238e65610fc187521c19b36aa79 Mon Sep 17 00:00:00 2001 From: Dineth Date: Fri, 13 Dec 2024 02:14:51 +0530 Subject: [PATCH 09/13] Fix linter error --- tabbycat/checkins/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index 9739df0f676..6914e7ef688 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -100,7 +100,7 @@ def get_context_data(self, **kwargs): speakers = [] for speaker in Speaker.objects.filter(team__tournament=self.tournament).select_related('team', 'team__institution', 'checkin_identifier'): - breaking = False; + breaking = False if speaker.team.id in breaking_team_ids: breaking = True try: From f56f3231fd87286eb65ea01b65df23d4e5e92587 Mon Sep 17 00:00:00 2001 From: Dineth Date: Fri, 13 Dec 2024 10:53:19 +0530 Subject: [PATCH 10/13] Add button for breaking teams checkin --- .../templates/CheckInStatusContainer.vue | 30 +++++++++++++++++-- .../checkins/templates/checkin_status.html | 4 ++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/tabbycat/checkins/templates/CheckInStatusContainer.vue b/tabbycat/checkins/templates/CheckInStatusContainer.vue index 768058ed24d..53935f799eb 100644 --- a/tabbycat/checkins/templates/CheckInStatusContainer.vue +++ b/tabbycat/checkins/templates/CheckInStatusContainer.vue @@ -16,7 +16,19 @@ -
+ +
+ +
+ + +
@@ -30,6 +31,7 @@ 'teamCodes': {{ team_codes }}, 'forAdmin': {% if for_admin %}true{% else %}false{% endif %}, 'teamSize': {{ team_size }}, + 'isBreakRound': {% if is_break_round %}true{% else %}false{% endif %}, } {{ block.super }} From ba12382026003c34cd2bcc00f9e235f90cb0118e Mon Sep 17 00:00:00 2001 From: Dineth Date: Fri, 13 Dec 2024 18:47:45 +0530 Subject: [PATCH 11/13] Add breaking status for judges --- tabbycat/checkins/views.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index 6914e7ef688..997f02f2dc5 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -73,12 +73,12 @@ def is_break_round(self): break_rounds = self.tournament.break_rounds() return self.tournament.current_round in break_rounds - def get_breaking_team_ids(self): + def get_breaking_team_short_names(self): breaking_teams = BreakingTeam.objects.filter(break_category__tournament=self.tournament).select_related('team', 'team__institution', 'break_category', 'break_category__tournament').all() - return set(breaking_team.team.id for breaking_team in breaking_teams) + return set(breaking_team.team.short_name for breaking_team in breaking_teams) def get_context_data(self, **kwargs): - breaking_team_ids = self.get_breaking_team_ids() + breaking_team_short_names = self.get_breaking_team_short_names() team_codes = use_team_code_names(self.tournament, admin=self.for_admin, user=self.request.user) kwargs["team_codes"] = json.dumps(team_codes) @@ -94,14 +94,14 @@ def get_context_data(self, **kwargs): adjudicators.append({ 'id': adj.id, 'name': adj.get_public_name(self.tournament), 'type': 'Adjudicator', 'identifier': [code], 'locked': False, 'independent': adj.independent, - 'institution': institution, + 'institution': institution, 'breaking': adj.breaking, }) kwargs["adjudicators"] = json.dumps(adjudicators) speakers = [] for speaker in Speaker.objects.filter(team__tournament=self.tournament).select_related('team', 'team__institution', 'checkin_identifier'): breaking = False - if speaker.team.id in breaking_team_ids: + if speaker.team.code_name in breaking_team_short_names: breaking = True try: code = speaker.checkin_identifier.barcode @@ -118,6 +118,7 @@ def get_context_data(self, **kwargs): }) kwargs["speakers"] = json.dumps(speakers) kwargs["is_break_round"] = self.is_break_round() + kwargs["breaking_team_short_names"] = json.dumps(list(breaking_team_short_names)) return super().get_context_data(**kwargs) From e6d3f2bc1b3dc24040b7dee64288feedbf78b676 Mon Sep 17 00:00:00 2001 From: Dineth Date: Fri, 13 Dec 2024 18:52:58 +0530 Subject: [PATCH 12/13] Edit frontend to take in arguments regarding breaks --- tabbycat/checkins/templates/checkin_status.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tabbycat/checkins/templates/checkin_status.html b/tabbycat/checkins/templates/checkin_status.html index 8a463eb7d9c..f7400033835 100644 --- a/tabbycat/checkins/templates/checkin_status.html +++ b/tabbycat/checkins/templates/checkin_status.html @@ -13,6 +13,7 @@ :team-codes="teamCodes" :for-admin="forAdmin" :team-size="teamSize" + :breaking-team-short-names="breakingTeamShortNames" :is-break-round="isBreakRound">
@@ -31,6 +32,7 @@ 'teamCodes': {{ team_codes }}, 'forAdmin': {% if for_admin %}true{% else %}false{% endif %}, 'teamSize': {{ team_size }}, + 'breakingTeamShortNames': {{ breaking_team_short_names|safe }}, 'isBreakRound': {% if is_break_round %}true{% else %}false{% endif %}, } From 0475adf46a3c1e4f3baa23ca61054dd4c71eb93f Mon Sep 17 00:00:00 2001 From: Dineth Date: Fri, 13 Dec 2024 19:27:25 +0530 Subject: [PATCH 13/13] Fix style --- .../templates/CheckInStatusContainer.vue | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/tabbycat/checkins/templates/CheckInStatusContainer.vue b/tabbycat/checkins/templates/CheckInStatusContainer.vue index 53935f799eb..36f9c16a263 100644 --- a/tabbycat/checkins/templates/CheckInStatusContainer.vue +++ b/tabbycat/checkins/templates/CheckInStatusContainer.vue @@ -17,9 +17,11 @@ -
-
-