From f1495f242f5d345683876440201361fbd414f561 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 5 Sep 2016 23:19:25 +0200 Subject: [PATCH] Fixed transaction handling problem if a race condition occurs during invoice creation --- src/pretix/base/models/invoices.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/models/invoices.py b/src/pretix/base/models/invoices.py index 13f7e1e8e..ec73130b7 100644 --- a/src/pretix/base/models/invoices.py +++ b/src/pretix/base/models/invoices.py @@ -2,7 +2,7 @@ import string from datetime import date from decimal import Decimal -from django.db import DatabaseError, models +from django.db import DatabaseError, models, transaction from django.db.models import Max from django.utils.crypto import get_random_string from django.utils.functional import cached_property @@ -88,7 +88,8 @@ class Invoice(models.Model): else: self.invoice_no = self._get_invoice_number_from_order() try: - return super().save(*args, **kwargs) + with transaction.atomic(): + return super().save(*args, **kwargs) except DatabaseError: # Suppress duplicate key errors and try again if i == 9: