set up live testing for time to confirm

timetoconfirm
Raz 7 months ago
parent fe33401d02
commit 1a5e31cb8e
  1. 1
      padelclub_backend/settings_local.py.dist
  2. 21
      tournaments/models/tournament.py

@ -79,3 +79,4 @@ TOURNAMENT_SETTINGS = {
}
BACKGROUND_SCHEDULED_TASK_INTERVAL = 30 # minutes
LIVE_TESTING = False

@ -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"]

Loading…
Cancel
Save