put DataAccess auto-delete in the pre_delete BaseModel signal

sync3
Laurent 5 months ago
parent bf8f103bda
commit d97888c887
  1. 2
      sync/models/data_access.py
  2. 16
      sync/signals.py

@ -7,7 +7,7 @@ from django.conf import settings
from ..registry import model_registry from ..registry import model_registry
import uuid import uuid
from . import ModelLog, SideStoreModel, BaseModel from . import ModelLog, BaseModel
import logging import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

@ -39,7 +39,9 @@ def presave_handler(sender, instance, **kwargs):
if signal == pre_save: if signal == pre_save:
detect_foreign_key_changes_for_shared_instances(sender, instance) detect_foreign_key_changes_for_shared_instances(sender, instance)
sig_type = 'pre_save' sig_type = 'pre_save'
else: elif signal == pre_delete:
if hasattr(instance, 'id'):
DataAccess.objects.filter(model_id=instance.id).delete()
sig_type = 'pre_delete' sig_type = 'pre_delete'
# logger.info(f'* {sig_type} : {instance.__class__.__name__} > impacted users = {users}') # logger.info(f'* {sig_type} : {instance.__class__.__name__} > impacted users = {users}')
@ -274,12 +276,12 @@ def process_foreign_key_changes(sender, instance, **kwargs):
### Data Access ### Data Access
@receiver(post_delete) # @receiver(post_delete)
def delete_data_access_if_necessary(sender, instance, **kwargs): # def delete_data_access_if_necessary(sender, instance, **kwargs):
if not isinstance(instance, BaseModel): # if not isinstance(instance, BaseModel):
return # return
if hasattr(instance, 'id'): # if hasattr(instance, 'id'):
DataAccess.objects.filter(model_id=instance.id).delete() # DataAccess.objects.filter(model_id=instance.id).delete()
@receiver(m2m_changed, sender=DataAccess.shared_with.through) @receiver(m2m_changed, sender=DataAccess.shared_with.through)
def handle_shared_with_changes(sender, instance, action, pk_set, **kwargs): def handle_shared_with_changes(sender, instance, action, pk_set, **kwargs):

Loading…
Cancel
Save