From 1a5e31cb8ebfd3987e64151c937424ba70e66a61 Mon Sep 17 00:00:00 2001 From: Raz Date: Mon, 14 Apr 2025 15:45:59 +0200 Subject: [PATCH] set up live testing for time to confirm --- padelclub_backend/settings_local.py.dist | 1 + tournaments/models/tournament.py | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/padelclub_backend/settings_local.py.dist b/padelclub_backend/settings_local.py.dist index bdc3662..2254cc3 100644 --- a/padelclub_backend/settings_local.py.dist +++ b/padelclub_backend/settings_local.py.dist @@ -79,3 +79,4 @@ TOURNAMENT_SETTINGS = { } BACKGROUND_SCHEDULED_TASK_INTERVAL = 30 # minutes +LIVE_TESTING = False diff --git a/tournaments/models/tournament.py b/tournaments/models/tournament.py index 18439ed..bda9fa1 100644 --- a/tournaments/models/tournament.py +++ b/tournaments/models/tournament.py @@ -10,6 +10,7 @@ from ..utils.extensions import plural_format from django.utils.formats import date_format from ..utils.licence_validator import LicenseValidator from django.apps import apps +from django.conf import settings class TeamSortingType(models.IntegerChoices): RANK = 1, 'Rank' @@ -1529,6 +1530,11 @@ class Tournament(BaseModel): # 6. Use the more restrictive rule (smaller time window) minutes_to_confirm = min(time_based_minutes, waitlist_based_minutes) + live_testing = getattr(settings, 'LIVE_TESTING', False) + # Divide by 10 if LIVE_TESTING is enabled + if live_testing: + minutes_to_confirm = minutes_to_confirm / 10 + # 7. Check urgency overrides apply_business_rules = True @@ -1536,21 +1542,24 @@ class Tournament(BaseModel): if hours_until_tournament <= hours_threshold: apply_business_rules = False # Ensure minimum response time - minutes_to_confirm = max(minutes_to_confirm, URGENCY_OVERRIDE["minimum_response_time"]) + minutes_to_confirm = max(minutes_to_confirm, + URGENCY_OVERRIDE["minimum_response_time"] / 10 if getattr(settings, 'LIVE_TESTING', False) + else URGENCY_OVERRIDE["minimum_response_time"]) break # 8. Calculate raw deadline raw_deadline = current_time + timezone.timedelta(minutes=minutes_to_confirm) - # 9. Round up to next 30-minute mark + # 9. Round up to next interval mark based on BACKGROUND_SCHEDULED_TASK_INTERVAL + interval = settings.BACKGROUND_SCHEDULED_TASK_INTERVAL minute = raw_deadline.minute - if minute % 30 != 0: - # Minutes to next 30-minute mark - minutes_to_add = 30 - (minute % 30) + if minute % interval != 0: + # Minutes to next interval mark + minutes_to_add = interval - (minute % interval) raw_deadline += timezone.timedelta(minutes=minutes_to_add) # 10. Apply business hours rules if needed - if apply_business_rules: + if apply_business_rules and live_testing is False: # Check if deadline falls outside business hours is_weekend = raw_deadline.weekday() in BUSINESS_RULES["days"]["weekend"] before_hours = raw_deadline.hour < BUSINESS_RULES["hours"]["start"]