|
|
|
@ -11,7 +11,6 @@ from .ws_sender import websocket_sender |
|
|
|
from .registry import device_registry, related_users_registry |
|
|
|
from .registry import device_registry, related_users_registry |
|
|
|
|
|
|
|
|
|
|
|
import logging |
|
|
|
import logging |
|
|
|
import sys |
|
|
|
|
|
|
|
import traceback |
|
|
|
import traceback |
|
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
@ -34,29 +33,13 @@ def presave_handler(sender, instance, **kwargs): |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
users = related_users(instance) |
|
|
|
users = related_users(instance) |
|
|
|
|
|
|
|
|
|
|
|
related_users_registry.register(instance.id, users) |
|
|
|
related_users_registry.register(instance.id, users) |
|
|
|
|
|
|
|
|
|
|
|
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' |
|
|
|
|
|
|
|
elif signal == pre_delete: |
|
|
|
|
|
|
|
# if hasattr(instance, 'id'): |
|
|
|
|
|
|
|
# try: |
|
|
|
|
|
|
|
# data_access_list = DataAccess.objects.filter(model_id=instance.id) |
|
|
|
|
|
|
|
# if data_access_list: |
|
|
|
|
|
|
|
# logger.info(f'>>> {instance.__class__.__name__} {instance.id} : delete {data_access_list.count()} DataAccess') |
|
|
|
|
|
|
|
# data_access_list.delete() |
|
|
|
|
|
|
|
# except Exception as e: |
|
|
|
|
|
|
|
# logger.info(f'*** ERRRRRRR: {e}') |
|
|
|
|
|
|
|
# logger.info(traceback.format_exc()) |
|
|
|
|
|
|
|
# raise |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sig_type = 'pre_delete' |
|
|
|
|
|
|
|
# logger.info(f'* {sig_type} : {instance.__class__.__name__} > impacted users = {users}') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
except Exception as e: |
|
|
|
logger.info(f'*** ERROR: {e}') |
|
|
|
logger.info(f'*** presave_handler ERROR: {e}') |
|
|
|
raise |
|
|
|
raise |
|
|
|
|
|
|
|
|
|
|
|
@receiver([post_save, post_delete]) |
|
|
|
@receiver([post_save, post_delete]) |
|
|
|
@ -344,12 +327,10 @@ def related_users(instance): |
|
|
|
elif isinstance(instance, BaseModel): |
|
|
|
elif isinstance(instance, BaseModel): |
|
|
|
users.add(instance.related_user) |
|
|
|
users.add(instance.related_user) |
|
|
|
data_access_list = DataAccess.objects.filter(id__in=instance.data_access_ids) |
|
|
|
data_access_list = DataAccess.objects.filter(id__in=instance.data_access_ids) |
|
|
|
|
|
|
|
|
|
|
|
# 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: |
|
|
|
for data_access in data_access_list: |
|
|
|
users.add(data_access.related_user) |
|
|
|
users.add(data_access.related_user) |
|
|
|
users.update(data_access.shared_with.all()) |
|
|
|
users.update(data_access.shared_with.all()) |
|
|
|
|
|
|
|
|
|
|
|
if isinstance(instance, DataAccess): |
|
|
|
if isinstance(instance, DataAccess): |
|
|
|
users.update(instance.shared_with.all()) |
|
|
|
users.update(instance.shared_with.all()) |
|
|
|
|
|
|
|
|
|
|
|
|