Merge pull request #36615 from GursheenK/virtual-df-value-in-document-getter
fix: title for link field in virtual docfield titles
This commit is contained in:
commit
93bec95024
2 changed files with 19 additions and 8 deletions
|
|
@ -168,7 +168,9 @@ def search_widget(
|
|||
}
|
||||
search_fields = ["name"]
|
||||
if meta.title_field:
|
||||
search_fields.append(meta.title_field)
|
||||
is_virtual_field = getattr(meta.get_field(meta.title_field), "is_virtual", False)
|
||||
if not is_virtual_field:
|
||||
search_fields.append(meta.title_field)
|
||||
|
||||
if meta.search_fields:
|
||||
search_fields.extend(meta.get_search_fields())
|
||||
|
|
@ -348,7 +350,12 @@ def build_for_autosuggest(res: list[tuple], doctype: str) -> list[LinkSearchResu
|
|||
for item in res:
|
||||
item = list(item)
|
||||
if len(item) == 1:
|
||||
item = [item[0], item[0]]
|
||||
title_field = meta.title_field
|
||||
docfield = meta.get_field(title_field)
|
||||
if docfield and docfield.is_virtual:
|
||||
doc = frappe.get_doc(meta.name, item[0])
|
||||
title_value = doc.get_virtual_field_value(docfield)
|
||||
item = [item[0], title_value or item[0]]
|
||||
label = _(item[1]) if meta.translated_doctype else item[1]
|
||||
item[1] = item[0]
|
||||
|
||||
|
|
|
|||
|
|
@ -541,6 +541,15 @@ class BaseDocument:
|
|||
eval_locals={"doc": self},
|
||||
)
|
||||
|
||||
def get_virtual_field_value(self, df):
|
||||
fieldname = df.fieldname
|
||||
|
||||
if (prop := getattr(type(self), fieldname, None)) and is_a_property(prop):
|
||||
return getattr(self, fieldname)
|
||||
|
||||
elif options := getattr(df, "options", None):
|
||||
return self._evaluate_virtual_field_options(options)
|
||||
|
||||
def get_valid_dict(
|
||||
self, sanitize=True, convert_dates_to_str=False, ignore_nulls=False, ignore_virtual=False
|
||||
) -> _dict:
|
||||
|
|
@ -563,12 +572,7 @@ class BaseDocument:
|
|||
if is_virtual_field:
|
||||
if ignore_virtual or fieldname not in self.permitted_fieldnames:
|
||||
continue
|
||||
|
||||
if (prop := getattr(type(self), fieldname, None)) and is_a_property(prop):
|
||||
value = getattr(self, fieldname)
|
||||
|
||||
elif options := getattr(df, "options", None):
|
||||
value = self._evaluate_virtual_field_options(options)
|
||||
value = self.get_virtual_field_value(df)
|
||||
|
||||
fieldtype = df.fieldtype
|
||||
if isinstance(value, list) and fieldtype not in table_fields:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue