feat: show link field title in sidebar filters if set (#26417)

* feat: In sidebar filter link field show Title of Field if set (#26413)

* fix: test_list_view_child_table_filter_with_created_by_filter

* fix tests

* fix: formatting

* fix: formatting

* refactor: cleanup logic slightly, reduce code repetition

Respect value of show_title_field_in_link

Signed-off-by: Akhil Narang <me@akhilnarang.dev>

---------

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
Co-authored-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
Maxim Sysoev 2024-05-15 15:48:05 +03:00 committed by GitHub
parent 3a4dd9a671
commit 557293adfe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 2 deletions

View file

@ -60,10 +60,12 @@ def get_group_by_count(doctype: str, current_filters: str, field: str) -> list[d
.run(as_dict=True)
)
if not frappe.get_meta(doctype).has_field(field) and not is_default_field(field):
meta = frappe.get_meta(doctype)
if not meta.has_field(field) and not is_default_field(field):
raise ValueError("Field does not belong to doctype")
return frappe.get_list(
data = frappe.get_list(
doctype,
filters=current_filters,
group_by=f"`tab{doctype}`.{field}",
@ -71,3 +73,13 @@ def get_group_by_count(doctype: str, current_filters: str, field: str) -> list[d
order_by="count desc",
limit=50,
)
# Add in title if it's a link field and `show_title_field_in_link` is set
if (field_meta := meta.get_field(field)) and field_meta.fieldtype == "Link":
link_meta = frappe.get_meta(field_meta.options)
if link_meta.show_title_field_in_link:
title_field = link_meta.get_title_field()
for item in data:
item.title = frappe.get_value(field_meta.options, item.name, title_field)
return data

View file

@ -221,6 +221,8 @@ frappe.views.ListGroupBy = class ListGroupBy {
label = __("Me");
} else if (fieldtype && fieldtype == "Check") {
label = field.name == "0" ? __("No") : __("Yes");
} else if (fieldtype && fieldtype == "Link" && field.title) {
label = __(field.title);
} else {
label = __(field.name);
}