diff --git a/frappe/app.py b/frappe/app.py index 21c8fcde5b..9e9d6cca03 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -170,10 +170,6 @@ def after_request(rollback): update_comments_in_parent_after_request() - # publish realtime - for args in frappe.local.realtime_log: - frappe.async.emit_via_redis(*args) - return rollback application = local_manager.make_middleware(application) diff --git a/frappe/database.py b/frappe/database.py index 47aee206f2..296a121c5a 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -12,6 +12,7 @@ import warnings import datetime import frappe import frappe.defaults +import frappe.async import re import frappe.model.meta from frappe.utils import now, get_datetime, cstr @@ -672,6 +673,14 @@ class Database: """Commit current transaction. Calls SQL `COMMIT`.""" self.sql("commit") frappe.local.rollback_observers = [] + self.flush_realtime_log() + + def flush_realtime_log(self): + for args in frappe.local.realtime_log: + frappe.async.emit_via_redis(*args) + + frappe.local.realtime_log = [] + def rollback(self): """`ROLLBACK` current transaction.""" diff --git a/frappe/public/js/legacy/form.js b/frappe/public/js/legacy/form.js index 7955694253..ad938ae099 100644 --- a/frappe/public/js/legacy/form.js +++ b/frappe/public/js/legacy/form.js @@ -423,9 +423,13 @@ _f.Frm.prototype.refresh = function(docname) { _f.Frm.prototype.show_if_needs_refresh = function() { if(this.doc.__needs_refresh) { - this.dashboard.set_headline_alert(__("This form has been modified after you have loaded it") - + '' - + __("Refresh") + '', "alert-warning"); + if(this.doc.__unsaved) { + this.dashboard.set_headline_alert(__("This form has been modified after you have loaded it") + + '' + + __("Refresh") + '', "alert-warning"); + } else { + this.reload_doc(); + } } }