From b3cbabf0a2cada242bb1ecea0f57653562cc46a2 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 9 May 2013 13:33:53 +0530 Subject: [PATCH] [link selector] fixes --- public/js/wn/form/control.js | 2 ++ public/js/wn/form/link_selector.js | 3 ++- webnotes/widgets/reportview.py | 7 ++++--- webnotes/widgets/search.py | 18 ++++++++++-------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/public/js/wn/form/control.js b/public/js/wn/form/control.js index afcedcb4d9..35038241f1 100644 --- a/public/js/wn/form/control.js +++ b/public/js/wn/form/control.js @@ -604,6 +604,7 @@ wn.ui.form.ControlLink = wn.ui.form.ControlData.extend({ me.set_custom_query(args); wn.call({ + type: "GET", method:'webnotes.widgets.search.search_link', args: args, callback: function(r) { @@ -660,6 +661,7 @@ wn.ui.form.ControlLink = wn.ui.form.ControlData.extend({ wn.call({ method:'webnotes.widgets.form.utils.validate_link', + type: "GET", args: { 'value': value, 'options':me.df.options, diff --git a/public/js/wn/form/link_selector.js b/public/js/wn/form/link_selector.js index 47747ce4b1..4830d8a3c7 100644 --- a/public/js/wn/form/link_selector.js +++ b/public/js/wn/form/link_selector.js @@ -60,7 +60,7 @@ wn.ui.form.LinkSelector = Class.extend({ search: function(btn) { var args = { txt: this.dialog.fields_dict.txt.get_value(), - doctype: this.target.doctype, + doctype: this.doctype, searchfield: this.dialog.fields_dict.search_field.get_value() }, me = this; @@ -69,6 +69,7 @@ wn.ui.form.LinkSelector = Class.extend({ wn.call({ method: "webnotes.widgets.search.search_widget", + type: "GET", args: args, callback: function(r) { var parent = me.dialog.fields_dict.results.$wrapper; diff --git a/webnotes/widgets/reportview.py b/webnotes/widgets/reportview.py index 52aa899064..ed7f9004a4 100644 --- a/webnotes/widgets/reportview.py +++ b/webnotes/widgets/reportview.py @@ -49,11 +49,12 @@ def get_form_params(): return data 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: return run_custom_query(query) - + if not filters: filters = [] 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 %(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): global tables diff --git a/webnotes/widgets/search.py b/webnotes/widgets/search.py index 74ba52f789..3886c97835 100644 --- a/webnotes/widgets/search.py +++ b/webnotes/widgets/search.py @@ -41,6 +41,8 @@ def search_widget(doctype, txt, query=None, searchfield="name", start=0, if isinstance(filters, basestring): import json filters = json.loads(filters) + if isinstance(filters, dict): + filters = map(lambda f: [doctype, f[0], "=", f[1]], filters.items()) meta = webnotes.get_doctype(doctype) @@ -60,24 +62,24 @@ def search_widget(doctype, txt, query=None, searchfield="name", start=0, else: # build from doctype 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, 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): # 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 if not key in sflist: 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): results = []