From ae8652a305c86d3fc0bbd6c1df061a0466a5c233 Mon Sep 17 00:00:00 2001
From: Calum Mackervoy <c.mackervoy@gmail.com>
Date: Mon, 19 Oct 2020 08:45:31 +0000
Subject: [PATCH] bugfix: Serializer.create completed in a transaction

---
 djangoldp/serializers.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py
index e45a55a7..eb6170b6 100644
--- a/djangoldp/serializers.py
+++ b/djangoldp/serializers.py
@@ -8,6 +8,7 @@ from django.conf import settings
 from django.contrib.auth import get_user_model
 from django.core.exceptions import ImproperlyConfigured
 from django.core.exceptions import ValidationError as DjangoValidationError
+from django.db import transaction
 from django.urls import resolve, Resolver404, get_script_prefix
 from django.urls.resolvers import get_resolver
 from django.db.models import QuerySet
@@ -588,9 +589,9 @@ class LDPSerializer(HyperlinkedModelSerializer):
             return super().get_value(dictionary)
 
     def create(self, validated_data):
-        instance = self.internal_create(validated_data, model=self.Meta.model)
-
-        self.attach_related_object(instance, validated_data)
+        with transaction.atomic():
+            instance = self.internal_create(validated_data, model=self.Meta.model)
+            self.attach_related_object(instance, validated_data)
 
         return instance
 
-- 
GitLab