From d80c25f74a1a3a25f0efee640141caa87610ff63 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 16 Mar 2020 22:05:15 +0530 Subject: [PATCH 1/3] fix: use cache instead of building count --- frappe/desk/desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/desk/desktop.py b/frappe/desk/desktop.py index 6a0d5acc37..16f2e5bbb3 100644 --- a/frappe/desk/desktop.py +++ b/frappe/desk/desktop.py @@ -24,7 +24,7 @@ class Workspace: self.allowed_pages = get_allowed_pages() self.allowed_reports = get_allowed_reports() - self.table_counts = build_table_count_cache() + self.table_counts = get_table_with_counts() self.restricted_doctypes = build_domain_restriced_doctype_cache() self.restricted_pages = build_domain_restriced_page_cache() From 5b774c38fce4dbc2593e30d6889d49fbbb34acb6 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 16 Mar 2020 22:33:35 +0530 Subject: [PATCH 2/3] feat: don't cache for some tables and child docs --- frappe/cache_manager.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/frappe/cache_manager.py b/frappe/cache_manager.py index 2578d652b4..86e5d47606 100644 --- a/frappe/cache_manager.py +++ b/frappe/cache_manager.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import frappe, json import frappe.defaults +from frappe.model.document import Document from frappe.desk.notifications import (delete_notification_count_for, clear_notifications) @@ -22,6 +23,10 @@ user_cache_keys = ("bootinfo", "user_recent", "roles", "user_doc", "lang", doctype_cache_keys = ("meta", "form_meta", "table_columns", "last_modified", "linked_doctypes", 'notifications', 'workflow' ,'energy_point_rule_map') +count_cache_blacklist = ["Version", "Tag", "ToDo", "List Filter", "Note Seen By", "Notification Log", + "Document Follow", "Communication", "Email Queue", "Deleted Document", "File", "Email Queue Recipient" + "Comment", "Has Role", "Attendance", "Route History"] + def clear_user_cache(user=None): cache = frappe.cache() @@ -116,13 +121,23 @@ def clear_doctype_map(doctype, name): cache_key = frappe.scrub(doctype) + '_map' frappe.cache().hdel(cache_key, name) -def build_table_count_cache(*args, **kwargs): +def build_table_count_cache(doc=None, method=None, *args, **kwargs): if (frappe.flags.in_patch or frappe.flags.in_install or frappe.flags.in_migrate or frappe.flags.in_import or frappe.flags.in_setup_wizard): return + + if doc and isinstance(doc, Document): + doctype = doc.doctype + + if doc.meta.istable: + return + + if doctype in count_cache_blacklist: + return + _cache = frappe.cache() data = frappe.db.multisql({ "mariadb": """ From f6244d2740278eb8cb5a54fd85ed8cd489b94893 Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Mon, 23 Mar 2020 10:30:10 +0530 Subject: [PATCH 3/3] style: Remove unnecessary space --- frappe/cache_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/cache_manager.py b/frappe/cache_manager.py index 86e5d47606..9959ba97bb 100644 --- a/frappe/cache_manager.py +++ b/frappe/cache_manager.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import frappe, json import frappe.defaults -from frappe.model.document import Document +from frappe.model.document import Document from frappe.desk.notifications import (delete_notification_count_for, clear_notifications)