fix: Fetching catched meta and removed description fetch from Search Fields

Description is conditionally fetched and also used in WHERE clause, that is maintained.
Improved naming
This commit is contained in:
marination
2019-10-30 18:33:44 +05:30
parent 10b226af10
commit 7aa993b14b

View File

@@ -153,14 +153,17 @@ def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=Fals
conditions = [] conditions = []
#Get searchfields from meta and use in Item Link field query #Get searchfields from meta and use in Item Link field query
meta = frappe.get_meta("Item") meta = frappe.get_meta("Item", cached=True)
searchfields = meta.get_search_fields() searchfields = meta.get_search_fields()
fields = [f for f in searchfields if not f in ["name", "item_group", "description"]] if "description" in searchfields:
fields = ", ".join(fields) searchfields.remove("description")
searchfields = searchfields + [f for f in [searchfield or "name", "item_code", "item_group", "item_name"] columns = [field for field in searchfields if not field in ["name", "item_group", "description"]]
if not f in searchfields] columns = ", ".join(columns)
searchfields = searchfields + [field for field in[searchfield or "name", "item_code", "item_group", "item_name"]
if not field in searchfields]
searchfields = " or ".join([field + " like %(txt)s" for field in searchfields]) searchfields = " or ".join([field + " like %(txt)s" for field in searchfields])
description_cond = '' description_cond = ''
@@ -174,7 +177,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=Fals
tabItem.item_group, tabItem.item_group,
if(length(tabItem.description) > 40, \ if(length(tabItem.description) > 40, \
concat(substr(tabItem.description, 1, 40), "..."), description) as description, concat(substr(tabItem.description, 1, 40), "..."), description) as description,
{fields} {columns}
from tabItem from tabItem
where tabItem.docstatus < 2 where tabItem.docstatus < 2
and tabItem.has_variants=0 and tabItem.has_variants=0
@@ -190,7 +193,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=Fals
name, item_name name, item_name
limit %(start)s, %(page_len)s """.format( limit %(start)s, %(page_len)s """.format(
key=searchfield, key=searchfield,
fields=fields, columns=columns,
scond=searchfields, scond=searchfields,
fcond=get_filters_cond(doctype, filters, conditions).replace('%', '%%'), fcond=get_filters_cond(doctype, filters, conditions).replace('%', '%%'),
mcond=get_match_cond(doctype).replace('%', '%%'), mcond=get_match_cond(doctype).replace('%', '%%'),