我们可以在自定义模块中调用Odoo的预安装/安装后挂钩吗?

时间:2016-11-02 02:22:59

标签: python openerp odoo-8 odoo-9

我正在尝试编写一个需要调用某个表单的自定义Odoo模块 PRE-installation POST-installation 功能/钩子,你们中的任何一个都有这方面的知识可以和我分享如何去做?

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

请欣赏分享这个前/后安装代码应该放入我的模块代码的指针吗?

由于 Kalmen

1 个答案:

答案 0 :(得分: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')