perf: use get_value instead of get_cached_value

get_cached_value internally calls get_doc which is much slower than fetching a value from db
This commit is contained in:
Saqib Ansari 2022-01-07 16:43:58 +05:30
parent 74276ef69b
commit f760aa1de2

View file

@ -321,17 +321,17 @@ def get_additional_timeline_content(doctype, docname):
return contents
def set_link_titles(doc):
meta = frappe.get_meta(doc.doctype)
link_titles = {}
link_titles.update(get_title_values_for_link_and_dynamic_link_fields(meta, doc))
link_titles.update(get_title_values_for_table_and_multiselect_fields(meta, doc))
link_titles.update(get_title_values_for_link_and_dynamic_link_fields(doc))
link_titles.update(get_title_values_for_table_and_multiselect_fields(doc))
send_link_titles(link_titles)
def get_title_values_for_link_and_dynamic_link_fields(meta, doc, link_fields=None):
def get_title_values_for_link_and_dynamic_link_fields(doc, link_fields=None):
link_titles = {}
if not link_fields:
meta = frappe.get_meta(doc.doctype)
link_fields = meta.get_link_fields() + meta.get_dynamic_link_fields()
for field in link_fields:
@ -344,24 +344,24 @@ def get_title_values_for_link_and_dynamic_link_fields(meta, doc, link_fields=Non
if not meta or not (meta.title_field and meta.show_title_field_in_link):
continue
link_title = frappe.get_cached_value(doctype, doc.get(field.fieldname), meta.title_field)
link_title = frappe.db.get_value(doctype, doc.get(field.fieldname), meta.title_field)
link_titles.update({doctype + "::" + doc.get(field.fieldname): link_title})
return link_titles
def get_title_values_for_table_and_multiselect_fields(meta, doc, table_fields=None):
def get_title_values_for_table_and_multiselect_fields(doc, table_fields=None):
link_titles = {}
if not table_fields:
meta = frappe.get_meta(doc.doctype)
table_fields = meta.get_table_fields()
for field in table_fields:
if not doc.get(field.fieldname):
continue
_meta = frappe.get_meta(field.options)
for value in doc.get(field.fieldname):
link_titles.update(get_title_values_for_link_and_dynamic_link_fields(_meta, value))
link_titles.update(get_title_values_for_link_and_dynamic_link_fields(value))
return link_titles