【问题标题】:Is there any Pre-installation/ Post-installation hook for Odoo that we can call in our custom module?我们可以在自定义模块中调用 Odoo 的预安装/安装后挂钩吗?
【发布时间】:2016-11-02 02:22:58
【问题描述】:

我正在尝试编写一个需要调用某种形式的自定义 Odoo 模块 PRE-installationPOST-installation 功能/钩子,各位有没有这方面的知识可以和我分享一下怎么做?

过程示例: 例如在安装过程中,当用户点击安装自定义模块时,它会调用一个预安装钩子并进行一些初始化,复制文件或其他,然后一旦完成,我们可以捕获 Odoo 的返回安装过程并运行安装后挂钩。 它只会在模块安装/升级期间执行一次。

感谢分享这个安装前/安装后代码应该进入我的模块代码的位置吗?

谢谢 卡门

【问题讨论】:

    标签: python openerp odoo-8 odoo-9


    【解决方案1】:

    您只需将 hooks.py 文件添加到您的模块。然后在您的__openerp__.py 文件中添加您要执行的钩子:

    "post_init_hook": "post_init_hook",
    "pre_init_hook": "pre_init_hook",
    

    然后在文件中写入更新你想要的记录的方法,可以使用ormexecute查询,例如:

    def pre_init_hook(cr, registry):
        cr.execute('ALTER TABLE res_partner'
                   'ADD COLUMN new_column character varying;')
        cr.execute('UPDATE new_column'
                   'SET new_column = phone;')
        # in the installation the column phone is dropped
    
    def post_init_hook(cr, registry):
        partners = env['res.partner'].search([])
        for partner in partners:
            if partner.new_column:
               #do something
        cr.execute('select new_column from res_partner')
    

    【讨论】:

    • 只是添加到此 - env 变量不会传递给 pre/post_init_hook 函数。您需要执行env = api.Environment(cr, SUPERUSER_ID, {}) 之类的操作才能获得有效的环境(至少对于 9.0。对于 10.0/11.0 应该类似)
    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2016-02-01
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多