From e37b032d4e923127c65c1c05104412491ca862fb Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Fri, 6 Mar 2026 10:56:42 +0100 Subject: [PATCH] Always check voucher validity against real time, not time machine time --- src/pretix/base/services/cart.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/services/cart.py b/src/pretix/base/services/cart.py index 6080378f08..f4b883b05c 100644 --- a/src/pretix/base/services/cart.py +++ b/src/pretix/base/services/cart.py @@ -334,7 +334,8 @@ def _check_position_constraints( raise CartPositionError(error_messages['voucher_invalid_subevent']) # Voucher expired - if voucher and voucher.valid_until and voucher.valid_until < time_machine_now_dt: + # (checked using real_now_dt as vouchers influence quota calculations) + if voucher and voucher.valid_until and voucher.valid_until < real_now_dt: raise CartPositionError(error_messages['voucher_expired']) # Subevent has been disabled @@ -412,7 +413,7 @@ class CartManager: VoucherOperation: 15, ExtendOperation: 20, AddOperation: 30 - } + }ordermanager def __init__(self, event: Event, cart_id: str, sales_channel: SalesChannel, invoice_address: InvoiceAddress=None, widget_data=None, reservation_time: timedelta=None):