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();
+ }
}
}