From c17eb87c70aee9a39588691d994c30ab4dfd7423 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Tue, 7 May 2024 12:50:22 +0530 Subject: [PATCH] perf: Reuse cached user for `get_user_lang` (#26350) Saves ~1% of overhead. User doc is almost always cached to create session so we can reuse it in same request without additional redis call. --- frappe/translate.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/frappe/translate.py b/frappe/translate.py index bf6af58762..ebabd240eb 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -97,20 +97,14 @@ def get_parent_language(lang: str) -> str: def get_user_lang(user: str | None = None) -> str: """Set frappe.local.lang from user preferences on session beginning or resumption""" user = user or frappe.session.user - lang = frappe.cache.hget("lang", user) - if not lang: - # User.language => Session Defaults => frappe.local.lang => 'en' - lang = ( - frappe.db.get_value("User", user, "language") - or frappe.db.get_default("lang") - or frappe.local.lang - or "en" - ) - - frappe.cache.hset("lang", user, lang) - - return lang + # User.language => Session Defaults => frappe.local.lang => 'en' + return ( + frappe.get_cached_value("User", user, "language") + or frappe.db.get_default("lang") + or frappe.local.lang + or "en" + ) def get_lang_code(lang: str) -> str | None: