【odoo15】odoo中的4种 init hook

通过data/xxx.xml的方式自动产生一些预设资料,xml,是不是我们的简单逻辑比较,这个时候,就可以通过hook的方式比较。

__manifest__.py代码:

{
    ......

    'pre_init_hook': 'pre_init_hook',
    'post_init_hook': 'post_init_hook',
    'uninstall_hook': 'uninstall_hook',
    'post_load': 'post_load_hook',

    'application': True,
}

四种hook:

pre_init_hook在安装插件之前,会先执行他,执行完成后,才开始安装插件。(更新不会生效)

post_init_hook在插件完成之后,会执行他。(更新不会生效)

uninstall_hook在插件完成之后,会执行他。

post_load这个特殊比较,他在更新生效时当你使用 odoo-bin CLI 或时,优先pre_init_hook

post_load进比较阶,请参考odoo源码。

__init__.py代码:

from odoo import api, SUPERUSER_ID

import logging

_logger = logging.getLogger(__name__)

def pre_init_hook(cr):
    env = api.Environment(cr, SUPERUSER_ID, {})
    # data = env[......].search([......])

    _logger.warning('=== pre_init_hook ===')

def post_init_hook(cr, registry):
    env = api.Environment(cr, SUPERUSER_ID, {})
    # data = env[......].search([......])

    _logger.warning('=== post_init_hook ===')

def uninstall_hook(cr, registry):
    env = api.Environment(cr, SUPERUSER_ID, {})
    # data = env[......].search([......])

    _logger.warning('=== uninstall_hook ===')

def post_load_hook():
    _logger.warning('=== post_load_hook ===')

使用CLI的方式把这个模块装上: 

 post_load_hook执行         pre_init_hook执行     post_init_hook执行

​​​​​​​post_load_hook -> pre_init_hook -> post_init_hook

 

卸载时:uninstall_hook开始执行 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值