Laurent 2 months ago
commit 6759ce7af8
  1. 4
      padelclub_backend/settings.py
  2. 35
      tournaments/middleware.py
  3. 3
      tournaments/models/tournament.py
  4. 27
      tournaments/services/tournament_registration.py

@ -65,9 +65,7 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'tournaments.middleware.ReferrerMiddleware', # Add this line
'tournaments.middleware.RegistrationCartCleanupMiddleware',
'tournaments.middleware.ReferrerMiddleware',
]
ROOT_URLCONF = 'padelclub_backend.urls'

@ -1,6 +1,4 @@
from django.urls import reverse
from django.utils import timezone
import datetime
class ReferrerMiddleware:
def __init__(self, get_response):
@ -18,36 +16,3 @@ class ReferrerMiddleware:
response = self.get_response(request)
return response
class RegistrationCartCleanupMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
self._check_and_clean_expired_cart(request)
response = self.get_response(request)
return response
def _check_and_clean_expired_cart(self, request):
if 'registration_cart_expiry' in request.session:
try:
expiry_str = request.session['registration_cart_expiry']
expiry = datetime.datetime.fromisoformat(expiry_str)
if timezone.now() > expiry:
# Clear expired cart
keys_to_delete = [
'registration_cart_id',
'registration_tournament_id',
'registration_cart_players',
'registration_cart_expiry',
'registration_mobile_number'
]
for key in keys_to_delete:
if key in request.session:
del request.session[key]
request.session.modified = True
except (ValueError, TypeError):
# Invalid expiry format, clear it
if 'registration_cart_expiry' in request.session:
del request.session['registration_cart_expiry']
request.session.modified = True

@ -1861,7 +1861,10 @@ class Tournament(BaseModel):
second=0,
microsecond=0
)
raw_deadline += timezone.timedelta(minutes=minutes_to_confirm)
print(f"Before hours: {before_hours}, After hours: {after_hours}")
print(f"Final deadline after adding confirmation time: {raw_deadline}")
tournament_start_date_minus_five = tournament_start_date - timedelta(minutes=5)
if raw_deadline >= tournament_start_date_minus_five:

@ -25,6 +25,31 @@ class RegistrationCartManager:
self.session = request.session
self.first_tournament = False
def _clean_expired_cart(self):
"""Clean up expired cart data from session"""
if 'registration_cart_expiry' in self.session:
try:
expiry_str = self.session['registration_cart_expiry']
expiry = datetime.datetime.fromisoformat(expiry_str)
if timezone.now() > expiry:
# Clear expired cart
keys_to_delete = [
'registration_cart_id',
'registration_tournament_id',
'registration_cart_players',
'registration_cart_expiry',
'registration_mobile_number'
]
for key in keys_to_delete:
if key in self.session:
del self.session[key]
self.session.modified = True
except (ValueError, TypeError):
# Invalid expiry format, clear it
if 'registration_cart_expiry' in self.session:
del self.session['registration_cart_expiry']
self.session.modified = True
def get_or_create_cart_id(self):
"""Get or create a registration cart ID in the session"""
if 'registration_cart_id' not in self.session:
@ -50,9 +75,11 @@ class RegistrationCartManager:
try:
expiry = parse_datetime(expiry_str)
if expiry is None:
self._clean_expired_cart()
return True
return timezone.now() > expiry
except (ValueError, TypeError):
self._clean_expired_cart()
return True
def reset_cart_expiry(self):

Loading…
Cancel
Save