From 46dec3c729e0da946648644035627cbcbd4d866b Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 27 May 2025 14:30:29 +0200 Subject: [PATCH] improvements for data accesses --- sync/models/base.py | 11 +++++++++-- sync/signals.py | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sync/models/base.py b/sync/models/base.py index ac19c77..de8b166 100644 --- a/sync/models/base.py +++ b/sync/models/base.py @@ -18,7 +18,8 @@ class BaseModel(models.Model): def save(self, *args, **kwargs): if self.related_user is None: self.related_user = self.find_related_user() - self.update_data_access_list() + if self._state.adding: + self.update_data_access_list() super().save(*args, **kwargs) def get_store_id(self): @@ -37,6 +38,13 @@ class BaseModel(models.Model): for data_access in data_accesses: self.add_data_access_relation(data_access) + # add data_access to children who might not had the relationship + # if data_accesses: + # for child in self.get_children_by_model(): + # if len(child.data_access_ids) == 0: + # for data_access in data_accesses: + # self.add_data_access_relation(data_access) + def add_data_access_relation(self, data_access): str_id = str(data_access.id) if str_id not in self.data_access_ids: @@ -57,7 +65,6 @@ class BaseModel(models.Model): for child in children: if (child.one_to_many or child.one_to_one) and child.auto_created: model_name = child.related_model.__name__ - # print(f'>>> add children for {model_name}') related_objects[model_name] = getattr(self, child.name).all() return related_objects diff --git a/sync/signals.py b/sync/signals.py index a659af2..33705d6 100644 --- a/sync/signals.py +++ b/sync/signals.py @@ -296,7 +296,7 @@ def related_users(instance): # look in related DataAccess # data_access_list = instances_related_data_access(instance, related_instances) - # print(f'instance = {instance.__class__.__name__}, data access count = {len(data_access_list)}') + print(f'instance = {instance.__class__.__name__}, data access count = {len(data_access_list)}') for data_access in data_access_list: users.add(data_access.related_user) users.update(data_access.shared_with.all())