2016-11-02 16 views
2

私はあなたのいずれかについては移動する方法を私と一緒に共有することができ、この知識を持って徘徊、PRE-インストールまたはインストール後機能/フックのいくつかのフォーム を呼び出す必要がありカスタマイズOdooモジュールを記述しようとしていますそれ ?カスタムモジュールで呼び出すことができるOdoo用のインストール前/インストール後のフックはありますか?

プロセスのサンプル: インストール中に、カスタムモジュールをインストールするためにユーザがクリックすると、プリインストールフックが呼び出され、初期化やファイルのコピーなどが実行され、完了したらOdooのインストール手順を取り込み、インストール後のフック。 モジュールのインストール/アップグレードが実行されている間は1回だけ実行されます。

このプレ/ポストインストールコードのモジュールコードへのポインタを共有していただきありがとうございます。

おかげ Kalmen

答えて

1

あなたは自分のモジュールにhooks.pyファイルを追加する必要があります。

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') 

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

次に、ファイルにあなたは、あなたが例えば、ormexecuteクエリを使用することができますしたいレコードを更新する方法を記述します。その後、あなたの__openerp__.pyファイルに実行したいフックを追加

+0

これに単に追加すると、 'env'変数はpre/post_init_hook関数に渡されません。有効な環境を取得するには、 'env = api.Environment(cr、SUPERUSER_ID、{})'のようなことをする必要があります(少なくとも9.0の場合は10.0/11.0と似ているはずです) –

関連する問題