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)
This commit is contained in:
Gavin D'souza 2022-11-16 23:04:46 +05:30
parent 16bd7a2d0b
commit c3c1848b2a
5 changed files with 9 additions and 11 deletions

View file

@ -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(

View file

@ -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"""

View file

@ -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):

View file

@ -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))

View file

@ -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)