ns = params_kw.copy() userid = await get_user() if not userid: return { "widgettype":"Error", "options":{ "title":"Authorization Error", "timeout":3, "cwidth":16, "cheight":9, "message":"Please login" } } ns['ownerid'] = userid ns['userid'] = userid userorgid = await get_userorgid() if not userorgid: return { "widgettype":"Error", "options":{ "title":"Authorization Error", "timeout":3, "cwidth":16, "cheight":9, "message":"Please login" } } ns['orgid'] = userorgid ns['userorgid'] = userorgid debug_params('get_upappkey', ns) if not ns.get('page'): ns['page'] = 1 if not ns.get('sort'): ns['sort'] = 'id' sql = '''select a.*, b.ownerid_text, c.upappid_text, d.orgid_text, e.is_first_text from (select * from upappkey where 1=1 [[filterstr]]) a left join (select id as ownerid, username as ownerid_text from users where 1 = 1) b on a.ownerid = b.ownerid left join (select id as upappid, name as upappid_text from upapp where 1 = 1) c on a.upappid = c.upappid left join (select id as orgid, orgname as orgid_text from organization where 1 = 1) d on a.orgid = d.orgid left join (select k as is_first, v as is_first_text from appcodes_kv where parentid='yesno') e on a.is_first = e.is_first''' filterjson = params_kw.get('data_filter') fields_str=r'''[ { "name": "id", "title": "id", "type": "str", "length": 32 }, { "name": "upappid", "title": "应用id", "type": "str", "length": 32 }, { "name": "ownerid", "title": "属主id", "type": "str", "length": 32, "default": "0" }, { "name": "apikey", "title": "api密钥", "type": "str", "length": 4000, "default": "0" }, { "name": "apiuser", "title": "api用户", "type": "str", "length": 100 }, { "name": "apipasswd", "title": "api密码", "type": "str", "length": 100 }, { "name": "orgid", "title": "属主机构id", "type": "str", "length": 32 }, { "name": "is_first", "title": "是否第一用户", "type": "str", "length": 1 } ]''' ori_fields = json.loads(fields_str) if not filterjson: fields = [ f['name'] for f in ori_fields ] filterjson = default_filterjson(fields, ns) filterdic = ns.copy() filterdic['filterstr'] = '' filterdic['userorgid'] = '${userorgid}$' filterdic['userid'] = '${userid}$' if filterjson: dbf = DBFilter(filterjson) conds = dbf.gen(ns) if conds: ns.update(dbf.consts) conds = f' and {conds}' filterdic['filterstr'] = conds ac = ArgsConvert('[[', ']]') vars = ac.findAllVariables(sql) NameSpace = {v:'${' + v + '}$' for v in vars if v != 'filterstr' } filterdic.update(NameSpace) sql = ac.convert(sql, filterdic) debug(f'sql({len(sql)}ch): {sql[:200]}') db = DBPools() dbname = get_module_dbname('uapi') async with db.sqlorContext(dbname) as sor: r = await sor.sqlPaging(sql, ns) return r return { "total":0, "rows":[] }