ns = params_kw.copy() for k,v in ns.items(): if v == 'NaN' or v == 'null': ns[k] = None for k in list(ns.keys()): if k.endswith('_text'): ns.pop(k, None) id = params_kw.id if not id or len(id) > 32: id = uuid() ns['id'] = id if params_kw.get('password'): ns['password'] = password_encode(params_kw.get('password')) ns['created_at'] = curDateString() 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 try: db = DBPools() dbname = get_module_dbname('rbac') async with db.sqlorContext(dbname) as sor: r = await sor.C('users', ns.copy()) return {"widgettype":"Message","options":{"cwidth":16,"cheight":9,"title":"Add Success","timeout":3,"message":"ok"}} except Exception as e: debug(f'add_user error: {format_exc()}') return {"widgettype":"Error","options":{"title":"Add Error","cwidth":16,"cheight":9,"timeout":5,"message":str(e)}}