@ -12,7 +12,7 @@ class RegistrationCartManager:
and checkout processes .
and checkout processes .
"""
"""
CART_EXPIRY_MINUTE S = 30
CART_EXPIRY_SECOND S = 30 0
def __init__ ( self , request ) :
def __init__ ( self , request ) :
self . request = request
self . request = request
@ -29,7 +29,7 @@ class RegistrationCartManager:
""" Get the cart expiry time from the session """
""" Get the cart expiry time from the session """
if ' registration_cart_expiry ' not in self . session :
if ' registration_cart_expiry ' not in self . session :
# Set default expiry to 30 minutes from now
# Set default expiry to 30 minutes from now
expiry = timezone . now ( ) + datetime . timedelta ( minute s= self . CART_EXPIRY_MINUTE S )
expiry = timezone . now ( ) + datetime . timedelta ( second s= self . CART_EXPIRY_SECOND S )
self . session [ ' registration_cart_expiry ' ] = expiry . isoformat ( )
self . session [ ' registration_cart_expiry ' ] = expiry . isoformat ( )
self . session . modified = True
self . session . modified = True
return self . session [ ' registration_cart_expiry ' ]
return self . session [ ' registration_cart_expiry ' ]
@ -48,7 +48,7 @@ class RegistrationCartManager:
def reset_cart_expiry ( self ) :
def reset_cart_expiry ( self ) :
""" Reset the cart expiry time """
""" Reset the cart expiry time """
expiry = timezone . now ( ) + datetime . timedelta ( minute s= self . CART_EXPIRY_MINUTE S )
expiry = timezone . now ( ) + datetime . timedelta ( second s= self . CART_EXPIRY_SECOND S )
self . session [ ' registration_cart_expiry ' ] = expiry . isoformat ( )
self . session [ ' registration_cart_expiry ' ] = expiry . isoformat ( )
self . session . modified = True
self . session . modified = True
@ -69,12 +69,7 @@ class RegistrationCartManager:
# Update tournament reserved spots
# Update tournament reserved spots
tournament . reserved_spots = max ( 0 , tournament . reserved_spots - 1 )
tournament . reserved_spots = max ( 0 , tournament . reserved_spots - 1 )
waiting_list_position = tournament . get_waiting_list_position ( )
waiting_list_position = tournament . get_waiting_list_position ( )
if waiting_list_position > = 0 :
tournament . reserved_spots = 0
else :
tournament . reserved_spots + = 1
tournament . reserved_spots + = 1
tournament . save ( )
tournament . save ( )
# Set up the new cart
# Set up the new cart
@ -107,12 +102,25 @@ class RegistrationCartManager:
if hasattr ( self . request . user , ' phone ' ) :
if hasattr ( self . request . user , ' phone ' ) :
user_phone = self . request . user . phone
user_phone = self . request . user . phone
# Parse the expiry time from ISO format to datetime
expiry_str = self . get_cart_expiry ( )
expiry_datetime = None
if expiry_str :
try :
# Parse the ISO format string to datetime
from django . utils . dateparse import parse_datetime
expiry_datetime = parse_datetime ( expiry_str )
except ( ValueError , TypeError ) :
# If parsing fails, set a new expiry
expiry_datetime = timezone . now ( ) + datetime . timedelta ( seconds = self . CART_EXPIRY_SECONDS )
cart_data = {
cart_data = {
' cart_id ' : self . get_or_create_cart_id ( ) ,
' cart_id ' : self . get_or_create_cart_id ( ) ,
' tournament_id ' : self . session . get ( ' registration_tournament_id ' ) ,
' tournament_id ' : self . session . get ( ' registration_tournament_id ' ) ,
' waiting_list_position ' : self . session . get ( ' waiting_list_position ' ) ,
' waiting_list_position ' : self . session . get ( ' waiting_list_position ' ) ,
' players ' : self . session . get ( ' registration_cart_players ' , [ ] ) ,
' players ' : self . session . get ( ' registration_cart_players ' , [ ] ) ,
' expiry ' : self . get_cart_expiry ( ) ,
' expiry ' : expiry_datetime , # Now a datetime object, not a string
' is_cart_expired ' : self . is_cart_expired ( ) ,
' mobile_number ' : self . session . get ( ' registration_mobile_number ' , user_phone )
' mobile_number ' : self . session . get ( ' registration_mobile_number ' , user_phone )
}
}