![見出し画像](https://assets.st-note.com/production/uploads/images/80329931/rectangle_large_type_2_fc18071e07132044e7f299599936d5c8.png?width=1200)
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のようです。
![](https://assets.st-note.com/img/1654599540849-5dA1KWC9hc.png)
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のバージョン、著作権者の情報などを設定するだけでモジュールのスケルトンが生成されます。
![](https://assets.st-note.com/img/1654603806212-PMJuoX11T9.png)
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"を設定します。
![](https://assets.st-note.com/img/1654772147318-m30hjO1hCY.png?width=1200)
モジュール右上の3点アイコンから”モジュール情報”を開くと、モジュールの詳細を表示することができます。この情報はモジュールのトップディレクトリ内に保存した__manifest__.pyの情報が表示されています。
![](https://assets.st-note.com/img/1654772248086-4DfWDPfA8S.png?width=1200)
"インストール"ボタンを押してインストールしてみます。
インストールでエラーが発生しなければ”ディスカス”の画面が表示されます。
![](https://assets.st-note.com/img/1654772542140-KSSJjaYQ9w.png?width=1200)
App管理画面の検索機能で、もう一度Currencyを検索してみます。
![](https://assets.st-note.com/img/1654773453349-c7UIWDHNyo.png?width=1200)
モジュールが”インストール済み”として表示されるようになりました。
今回はAddOnモジュールの枠組みを用意して、Odooにインストールしました。次回はモジュールに機能を追加してみようと思います。