From ae31a0d6fbca7e947de5f212a26bbdb7e0fcfcbe Mon Sep 17 00:00:00 2001 From: hrwx Date: Sat, 27 Nov 2021 00:24:21 +0000 Subject: [PATCH 1/3] feat: add option to disable notification --- .../system_settings/system_settings.json | 17 +++++++++++++++-- frappe/utils/change_log.py | 19 ++++++++++--------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/frappe/core/doctype/system_settings/system_settings.json b/frappe/core/doctype/system_settings/system_settings.json index 82e88d2477..d4b7272dd3 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": [ { @@ -462,12 +464,23 @@ "fieldname": "encrypt_backup", "fieldtype": "Check", "label": "Encrypt Backups" + }, + { + "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-10-21 19:24:15.232430", + "modified": "2021-11-27 01:17:05.228959", "modified_by": "Administrator", "module": "Core", "name": "System Settings", diff --git a/frappe/utils/change_log.py b/frappe/utils/change_log.py index 109778b87b..b4f54e1b20 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), + current_version = str(instance_version), available_version = str(github_version), - org_name = org_name, - app_name = app, - title = apps[app]['title'], + 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,10 +242,11 @@ def add_message_to_redis(update_json): @frappe.whitelist() def show_update_popup(): cache = frappe.cache() - user = frappe.session.user + user = frappe.session.user + system_settings = frappe.get_single("System Settings") update_info = cache.get_value("update-info") - if not update_info: + if not update_info or system_settings.disable_system_update_notification: return updates = json.loads(update_info) @@ -259,9 +260,9 @@ def show_update_popup(): 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 + 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)) From db4476fc5fb8e0f99b5a9126c1f63def831db522 Mon Sep 17 00:00:00 2001 From: hrwx Date: Mon, 29 Nov 2021 17:28:40 +0000 Subject: [PATCH 2/3] fix: reduce api call --- .../system_settings/system_settings.json | 3 ++- frappe/public/js/frappe/desk.js | 2 ++ frappe/utils/change_log.py | 21 +++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/frappe/core/doctype/system_settings/system_settings.json b/frappe/core/doctype/system_settings/system_settings.json index d4b7272dd3..dcec9b13c2 100644 --- a/frappe/core/doctype/system_settings/system_settings.json +++ b/frappe/core/doctype/system_settings/system_settings.json @@ -466,6 +466,7 @@ "label": "Encrypt Backups" }, { + "collapsible": 1, "fieldname": "system_updates_section", "fieldtype": "Section Break", "label": "System Updates" @@ -480,7 +481,7 @@ "icon": "fa fa-cog", "issingle": 1, "links": [], - "modified": "2021-11-27 01:17:05.228959", + "modified": "2021-11-29 18:09:53.601629", "modified_by": "Administrator", "module": "Core", "name": "System Settings", 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/utils/change_log.py b/frappe/utils/change_log.py index b4f54e1b20..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 @@ -243,10 +243,9 @@ def add_message_to_redis(update_json): def show_update_popup(): cache = frappe.cache() user = frappe.session.user - system_settings = frappe.get_single("System Settings") update_info = cache.get_value("update-info") - if not update_info or system_settings.disable_system_update_notification: + if not update_info: return updates = json.loads(update_info) @@ -259,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)) From 7047cb83011f6472cd5686651aa177b2cc8990c1 Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Tue, 30 Nov 2021 08:33:31 +0530 Subject: [PATCH 3/3] refactor: Deferred insert for route history (#15120) --- .../doctype/route_history/route_history.py | 19 ++++++++----------- frappe/public/js/frappe/router_history.js | 4 ++-- 2 files changed, 10 insertions(+), 13 deletions(-) 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/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(() => {