ns = params_kw.copy() for k,v in ns.items(): if v == 'NaN' or v == 'null': ns[k] = None db = DBPools() dbname = get_module_dbname('pricing') async with db.sqlorContext(dbname) as sor: ori = await sor.R('pricing_item', {'id': ns.id}) ori_sv = {} if ori.spec_value: ori_sv = json.loads(ori.spec_value) fs = await sor_get_spec_fields(sor, ns.id) if len(fs): new_sv = {k:ns[k] for k in fs} if new_sv: ori_sv.update(new_sv) ns.spec_value = json.dumps(ori_sv, indent=4) r = await sor.U('pricing_item', ns.copy()) debug('update success, {ns=}'); return { "widgettype":"Message", "options":{ "title":"Update Success", "cwidth":16, "cheight":9, "timeout":3, "message":"ok" } } return { "widgettype":"Error", "options":{ "title":"Update Error", "cwidth":16, "cheight":9, "timeout":3, "message":"failed" } }