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.
This commit is contained in:
Ankush Menat 2024-05-07 12:50:22 +05:30 committed by GitHub
parent e240c6bdf8
commit c17eb87c70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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: