From c3c1848b2abc0cdf233b59b4e410bd70d287ef3d Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 16 Nov 2022 23:04:46 +0530 Subject: [PATCH] fix: Restrict socket data to respective users after commit Fix conditions to bother only those who asked for the data: - Clear permissions cache only for updated users' data - Defer appropriate events until commit to avoid ghost events - Remove event unused by desk (and other apps) --- frappe/core/doctype/data_import/importer.py | 2 ++ frappe/core/doctype/user_permission/user_permission.py | 6 +++--- frappe/desk/doctype/notification_log/notification_log.py | 2 +- frappe/email/doctype/email_account/email_account.py | 6 ------ frappe/social/doctype/energy_point_log/energy_point_log.py | 4 +++- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/frappe/core/doctype/data_import/importer.py b/frappe/core/doctype/data_import/importer.py index ea90b24a6f..20a8e7db9b 100644 --- a/frappe/core/doctype/data_import/importer.py +++ b/frappe/core/doctype/data_import/importer.py @@ -139,6 +139,7 @@ class Importer: "skipping": True, "data_import": self.data_import.name, }, + user=frappe.session.user, ) continue @@ -166,6 +167,7 @@ class Importer: "row_indexes": row_indexes, "eta": eta, }, + user=frappe.session.user, ) create_import_log( diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py index 7020640da4..63c1f40512 100644 --- a/frappe/core/doctype/user_permission/user_permission.py +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -18,11 +18,11 @@ class UserPermission(Document): def on_update(self): frappe.cache().hdel("user_permissions", self.user) - frappe.publish_realtime("update_user_permissions") + frappe.publish_realtime("update_user_permissions", user=self.user, after_commit=True) - def on_trash(self): # pylint: disable=no-self-use + def on_trash(self): frappe.cache().hdel("user_permissions", self.user) - frappe.publish_realtime("update_user_permissions") + frappe.publish_realtime("update_user_permissions", user=self.user, after_commit=True) def validate_user_permission(self): """checks for duplicate user permission records""" diff --git a/frappe/desk/doctype/notification_log/notification_log.py b/frappe/desk/doctype/notification_log/notification_log.py index 4d82932555..6367e0f45f 100644 --- a/frappe/desk/doctype/notification_log/notification_log.py +++ b/frappe/desk/doctype/notification_log/notification_log.py @@ -176,7 +176,7 @@ def mark_as_read(docname): @frappe.whitelist() def trigger_indicator_hide(): - frappe.publish_realtime("indicator_hide", user=frappe.session.user) + frappe.publish_realtime("indicator_hide", user=frappe.session.user, after_commit=True) def set_notifications_as_unseen(user): diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index c69d653c96..1db45604e1 100755 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -486,12 +486,6 @@ class EmailAccount(Document): else: frappe.db.commit() - # notify if user is linked to account - if len(inbound_mails) > 0 and not frappe.local.flags.in_test: - frappe.publish_realtime( - "new_email", {"account": self.email_account_name, "number": len(inbound_mails)} - ) - if exceptions: raise Exception(frappe.as_json(exceptions)) diff --git a/frappe/social/doctype/energy_point_log/energy_point_log.py b/frappe/social/doctype/energy_point_log/energy_point_log.py index 487f8225f5..658d333c44 100644 --- a/frappe/social/doctype/energy_point_log/energy_point_log.py +++ b/frappe/social/doctype/energy_point_log/energy_point_log.py @@ -34,7 +34,9 @@ class EnergyPointLog(Document): def after_insert(self): alert_dict = get_alert_dict(self) if alert_dict: - frappe.publish_realtime("energy_point_alert", message=alert_dict, user=self.user) + frappe.publish_realtime( + "energy_point_alert", message=alert_dict, user=self.user, after_commit=True + ) frappe.cache().hdel("energy_points", self.user)