dspy文件修复(27个entcms + 10个dingdingflow): - 删除所有import语句(dspy环境已预加载) - 替换 sor = DBPools().sqlorContext() 为 async with db.sqlorContext() as sor: - 替换 print(json.dumps()) 为 return - 替换 uuid() 为 getID() - 替换 datetime.datetime.now() 为 datetime.now() - 修复 get_user() 缺少 await - 删除shebang/docstrings等无关内容 - 修正缩进 Python模块修复: - entcms/init.py: DBNAME从'entcms'改为'ocai_cms' - app/global_func.py: get_module_dbname返回'ocai_cms'而非'sage' - 所有函数使用 async with db.sqlorContext() as sor: 正确模式
33 lines
1.4 KiB
Plaintext
33 lines
1.4 KiB
Plaintext
result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}}
|
|
|
|
try:
|
|
record_id = params_kw.get('id', '')
|
|
if not record_id:
|
|
result['options'] = {'title': 'Error', 'message': 'ID is required', 'type': 'error'}
|
|
else:
|
|
dbname = get_module_dbname('dingdingflow')
|
|
async with DBPools().sqlorContext(dbname) as sor:
|
|
update_fields = []
|
|
update_ns = {'id': record_id}
|
|
|
|
for field in ['biz_type', 'biz_id', 'title', 'applicant_id', 'approver_id', 'dingtalk_instance_id', 'status', 'comment']:
|
|
val = params_kw.get(field)
|
|
if val is not None:
|
|
update_fields.append(f"{field}=${field}$")
|
|
update_ns[field] = val
|
|
|
|
completed_at = params_kw.get('completed_at')
|
|
if completed_at:
|
|
update_fields.append("completed_at=${completed_at}$")
|
|
update_ns['completed_at'] = completed_at
|
|
|
|
if update_fields:
|
|
set_clause = ", ".join(update_fields)
|
|
await sor.sqlExe(f"UPDATE dd_approvals SET {set_clause} WHERE id=${id}$", update_ns)
|
|
|
|
result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '审批记录更新成功', 'type': 'success'}}
|
|
except Exception as e:
|
|
result['options'] = {'title': 'Error', 'message': f'更新失败: {str(e)}', 'type': 'error'}
|
|
|
|
return result
|