@@ -604,6 +604,7 @@ wn.ui.form.ControlLink = wn.ui.form.ControlData.extend({ | |||||
me.set_custom_query(args); | me.set_custom_query(args); | ||||
wn.call({ | wn.call({ | ||||
type: "GET", | |||||
method:'webnotes.widgets.search.search_link', | method:'webnotes.widgets.search.search_link', | ||||
args: args, | args: args, | ||||
callback: function(r) { | callback: function(r) { | ||||
@@ -660,6 +661,7 @@ wn.ui.form.ControlLink = wn.ui.form.ControlData.extend({ | |||||
wn.call({ | wn.call({ | ||||
method:'webnotes.widgets.form.utils.validate_link', | method:'webnotes.widgets.form.utils.validate_link', | ||||
type: "GET", | |||||
args: { | args: { | ||||
'value': value, | 'value': value, | ||||
'options':me.df.options, | 'options':me.df.options, | ||||
@@ -60,7 +60,7 @@ wn.ui.form.LinkSelector = Class.extend({ | |||||
search: function(btn) { | search: function(btn) { | ||||
var args = { | var args = { | ||||
txt: this.dialog.fields_dict.txt.get_value(), | txt: this.dialog.fields_dict.txt.get_value(), | ||||
doctype: this.target.doctype, | |||||
doctype: this.doctype, | |||||
searchfield: this.dialog.fields_dict.search_field.get_value() | searchfield: this.dialog.fields_dict.search_field.get_value() | ||||
}, | }, | ||||
me = this; | me = this; | ||||
@@ -69,6 +69,7 @@ wn.ui.form.LinkSelector = Class.extend({ | |||||
wn.call({ | wn.call({ | ||||
method: "webnotes.widgets.search.search_widget", | method: "webnotes.widgets.search.search_widget", | ||||
type: "GET", | |||||
args: args, | args: args, | ||||
callback: function(r) { | callback: function(r) { | ||||
var parent = me.dialog.fields_dict.results.$wrapper; | var parent = me.dialog.fields_dict.results.$wrapper; | ||||
@@ -49,11 +49,12 @@ def get_form_params(): | |||||
return data | return data | ||||
def execute(doctype, query=None, filters=None, fields=None, docstatus=None, | def execute(doctype, query=None, filters=None, fields=None, docstatus=None, | ||||
group_by=None, order_by=None, limit_start=0, limit_page_length=None): | |||||
group_by=None, order_by=None, limit_start=0, limit_page_length=None, | |||||
as_list=False, debug=False): | |||||
if query: | if query: | ||||
return run_custom_query(query) | return run_custom_query(query) | ||||
if not filters: filters = [] | if not filters: filters = [] | ||||
if not docstatus: docstatus = [] | if not docstatus: docstatus = [] | ||||
@@ -63,7 +64,7 @@ def execute(doctype, query=None, filters=None, fields=None, docstatus=None, | |||||
query = """select %(fields)s from %(tables)s where %(conditions)s | query = """select %(fields)s from %(tables)s where %(conditions)s | ||||
%(group_by)s order by %(order_by)s %(limit)s""" % args | %(group_by)s order by %(order_by)s %(limit)s""" % args | ||||
return webnotes.conn.sql(query, as_dict=1) | |||||
return webnotes.conn.sql(query, as_dict=not as_list, debug=debug) | |||||
def prepare_args(doctype, filters, fields, docstatus, group_by, order_by): | def prepare_args(doctype, filters, fields, docstatus, group_by, order_by): | ||||
global tables | global tables | ||||
@@ -41,6 +41,8 @@ def search_widget(doctype, txt, query=None, searchfield="name", start=0, | |||||
if isinstance(filters, basestring): | if isinstance(filters, basestring): | ||||
import json | import json | ||||
filters = json.loads(filters) | filters = json.loads(filters) | ||||
if isinstance(filters, dict): | |||||
filters = map(lambda f: [doctype, f[0], "=", f[1]], filters.items()) | |||||
meta = webnotes.get_doctype(doctype) | meta = webnotes.get_doctype(doctype) | ||||
@@ -60,24 +62,24 @@ def search_widget(doctype, txt, query=None, searchfield="name", start=0, | |||||
else: | else: | ||||
# build from doctype | # build from doctype | ||||
if txt: | if txt: | ||||
filters.append([searchfield, "like", txt]) | |||||
if meta.get({"parent":dt, "fieldname":"enabled", "fieldtype":"Check"}): | |||||
filters.append(["ifnull(enabled, 0)", "=", 1]) | |||||
if meta.get({"parent":dt, "fieldname":"disabled", "fieldtype":"Check"}): | |||||
filters.append(["ifnull(disabled, 0)", "!=", 1]) | |||||
filters.append([doctype, searchfield, "like", txt + "%"]) | |||||
if meta.get({"parent":doctype, "fieldname":"enabled", "fieldtype":"Check"}): | |||||
filters.append([doctype, "enabled", "=", 1]) | |||||
if meta.get({"parent":doctype, "fieldname":"disabled", "fieldtype":"Check"}): | |||||
filters.append([doctype, "disabled", "!=", 1]) | |||||
webnotes.response["values"] = webnotes.widgets.reportview.execute(doctype, | webnotes.response["values"] = webnotes.widgets.reportview.execute(doctype, | ||||
filters=filters, fields = get_std_fields_list(meta, searchfield), | filters=filters, fields = get_std_fields_list(meta, searchfield), | ||||
limit_start = start, limit_page_length=page_len) | |||||
limit_start = start, limit_page_length=page_len, as_list=True, debug=True) | |||||
def get_std_fields_list(meta, key): | def get_std_fields_list(meta, key): | ||||
# get additional search fields | # get additional search fields | ||||
sflist = meta.doc.search_fields and meta.doc.search_fields.split(",") or [] | |||||
sflist = meta[0].search_fields and meta[0].search_fields.split(",") or [] | |||||
sflist = ['name'] + sflist | sflist = ['name'] + sflist | ||||
if not key in sflist: | if not key in sflist: | ||||
sflist = sflist + [key] | sflist = sflist + [key] | ||||
return ['`tab%s`.`%s`' % (meta.doc.name, f.strip()) for f in sflist] | |||||
return ['`tab%s`.`%s`' % (meta[0].name, f.strip()) for f in sflist] | |||||
def build_for_autosuggest(res): | def build_for_autosuggest(res): | ||||
results = [] | results = [] | ||||