|
|
|
@ -24,7 +24,7 @@ def presave_handler(sender, instance, **kwargs): |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
# some other classes are excluded in settings_app.py: SYNC_APPS |
|
|
|
# some other classes are excluded in settings_app.py: SYNC_APPS |
|
|
|
if not isinstance(instance, (BaseModel, User)) or isinstance(instance, DataAccess): |
|
|
|
if not isinstance(instance, (BaseModel, User)): |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
signal = kwargs.get('signal') |
|
|
|
signal = kwargs.get('signal') |
|
|
|
@ -53,8 +53,8 @@ def synchronization_notifications(sender, instance, created=False, **kwargs): |
|
|
|
# some classes are excluded in settings_app.py: SYNC_APPS |
|
|
|
# some classes are excluded in settings_app.py: SYNC_APPS |
|
|
|
if not isinstance(instance, BaseModel) and not isinstance(instance, User): |
|
|
|
if not isinstance(instance, BaseModel) and not isinstance(instance, User): |
|
|
|
return |
|
|
|
return |
|
|
|
if isinstance(instance, DataAccess): |
|
|
|
# if isinstance(instance, DataAccess): |
|
|
|
return |
|
|
|
# return |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
process_foreign_key_changes(sender, instance, **kwargs) |
|
|
|
process_foreign_key_changes(sender, instance, **kwargs) |
|
|
|
@ -273,6 +273,8 @@ def handle_shared_with_changes(sender, instance, action, pk_set, **kwargs): |
|
|
|
# print(f'm2m changed = {pk_set}') |
|
|
|
# print(f'm2m changed = {pk_set}') |
|
|
|
users = User.objects.filter(id__in=pk_set) |
|
|
|
users = User.objects.filter(id__in=pk_set) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
save_model_log(users, ModelOperation.PUT, DataAccess.__name__, instance.id, None) |
|
|
|
|
|
|
|
|
|
|
|
with transaction.atomic(): |
|
|
|
with transaction.atomic(): |
|
|
|
if action == "post_add": |
|
|
|
if action == "post_add": |
|
|
|
instance.create_access_log(users, 'SHARED_ACCESS') |
|
|
|
instance.create_access_log(users, 'SHARED_ACCESS') |
|
|
|
@ -344,8 +346,8 @@ def related_users(instance): |
|
|
|
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): |
|
|
|
|
|
|
|
users.update(instance.shared_with.all()) |
|
|
|
# print(f'find users for {instance.__class__.__name__}, count = {len(users)}') |
|
|
|
|
|
|
|
|
|
|
|
return {user for user in users if user is not None} |
|
|
|
return {user for user in users if user is not None} |
|
|
|
|
|
|
|
|
|
|
|
|