オンラインエディタ

概要

オンラインエディタを使用すると、ウェブブラウザからビルドのソースコードを編集することができます。また、ターミナル、Pythonコンソール、Odooシェルコンソール、および ノートブック を開くこともできます。

../../../_images/interface-editor.png

ビルドのエディタには、ブランチタブビルドドロップダウンメニュー、または、/odoo-sh/editor をビルドドメイン名(例:https://odoo-addons-master-1.dev.odoo.com/odoo-sh/editor)に追加することでアクセスできます。

ソースコードの編集

作業ディレクトリは、以下のフォルダで構成されています:

.
├── home
│    └── odoo
│         ├── src
│         │    ├── odoo                Odoo Community source code
│         │    │    └── odoo-bin       Odoo server executable
│         │    ├── enterprise          Odoo Enterprise source code
│         │    ├── themes              Odoo Themes source code
│         │    └── user                Your repository branch source code
│         ├── data
│         │    ├── filestore           database attachments, as well as the files of binary fields
│         │    └── sessions            visitors and users sessions
│         └── logs
│              ├── install.log         Database installation logs
│              ├── odoo.log            Running server logs
│              ├── update.log          Database updates logs
│              └── pip.log             Python packages installation logs

開発ビルドおよびステージングビルドで、ソースコード (/*src) を編集することができます。

注釈

変更は新しいビルドには反映されません。変更を恒久的に反映させたい場合は、ソースコードにコミットする必要があります。

本番ビルドの場合、ソースコードは読み取り専用です。本番サーバにローカルの変更を適用することは推奨されないためです。

  • GitHubリポジトリのソースコードは、/src/user にあります。

  • Odooのソースコードは以下内にあります:

エディタでファイルを開くには、左側のファイルブラウザパネルでファイルをダブルクリックするだけです。

../../../_images/interface-editor-open-file.png

変更を開始できます。変更は、メニューから ファイル ‣ 保存... ファイル を選択するか、Ctrl+S ショートカットキーを押して保存できます。

../../../_images/interface-editor-save-file.png

Odooサーバのアドオンパスに配置されたPythonファイルを保存すると、Odooがそれを検知して自動的に再読み込みを行うため、手動でサーバを再起動することなく、変更が即座に反映されます。

../../../_images/interface-editor-automaticreload.gif

しかし、変更がデータベースに保存されたデータ、例えばフィールドのラベルやビューなどである場合、変更を適用するには該当モジュールを更新する必要があります。現在開いているファイルのモジュールを更新するには、メニュー Odoo ‣ 現在のモジュールを更新 を使用します。現在開いているとみなされるファイルは、テキストエディタでフォーカスされているファイルであり、ファイルブラウザでハイライトされているファイルではないことに注意して下さい。

../../../_images/interface-editor-update-current-module.png

ターミナルを開いて、次のコマンドを実行することもできます:

$ odoo-bin -u <comma-separated module names> --stop-after-init

変更をコミットおよびプッシュする

GitHubのリポジトリに変更をコミットしてプッシュすることができます。

  • ターミナルを開きます (ファイル ‣ 新規 ‣ ターミナル)、

  • cd ~/src/user を使用して、~/src/user ディレクトリに変更します。

  • git add を使用して変更をステージします。

  • git commit を使用して変更をコミットします。

  • git push https HEAD:<branch> を使用して変更をプッシュします。

この最後のコマンドで、

  • httpsHTTPS Githubリモートリポジトリ (例: https://github.com/username/repository.git) の名前です。

  • HEADは、コミットした最新の改訂への参照です。

  • <branch> 変更をプッシュしたいブランチ名に置き換える必要があります。開発ビルドで作業している場合は、現在のブランチでしょう。

../../../_images/interface-editor-commit-push.png

注釈

SSH Github リモートは使用できません。これは、SSH 秘密キーがビルドコンテナにホストされていない(セキュリティ上の懸念があるため)ことと、SSH エージェント経由で転送されていない(ウェブブラウザからこのエディタにアクセスしている)ため、SSHを使用して Github に認証できないためです。変更をプッシュするには、Githubリポジトリの HTTPS リモートを使用する必要があります。これは、Gitリモートに自動的に https という名前で追加されます。GitHubのユーザ名とパスワードを入力するよう求められます。GitHubで2要素認証を有効化している場合は、個人用アクセストークン を作成し、それをパスワードとして使用できます。 repo 権限を付与するだけで十分です。

注釈

The Git source folder ~/src/user is not checked out on a branch but rather on a detached revision: This is because builds work on specific revisions rather than branches. In other words, this means you can have multiple builds on the same branch, but on different revisions.

変更がプッシュされると、ブランチのプッシュ動作 に従って、新しいビルドが作成される場合があります。プッシュ元のエディタで作業を続けることもできますが、作成された新しいビルドと同じリビジョンを持つことになります。ただし、常に、自分のブランチの最新リビジョンを使用するビルドのエディタで作業するようにして下さい。

コンソール

Pythonコンソールを開くことができ、IPythonインタラクティブシェル です。ターミナル内でIPythonシェルではなくPythonコンソールを使用する最も有益な機能は リッチディスプレイ 機能です。これにより、HTML内のオブジェクトを表示できるようになります。

例えば、pandas <https://pandas.pydata.org/pandas-docs/stable/tutorials.html> を使用してCSVファイルのセルを表示することができます。

../../../_images/interface-editor-console-python-read-csv.png

Odooシェルコンソールを開いて、Odooレジストリやデータベースのモデルメソッドを操作することもできます。レコードに直接読み書きすることも可能です。

警告

Odooコンソールでは、取引は自動的にコミットされます。つまり、例えばレコードの変更はデータベースに効果的に適用されます。ユーザ名を変更すると、データベース内のユーザ名も変更されます。そのため、本番データベースではOdooコンソールを慎重に使用する必要があります。

env を使用して、データベースレジストリのモデルを呼び出すことができます。例えば、env['res.users'] のようにです。

env['res.users'].search_read([], ['name', 'email', 'login'])
[{'id': 2,
'login': 'admin',
'name': 'Administrator',
'email': 'admin@example.com'}]

クラス Pretty を使用すると、前述の リッチディスプレイ を使用して、リストや辞書を簡単にきれいに表示することができます。

../../../_images/interface-editor-console-odoo-pretty.png

また pandas を使用してグラフを表示することもできます。

../../../_images/interface-editor-console-odoo-graph.png