見出し画像

OdooでAddOnモジュールを作る(1)

Odooは主にPythonを使って作られています。
Dockerを使ってOdooの開発環境を整えたので、AddOnモジュールを作ってみます。
開発環境の整え方はこちらの記事を参照してください。

モジュールの枠組みを作る

Odooのモジュールは、決まったディレクトリやファイル構成を必要とします。参照:Module Structure Odoo document
Pythonファイルと、ビューなどを定義するXMLファイルを適切に配置することで、Odooへインストール可能なモジュールとなります。

モジュールのスケルトン生成

手動でモジュールの構造を設定しても良いのですが、手間もかかるのでモジュールのスケルトンを生成する方法があります。これで少し楽をします。
Odoo純正のodooコマンドには、モジュールのスケルトン生成機能が存在しています。
コマンドラインからodooのCLIコマンドを使って

$ odoo-bin scaffold my_module

と入力することでモジュールのスケルトンが生成されます。
環境によってはコマンド名がodoo-binではなく、odooの場合があります。Odoo公式のDockerイメージを使っている場合はodooのようです。

odooのCLIコマンドで生成されたモジュールのスケルトン

bobtemplates.odooを使ってスケルトン生成

odooのCLIコマンドでも事は足りるのですが、モデルの継承やビューなどのXMLテンプレート生成をしてくれるユーティリティが有ると楽ができます。
そのために、ディレクトリ構造やテンプレートを設定できるmr.bobのOdoo用テンプレートbobtemplates.odooをインストールして使います。

$ pip install bobtemplates.odoo

これで mr.bobと bobtemplates.odooがインストールされます。
早速スケルトンを生成してみましょう。
新しいAddOnモジュールを作る場合は、

$ mrbob bobtemplates.odoo:addon

とすると、質問形式でモジュールを生成することが可能です。

# mrbob bobtemplates.odoo:addon
Welcome to mr.bob interactive mode. Before we generate directory structure, some questions need to be answered.

Answer with a question mark to display help.
Values in square brackets at the end of the questions show the default value if there is no answer.

--> Addon name (with underscores): currency_multi_activate
--> Is it an OCA addon [n]: n
--> Summary: Activate currency by selected in tree view
--> Version [14.0.1.0.0]: 
--> Copyright holder name: TKuratty
--> Copyright year: 2022
--> Website: https://github.com/tkuratty/odoo-addons/tree/main

Generated file structure at /mnt/extra-addons/odoo-addons

モジュール名やOdooのバージョン、著作権者の情報などを設定するだけでモジュールのスケルトンが生成されます。

AddOnモジュールのスケルトンでは、モジュールとして最小限の設定が生成されています。
Odooのモジュールでは__init__.pyと__manifest__.pyにモジュールの情報や、読み込むビューの情報などを記述する事になっています。
__manifest__.pyの中身を確認してみましょう。mr.bobのテンプレート作成で入力した項目が設定されています。

# Copyright 2022 TKuratty
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
    'name': 'Currency Multi Activate',
    'description': """
        Activate currency by selected in tree view""",
    'version': '14.0.1.0.0',
    'license': 'AGPL-3',
    'author': 'TKuratty',
    'website': 'https://github.com/tkuratty/odoo-addons/tree/main',
    'depends': [
    ],
    'data': [
    ],
    'demo': [
    ],
}

作成したモジュールをOdooにインストールする

この状態で、作成したモジュールのディレクトリに対して、odooのAddOnディレクトリにしていた場所からシンボリックリンクを張り、OdooからAddOnモジュールが見えるか確認してみます。

$ ln -s odoo-addons/currency_multi_activate

OdooのApp管理画面で”アプリリストを更新”を実行後、検索項目に"Currency"を設定します。

モジュール右上の3点アイコンから”モジュール情報”を開くと、モジュールの詳細を表示することができます。この情報はモジュールのトップディレクトリ内に保存した__manifest__.pyの情報が表示されています。

"インストール"ボタンを押してインストールしてみます。
インストールでエラーが発生しなければ”ディスカス”の画面が表示されます。

App管理画面の検索機能で、もう一度Currencyを検索してみます。

モジュールが”インストール済み”として表示されるようになりました。
今回はAddOnモジュールの枠組みを用意して、Odooにインストールしました。次回はモジュールに機能を追加してみようと思います。

この記事が気に入ったらサポートをしてみませんか?