モジュールを作成¶
最初のモジュールを作成する前に、Odoo.shプロジェクトを作成し、GitHubリポジトリのURLを知っておく必要があります。
用語集
~/srcはOdooプロジェクトに関連するGitリポジトリが配置されているディレクトリです。odooはGitHubユーザです。odoo-addonsはGitHubリポジトリです。feature-1は開発ブランチの名前です。mainは本番ブランチの名前です。my_moduleはモジュールの名前です。
必要に応じてこれらを置き換えてください。
開発ブランチを作成します。¶
From the Branches view:
In the branches navigation panel, click the + (New development branch) button next to Development.
Under Fork, select the
mainbranch.Under To, enter
feature-1.
Once the build is ready, you can access the editor and
the code of your development branch from the folder ~/src/user folder.
Clone your GitHub repository on your computer by running the following commands:
mkdir ~/src cd ~/src git clone https://github.com/odoo/odoo-addons.git cd ~/src/odoo-addons
Create a new branch by running:
git checkout -b feature-1 main
モジュール構成を作成する¶
Scaffolding¶
While it is not required, scaffolding avoids the tedium of setting the basic Odoo module structure.
You can scaffold a new module using the odoo-bin executable.
From the editor terminal, run:
odoo-bin scaffold my_module ~/src/user/
With Odoo installed on your computer, run:
./odoo-bin scaffold my_module ~/src/odoo-addons/
ちなみに
If you do not want to install Odoo on your computer, you can also download this module
structure template. Replace every occurrence of my_module with
the name of your choice.
The structure below will be generated:
my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ ├── ir.model.access.csv
│ └── models.py
└── views
├── templates.xml
└── views.xml
警告
Only use alphanumeric characters (a-z, 0-9) or underscores (_) when naming your module, as
its name is used for Python classes, and class names containing special characters other than
underscores are not valid in Python.
Uncomment the following files:
models/models.pyan example of a model with its fieldsviews/views.xmla tree and a form view, with the menus opening themdemo/demo.xmldemo records for the example modelcontrollers/controllers.pyはルートを実装するコントローラーの例views/templates.xmlはコントローラールートで使用される2つのqwebビューの例__manifest__.pyはモジュールのマニフェストで、タイトル、説明、読み込むデータファイルが含まれています。アクセス制御リストのデータファイルのコメントを解除してください:# 'security/ir.model.access.csv',
手動¶
モジュール構造を手動で作成するには、Server framework 101チュートリアルに従って、モジュールの構造と各ファイルの内容を理解してください。
開発ブランチにプッシュ¶
次のコマンドを実行して、コミットする変更をステージングします:
git add my_module
次のコマンドを実行して、変更をコミットします:
git commit -m "My first module"次のコマンドを実行して、変更をリモートリポジトリにプッシュします:
次を実行:
git push -u origin feature-1
-u origin feature-1を指定する必要があるのは、最初にプッシュするときだけです。その後は、次を実行します:git push
モジュールのテスト¶
ブランチはブランチビューナビゲーションパネルのDevelopmentセクションに表示されます。
ブランチ名をクリックすると、プッシュした変更を含む履歴が表示されます。データベースの準備ができたら、Connectをクリックしてアクセスします。
Odoo.shプロジェクトがモジュールを自動的にインストールするように設定されている場合は、データベースのダッシュボードに直接表示されます。それ以外の場合は、Appsアプリでインストール可能です。
本番データでテストする¶
注釈
このステップには本番データベースが必要です。まだない場合は作成してください。
デモデータを使用した開発ビルドでモジュールをテストし、準備ができたと判断したら、ステージングブランチを使用して本番データで テストできます。
以下が可能です:
開発ブランチをステージングブランチに変換するには、ステージングセクションにドラッグ&ドロップします。
既存のステージングブランチに統合するには、そのブランチにドラッグ&ドロップします。
git mergeコマンドを使用してブランチを統合します。
これにより、本番データベースを複製し、ブランチの最新変更で更新されたサーバ上で実行する新しいステージングビルドが作成されます。
データベースの準備ができたら、接続をクリックしてアクセスします。
モジュールをインストール¶
アプリアプリからモジュールをインストールします。モジュールがアプリ一覧に直接表示されない場合は、開発者モードを有効にして:menuselection:アプリ一覧を更新 --> 更新をクリックし、アプリ一覧を更新します。
注釈
ステージングビルドの目的は、本番データベース上での動作と同様に変更の動作をテストすることであるため、モジュールは自動的にインストールされません。自動的にモジュールがインストールされることは望ましくありません。
本番環境でデプロイする¶
本番データを使用してステージングブランチでモジュールをテストし、本番環境に対応できると判断したら、次の方法でブランチを本番ブランチに統合できます:
ステージングブランチを本番ブランチにドラッグ&ドロップする。
git mergeコマンドを使用してブランチを統合する。
これにより、ステージングブランチの最新変更が本番ブランチに統合され、本番サーバがそれらの変更で更新されます。
データベースの準備ができたら、接続をクリックしてアクセスします。
モジュールをインストール¶
アプリアプリからモジュールをインストールします。モジュールがアプリ一覧に直接表示されない場合は、開発者モードを有効にして:menuselection:アプリ一覧を更新 --> 更新をクリックし、アプリ一覧を更新します。
変更を追加¶
このセクションでは、モデルに新しいフィールドを追加してデプロイすることにより、モジュールに変更を加える方法について説明します。
エディタまたはコンピュータから、モジュールフォルダ:file:
~/src/odoo-addons/my_moduleを開き、models/models.pyファイルを開いて編集します。description フィールドの後に:description = fields.Text()
datetime フィールドを追加します:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
views/views.xmlファイルを開き、次の後に:<field name="value2"/>
以下を追加します:
<field name="start_datetime"/>
これらの変更は、テーブルに列を追加し、ビューを変更することで、データベース構造を変更します。本番データベースなどの既存のデータベースに適用するには、これらの変更にはモジュールの更新が必要です。変更をプッシュする際に Odoo.sh プラットフォームで自動的に更新を実行したい場合は、
__manifest__.pyを開いてマニフェスト内のモジュールのバージョンを上げ、次の部分を置き換えます:'version': '0.1',
次の項目:
'version': '0.2',
プラットフォームはバージョンの変更を検出し、新しいリビジョンのデプロイ時にモジュールの更新をトリガーします。
次に変更をプッシュします。
変更をテストした後、Odoo.shインターフェースでブランチを本番ブランチにドラッグ&ドロップするなどして、本番ブランチにマージできます。マニフェストでモジュールのバージョンを上げた場合、プラットフォームは自動的にモジュールを更新し、新しいフィールドがすぐに利用可能になります。それ以外の場合は、アプリ一覧内で手動でモジュールを更新できます。
外部Pythonライブラリを使用する¶
デフォルトでインストールされていない外部Pythonライブラリを使用したい場合は、モジュールが依存する外部ライブラリを一覧表示したrequirements.txtファイルを定義できます。プラットフォームは、このファイルを使用してプロジェクトに必要なPythonライブラリを自動的にインストールします。
注釈
Odoo.shデータベースにシステムパッケージ (aptパッケージなど) をインストールまたはアップグレードすることはできません。ただし、特定の条件下では、`パッケージのインストールを検討できます<https://www.odoo.sh/faq#install_dependencies>`_。これは、コンパイルにシステムパッケージを必要とするPythonモジュールやサードパーティのOdooモジュールにも適用されます。
PostgreSQL拡張機能はOdoo.shでサポートされていないため、Odoo.shデータベースに拡張機能 (PostGIS、ltreeなど) をインストールすることはできません。
たとえば、モジュールで `Unidecodeライブラリ<https://pypi.org/project/Unidecode>`_ を使用するには:
リポジトリのルートフォルダに
requirements.txtファイルを作成します:Odoo.shエディターから、
~/src/user/requirements.txtファイルを作成して開きます。コンピューターから、
~/src/odoo-addons/requirements.txtファイルを作成して開きます。
ファイルに追加:
unidecode
これで、モジュール内でライブラリを使用できます。たとえば、モデルのnameフィールドの文字からアクセント記号を削除できます。そのためには、
models/models.pyファイルを開き、変更前:from odoo import models, fields, api
以下を追加します:
from unidecode import unidecode
変更後:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
以下を追加します:
@api.model def create(self, values): if 'name' in values: values['name'] = unidecode(values['name']) return super(my_module, self).create(values) def write(self, values): if 'name' in values: values['name'] = unidecode(values['name']) return super(my_module, self).write(values)
モジュールのマニフェスト
__manifest__.pyを編集して、モジュールのバージョンを上げることでPython依存関係をインストールします。次に変更をプッシュします。
ちなみに
git add requirements.txtを実行してrequirements.txtファイルをステージします。