diff --git a/frappe/core/doctype/system_settings/system_settings.json b/frappe/core/doctype/system_settings/system_settings.json
index 2a06f58845..3e04643256 100644
--- a/frappe/core/doctype/system_settings/system_settings.json
+++ b/frappe/core/doctype/system_settings/system_settings.json
@@ -66,7 +66,9 @@
"attach_view_link",
"prepared_report_section",
"enable_prepared_report_auto_deletion",
- "prepared_report_expiry_period"
+ "prepared_report_expiry_period",
+ "system_updates_section",
+ "disable_system_update_notification"
],
"fields": [
{
@@ -463,12 +465,24 @@
"fieldname": "encrypt_backup",
"fieldtype": "Check",
"label": "Encrypt Backups"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "system_updates_section",
+ "fieldtype": "Section Break",
+ "label": "System Updates"
+ },
+ {
+ "default": "0",
+ "fieldname": "disable_system_update_notification",
+ "fieldtype": "Check",
+ "label": "Disable System Update Notification"
}
],
"icon": "fa fa-cog",
"issingle": 1,
"links": [],
- "modified": "2021-11-29 17:49:20.950033",
+ "modified": "2021-11-29 18:09:53.601629",
"modified_by": "Administrator",
"module": "Core",
"name": "System Settings",
diff --git a/frappe/desk/doctype/route_history/route_history.py b/frappe/desk/doctype/route_history/route_history.py
index fc87312950..a49d5d5418 100644
--- a/frappe/desk/doctype/route_history/route_history.py
+++ b/frappe/desk/doctype/route_history/route_history.py
@@ -42,16 +42,13 @@ def flush_old_route_records():
@frappe.whitelist()
def deferred_insert(routes):
- routes_record = []
-
- if isinstance(routes, str):
- routes = json.loads(routes)
-
- for route_doc in routes:
- routes_record.append({
+ routes = [
+ {
"user": frappe.session.user,
- "route": route_doc.get("route"),
- "creation": route_doc.get("creation")
- })
+ "route": route.get("route"),
+ "creation": route.get("creation"),
+ }
+ for route in frappe.parse_json(routes)
+ ]
- _deferred_insert("Route History", json.dumps(routes_record))
+ _deferred_insert("Route History", json.dumps(routes))
diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js
index 2855c6ae7c..4563875b91 100644
--- a/frappe/public/js/frappe/desk.js
+++ b/frappe/public/js/frappe/desk.js
@@ -531,6 +531,8 @@ frappe.Application = class Application {
}
show_update_available() {
+ if (frappe.boot.sysdefaults.disable_system_update_notification) return;
+
frappe.call({
"method": "frappe.utils.change_log.show_update_popup"
});
diff --git a/frappe/public/js/frappe/router_history.js b/frappe/public/js/frappe/router_history.js
index fb2d5790da..14b936f5e8 100644
--- a/frappe/public/js/frappe/router_history.js
+++ b/frappe/public/js/frappe/router_history.js
@@ -4,10 +4,10 @@ const routes_to_skip = ['Form', 'social', 'setup-wizard', 'recorder'];
const save_routes = frappe.utils.debounce(() => {
if (frappe.session.user === 'Guest') return;
const routes = frappe.route_history_queue;
- frappe.route_history_queue = [];
-
if (!routes.length) return;
+ frappe.route_history_queue = [];
+
frappe.xcall('frappe.desk.doctype.route_history.route_history.deferred_insert', {
'routes': routes
}).catch(() => {
diff --git a/frappe/utils/change_log.py b/frappe/utils/change_log.py
index 109778b87b..5888166d5d 100644
--- a/frappe/utils/change_log.py
+++ b/frappe/utils/change_log.py
@@ -155,11 +155,11 @@ def check_for_update():
for update_type in updates:
if github_version.__dict__[update_type] > instance_version.__dict__[update_type]:
updates[update_type].append(frappe._dict(
- current_version = str(instance_version),
- available_version = str(github_version),
- org_name = org_name,
- app_name = app,
- title = apps[app]['title'],
+ current_version=str(instance_version),
+ available_version=str(github_version),
+ org_name=org_name,
+ app_name=app,
+ title=apps[app]['title'],
))
break
if github_version.__dict__[update_type] < instance_version.__dict__[update_type]: break
@@ -242,7 +242,7 @@ def add_message_to_redis(update_json):
@frappe.whitelist()
def show_update_popup():
cache = frappe.cache()
- user = frappe.session.user
+ user = frappe.session.user
update_info = cache.get_value("update-info")
if not update_info:
@@ -258,10 +258,10 @@ def show_update_popup():
for app in updates[update_type]:
app = frappe._dict(app)
release_links += "{title}: v{available_version}
".format(
- available_version = app.available_version,
- org_name = app.org_name,
- app_name = app.app_name,
- title = app.title
+ available_version=app.available_version,
+ org_name=app.org_name,
+ app_name=app.app_name,
+ title=app.title
)
if release_links:
message = _("New {} releases for the following apps are available").format(_(update_type))