When prepend_all=1 is passed, insert {valueField:'', textField:'全部'}
as the first item in the result array. Used by InlineForm search fields.
30 lines
827 B
Plaintext
30 lines
827 B
Plaintext
debug(params_kw)
|
|
ns = params_kw.copy()
|
|
|
|
db = DBPools()
|
|
sql = f"""select {params_kw.tblvalue} as {params_kw.valueField},
|
|
{params_kw.tbltext} as {params_kw.textField}
|
|
from {params_kw.table} where 1=1 """
|
|
if params_kw.cond:
|
|
sql += f" and {params_kw.cond} "
|
|
|
|
sql += f"order by {params_kw.textField}"
|
|
|
|
ac = ArgsConvert('[[', ']]')
|
|
vars = ac.findAllVariables(sql)
|
|
if 'userid' in vars:
|
|
ns['userid'] = await get_user()
|
|
if 'userorgid' in vars:
|
|
ns['userorgid'] = await get_userorgid()
|
|
|
|
NameSpace = {v:'${' + v + '}$' for v in vars}
|
|
sql = ac.convert(sql, NameSpace)
|
|
debug(f'/appbase/get_code.dspy: {sql=}')
|
|
|
|
async with db.sqlorContext(params_kw.dbname) as sor:
|
|
rs = await sor.sqlExe(sql, ns)
|
|
if params_kw.get('prepend_all') == '1':
|
|
rs.insert(0, {params_kw.valueField: '', params_kw.textField: '全部'})
|
|
return rs
|
|
return []
|