mirror of
https://github.com/pretix/pretix.git
synced 2026-05-08 15:44:02 +00:00
Move atomic transaction block
This commit is contained in:
@@ -288,7 +288,6 @@ def _check_positions(event: Event, now_dt: datetime, positions: List[CartPositio
|
|||||||
raise OrderError(err)
|
raise OrderError(err)
|
||||||
|
|
||||||
|
|
||||||
@transaction.atomic
|
|
||||||
def _create_order(event: Event, email: str, positions: List[CartPosition], now_dt: datetime,
|
def _create_order(event: Event, email: str, positions: List[CartPosition], now_dt: datetime,
|
||||||
payment_provider: BasePaymentProvider, locale: str=None, address: int=None,
|
payment_provider: BasePaymentProvider, locale: str=None, address: int=None,
|
||||||
meta_info: dict=None):
|
meta_info: dict=None):
|
||||||
@@ -317,33 +316,35 @@ def _create_order(event: Event, email: str, positions: List[CartPosition], now_d
|
|||||||
if last_date < expires:
|
if last_date < expires:
|
||||||
expires = last_date
|
expires = last_date
|
||||||
|
|
||||||
order = Order.objects.create(
|
with transaction.atomic():
|
||||||
status=Order.STATUS_PENDING,
|
order = Order.objects.create(
|
||||||
event=event,
|
status=Order.STATUS_PENDING,
|
||||||
email=email,
|
event=event,
|
||||||
datetime=now_dt,
|
email=email,
|
||||||
expires=expires,
|
datetime=now_dt,
|
||||||
locale=locale,
|
expires=expires,
|
||||||
total=total,
|
locale=locale,
|
||||||
payment_fee=payment_fee,
|
total=total,
|
||||||
payment_provider=payment_provider.identifier,
|
payment_fee=payment_fee,
|
||||||
meta_info=json.dumps(meta_info or {}),
|
payment_provider=payment_provider.identifier,
|
||||||
)
|
meta_info=json.dumps(meta_info or {}),
|
||||||
OrderPosition.transform_cart_positions(positions, order)
|
)
|
||||||
|
OrderPosition.transform_cart_positions(positions, order)
|
||||||
|
|
||||||
if address is not None:
|
if address is not None:
|
||||||
try:
|
try:
|
||||||
addr = InvoiceAddress.objects.get(
|
addr = InvoiceAddress.objects.get(
|
||||||
pk=address
|
pk=address
|
||||||
)
|
)
|
||||||
if addr.order is not None:
|
if addr.order is not None:
|
||||||
addr.pk = None
|
addr.pk = None
|
||||||
addr.order = order
|
addr.order = order
|
||||||
addr.save()
|
addr.save()
|
||||||
except InvoiceAddress.DoesNotExist:
|
except InvoiceAddress.DoesNotExist:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
order.log_action('pretix.event.order.placed')
|
||||||
|
|
||||||
order.log_action('pretix.event.order.placed')
|
|
||||||
order_placed.send(event, order=order)
|
order_placed.send(event, order=order)
|
||||||
return order
|
return order
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user