diff --git a/src/pretix/base/services/cart.py b/src/pretix/base/services/cart.py index c19aaa462b..e3367532d8 100644 --- a/src/pretix/base/services/cart.py +++ b/src/pretix/base/services/cart.py @@ -1,6 +1,7 @@ from datetime import datetime, timedelta from django.conf import settings +from django.db import transaction from django.db.models import Q from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ @@ -65,7 +66,7 @@ def _check_date(event: Event) -> None: raise CartError(error_messages['ended']) -def _add_items(event: Event, items: List[Tuple[str, Optional[str], int]], +def _add_new_items(event: Event, items: List[Tuple[str, Optional[str], int]], cart_id: str, expiry: datetime) -> Optional[str]: err = None @@ -145,7 +146,7 @@ def _add_items_to_cart(event: Event, items: List[Tuple[str, Optional[str], int]] if not items: raise CartError(error_messages['empty']) - err = _add_items(event, items, cart_id, expiry) + err = _add_new_items(event, items, cart_id, expiry) _delete_expired(expired) if err: raise CartError(err) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 94abb00fcb..45326cbe3b 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -182,21 +182,22 @@ def _perform_order(event: str, payment_provider: str, position_ids: List[str], _check_positions(event, dt, positions) order = _create_order(event, email, positions, dt, pprov, locale=locale) - mail( - order.email, _('Your order: %(code)s') % {'code': order.code}, - 'pretixpresale/email/order_placed.txt', - { - 'order': order, - 'event': event, - 'url': build_absolute_uri(event, 'presale:event.order', kwargs={ - 'order': order.code, - 'secret': order.secret - }), - 'payment': pprov.order_pending_mail_render(order) - }, - event, locale=order.locale - ) - return order.identity + + mail( + order.email, _('Your order: %(code)s') % {'code': order.code}, + 'pretixpresale/email/order_placed.txt', + { + 'order': order, + 'event': event, + 'url': build_absolute_uri(event, 'presale:event.order', kwargs={ + 'order': order.code, + 'secret': order.secret + }), + 'payment': pprov.order_pending_mail_render(order) + }, + event, locale=order.locale + ) + return order.identity def perform_order(event: str, payment_provider: str, positions: List[str],