オンラインエディタ

:guilabel:`オンラインエディタ`ビューでは、ウェブブラウザからビルドのソースコードを編集できます。また、ターミナル、Pythonコンソール、Odoo shellコンソール、および`Jupyter Notebooks <https://jupyterlab.readthedocs.io/en/stable/user/notebook.html>`_を開くこともできます。

オンラインエディタの概要

エディタには、ブランチタブビルドドロップダウンメニュー <odoo-sh/builds/stages/features>`からアクセスするか、ビルドのURLに `/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 配下のファイル)を編集できます。本番ビルドの場合、ソースコードは読み取り専用です。本番サーバで直接変更を適用することは推奨されないためです。

注釈

エディタでファイルを開くには、ファイルブラウザパネルでファイルをダブルクリックします。その後、ファイルを編集できます。変更を保存するには、:menuselection:`ファイル --> 保存`を選択するか、:kbd:`Ctrl+S`キーボードショートカットを使用します。

Odoサーバのアドオンパス内のPythonファイルを保存すると、Odoが検知して自動的にリロードするため、変更は即座に反映されます。

Pythonファイルへの変更が即座に反映される様子

ただし、フィールドのラベルやビューなど、変更がデータベースに保存される場合は、変更を適用するために関連モジュールを更新する必要があります。現在開いているファイルのモジュールを更新するには、:menuselection:`Odoo --> 現在のモジュールを更新`を選択します。

エディタを使用して現在のモジュールを更新する様子

ちなみに

ターミナルで以下のコマンドを実行してモジュールを更新することもできます:

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

変更のコミットとプッシュ

GitHubリポジトリに変更をコミットしてプッシュするには:

  • :menuselection:`ファイル --> 新規 --> ターミナル`を選択してターミナルを開きます。

  • ディレクトリを`~/src/user`に変更してください。

    cd ~/src/user
    
  • 自分の身元を明らかにしてください。

    git config --global user.email "you@example.com" && git config --global user.name "Your Name"
    
  • 変更をステージしてください。

    git add
    
  • 変更をコミットしてください。

    git commit
    
  • 変更をプッシュしてください。

    git push https HEAD:<branch>
    

    このコマンドでは:

    • https`は*HTTPS* GitHubリモートリポジトリの名前です(例:`https://github.com/username/repository.git)。

    • `HEAD`はコミットした最新の変更履歴への参照です。

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

GitHubのユーザ名とパスワードの入力を求められます。認証情報を入力した後、Enterキーを押してください。

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

ちなみに

GitHubアカウントで二要素認証を有効にしている場合は、`個人アクセストークン <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token>`_を作成してパスワードとして使用できます。`repoパーミッションを付与する <https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/repository-access-and-collaboration/inviting-collaborators-to-a-personal-repository>`_だけで十分です。

注釈

  • セキュリティ上の理由から、プライベートSSHキーはビルドコンテナでホストされておらず、ウェブブラウザ経由でエディタにアクセスするため、SSHエージェント経由で転送されることもないため、SSHを使用して認証することはできません。

  • ソースフォルダ`~/src/user`はブランチではなく、切り離された変更履歴でチェックアウトされています。これは、ビルドがブランチではなく特定の変更履歴で動作するためです。つまり、同じブランチ上でも異なる変更履歴で複数のビルドを持つことができます。

変更がプッシュされると、:ref:`ブランチプッシュ動作 <odoo-sh/branches/tabs/settings>`に応じて、新しいビルドが作成される場合があります。プッシュ元のエディタは、作成された新しいビルドと同じ変更履歴を持つため、引き続き作業できます。ただし、必ずブランチの最新変更履歴を使用しているビルドのエディタで作業してください。

コンソール

Pythonコンソールを開くことができます。これらは`IPythonインタラクティブシェル <https://ipython.readthedocs.io/en/stable/interactive/tutorial.html>`_です。これらのPythonコンソール(ターミナル内のIPythonシェルではなく)を使用すると、`リッチディスプレイ機能 <https://ipython.readthedocs.io/en/stable/config/integrating.html#rich-display>`_を利用してオブジェクトをHTMLで表示できます。

Example

:code:`Pretty`クラスは、リストを読みやすい形で表示します。

Prettyクラスの例

ちなみに

`pandas <https://pandas.pydata.org/pandas-docs/stable/getting_started/tutorials.html>`_を使用すると、次を表示できます:

  • CSVファイルのセル

    pandas CSV の例
  • グラフ

    pandas グラフの例

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'}]