SuperAPI AI 工具集

frappe-impl-serverscripts

编程与开发

查看项目

更新于 10-15 22:17

技能介绍

用途:该技能提供在 Frappe 中通过 Setup > Server Script 构建服务端功能的分步工作流,无需自定义应用。版本标注为 v14/v15/v16,v15+ 默认禁用 Server Script,需运行 bench set-config server_script_enabled true 启用。

主要能力:按脚本类型划分工作流,包括文档事件(校验、自动计算、创建关联文档)、API 端点、Scheduler 定时任务、Permission Query 权限过滤。资料还给出事件名称与内部钩子映射(如 Before Save 对应 validate、After Save 对应 on_update 等)。

使用方式:在 Setup > Server Script(或 awesomebar 输入 New Server Script)中新建脚本,选择 Script Type,配置对应设置(DocType、事件、API 方法名、cron 表达式),编写并保存后即时生效,可通过触发配置事件测试,并用 Compare Versions 对比改动。

关键限制:RestrictedPython 沙箱屏蔽所有 import(如 import json、from frappe.utils、import requests 均抛 ImportError),需改用预载命名空间,例如 frappe.utils.nowdate()、frappe.parse_json、frappe.as_json、frappe.make_get_request。规则是若需要 json 之外的 import,应改用 Controller。其他规则包括:校验时应收集错误后用 frappe.throw 一次性抛出;Before Save 中不得调用 doc.save();创建关联文档应放在 After Insert/After Save 并使用 ignore_permissions=True;API 需校验参数与权限并限制查询上限;定时脚本需 frappe.db.commit()、加 limit、用 try/except 与 frappe.log_error;Permission Query 需用 frappe.db.escape() 并只影响 frappe.db.get_list,不影响 get_all。资料还列出应迁移到 Controller 的场景,如需要 import、脚本超过 100 行、需要回滚或 frappe.enqueue、扩展已有 DocType 等。

未提供信息:具体价格、许可与官方支持范围暂未提供。