From ea97abc2bb7360686df873ee7ba7229605d1960c Mon Sep 17 00:00:00 2001
From: Anji Tong <ollejna@gmail.com>
Date: Tue, 24 Dec 2024 13:37:00 -0500
Subject: [PATCH] Wrap connect in kc_transaction_atomic

---
 kpi/deployment_backends/mixin.py            | 4 +++-
 kpi/deployment_backends/openrosa_backend.py | 9 ++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/kpi/deployment_backends/mixin.py b/kpi/deployment_backends/mixin.py
index 4a448106b3..1e0b5309be 100644
--- a/kpi/deployment_backends/mixin.py
+++ b/kpi/deployment_backends/mixin.py
@@ -8,6 +8,7 @@
 
 from .backends import DEPLOYMENT_BACKENDS
 from .base_backend import BaseDeploymentBackend
+from .kc_access.utils import kc_transaction_atomic
 
 
 class DeployableMixin:
@@ -29,7 +30,8 @@ def can_be_deployed(self):
 
     def connect_deployment(self, backend: str, **kwargs):
         deployment_backend = self.__get_deployment_backend(backend)
-        deployment_backend.connect(**kwargs)
+        with kc_transaction_atomic():
+            deployment_backend.connect(**kwargs)
 
     def deploy(self, backend=False, active=True):
         """
diff --git a/kpi/deployment_backends/openrosa_backend.py b/kpi/deployment_backends/openrosa_backend.py
index 07c091a30b..fcbd2db2d7 100644
--- a/kpi/deployment_backends/openrosa_backend.py
+++ b/kpi/deployment_backends/openrosa_backend.py
@@ -143,11 +143,10 @@ def connect(self, active=False):
         )
         xlsx_file = ContentFile(xlsx_io.read(), name=f'{self.asset.uid}.xlsx')
 
-        with kc_transaction_atomic():
-            self._xform = publish_xls_form(xlsx_file, self.asset.owner)
-            self._xform.downloadable = active
-            self._xform.kpi_asset_uid = self.asset.uid
-            self._xform.save(update_fields=['downloadable', 'kpi_asset_uid'])
+        self._xform = publish_xls_form(xlsx_file, self.asset.owner)
+        self._xform.downloadable = active
+        self._xform.kpi_asset_uid = self.asset.uid
+        self._xform.save(update_fields=['downloadable', 'kpi_asset_uid'])
 
         self.store_data(
             {