diff --git a/sync/models/data_access.py b/sync/models/data_access.py index 23425b3..a371eb7 100644 --- a/sync/models/data_access.py +++ b/sync/models/data_access.py @@ -1,8 +1,8 @@ from django.db import models from django.utils import timezone -# from django.apps import apps from django.core.exceptions import ObjectDoesNotExist from django.conf import settings +from django.db import transaction from ..registry import model_registry import uuid @@ -71,10 +71,13 @@ class DataAccess(BaseModel): obj = model_class.objects.get(id=self.model_id) related_instance = obj.related_instances() related_instance.append(obj) - for instance in related_instance: - if isinstance(instance, BaseModel): - instance.add_data_access_relation(self) - instance.save() + + with transaction.atomic(): + for instance in related_instance: + logger.info(f'adds DataAccess to {instance.__class__.__name__}') + if isinstance(instance, BaseModel): + instance.add_data_access_relation(self) + instance.save() except ObjectDoesNotExist: pass @@ -85,9 +88,11 @@ class DataAccess(BaseModel): obj = model_class.objects.get(id=self.model_id) related_instance = obj.related_instances() related_instance.append(obj) - for instance in related_instance: - if isinstance(instance, BaseModel): - instance.remove_data_access_relation(self) - instance.save() + + with transaction.atomic(): + for instance in related_instance: + if isinstance(instance, BaseModel): + instance.remove_data_access_relation(self) + instance.save() except ObjectDoesNotExist: pass