CartManager: expect reservation_time parameter instead of expiry date

This commit is contained in:
Mira Weller
2025-05-14 12:13:38 +02:00
parent c17a090244
commit 9729496415

View File

@@ -33,6 +33,7 @@
# License for the specific language governing permissions and limitations under the License.
import re
import uuid
import warnings
from collections import Counter, defaultdict, namedtuple
from datetime import datetime, time, timedelta
from decimal import Decimal
@@ -275,7 +276,10 @@ class CartManager:
}
def __init__(self, event: Event, cart_id: str, sales_channel: SalesChannel,
invoice_address: InvoiceAddress=None, widget_data=None, expiry=None):
invoice_address: InvoiceAddress=None, widget_data=None, expiry=None, reservation_time: timedelta=None):
"""
Creates a new CartManager for an event.
"""
self.event = event
self.cart_id = cart_id
self.real_now_dt = now()
@@ -286,12 +290,21 @@ class CartManager:
self._subevents_cache = {}
self._variations_cache = {}
self._seated_cache = {}
self._expiry = None
self._explicit_expiry = expiry
self.invoice_address = invoice_address
self._widget_data = widget_data or {}
self._sales_channel = sales_channel
if expiry and reservation_time:
raise TypeError('Cannot specify both expiry and reservation_time')
elif expiry:
warnings.warn('CartManager(expiry=...) is deprecated, use reservation_time=... instead')
self._reservation_time = expiry - now()
elif reservation_time:
self._reservation_time = reservation_time
else:
self._reservation_time = timedelta(minutes=self.event.settings.get('reservation_time', as_type=int))
self._expiry = self.real_now_dt + self._reservation_time
@property
def positions(self):
return self.event.cartposition_set.filter(
@@ -1416,7 +1429,6 @@ class CartManager:
def commit(self):
self._check_presale_dates()
self._check_max_cart_size()
self._calculate_expiry()
err = self._delete_out_of_timeframe()
err = self.extend_expired_positions() or err