SuperAPI AI 工具集

frappe-impl-hooks

办公与效率

查看项目

更新于 10-15 22:17

技能介绍

用途:在 Frappe 自定义应用中实现 hooks.py 配置,按目标场景给出分步工作流;API 语法另见 frappe-syntax-hooks。支持版本 v14/v15/v16,V16 特有功能有标注。

主要能力与选择路径:对其他应用的 DocType 用 doc_events 响应文档生命周期,自有 DocType 优先用控制器方法,全部 DocType 可用 "*" 通配;定时任务用 scheduler_events(daily、hourly、cron 等);修改已有 DocType 行为,V16+ 推荐 extend_doctype_class,V14/V15 只能用 override_doctype_class(后安装的应用生效);覆盖 API 用 override_whitelisted_methods;自定义权限用 permission_query_conditions(列表过滤)与 has_permission(文档级);页面加载传配置用 extend_bootinfo;导出导入配置用 fixtures;注入 JS/CSS 用 app_include_js、web_include_js、doctype_js 等;网站与门户用 website_context、portal_menu_items、website_route_rules;会话生命周期用 on_login、on_session_creation、on_logout。

使用方式:doc_events 与 scheduler_events 等配置写入 myapp/hooks.py,处理器放在对应模块,改完执行 bench --site sitename migrate;JS/CSS 改动后执行 bench build --app myapp;定时任务可用 bench --site sitename scheduler enable 与 scheduler status,单次调试可 bench --site sitename execute 模块函数。

限制与规则:doc_events 中不要调用 frappe.db.commit();on_update 中不要改 doc 字段,改用 frappe.db.set_value();处理器需接受 method=None;重命名事件签名为 def handler(doc, method, old, new, merge);定时任务函数不能带参数,超过 5 分钟用 _long 变体,超过约 25 分钟应拆分或用 frappe.enqueue();长任务需周期性提交;permission_query_conditions 只对 get_list 生效,对 get_all 无效;has_permission 只能拒绝,返回 True 不会额外授权;bootinfo 会暴露在浏览器,不要放密钥;fixtures 必须带过滤条件。

未提供信息:具体定价、平台支持范围、效果数据等资料未提及。