[link selector] fixes

This commit is contained in:
Rushabh Mehta 2013-05-09 13:33:53 +05:30
parent c997c7e19e
commit b3cbabf0a2
4 changed files with 18 additions and 12 deletions

View file

@ -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,

View file

@ -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;

View file

@ -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

View file

@ -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 = []