odoo-xml-views-builder について
Odoo開発者向けに、カンバン、フォーム、リスト、検索、カレンダー、グラフのXML定義を生成・レビューするスキルです。Odoo 14~17に対応し、動的な表示条件のバージョン差も扱います。
主な機能
- 01複数種類のOdoo XMLビュー生成
- 02XMLのレビューと一般的な誤りの修正
- 03表示条件、グループ、ドメイン、コンテキストへの対応
- 04Odoo 14~17のバージョン差への対応
- 05フィールド、タブ、スマートボタンの配置
活用シーン
- 01カスタムモデル用のフォームやリストビュー作成
- 02既存ビューへのフィールドやスマートボタンの追加
- 03色や進捗バーを使うカンバンビューの作成
- 04検索ビューのフィルターやグループ化の設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill odoo-xml-views-builderインストール後、Claude Code で/odoo-xml-views-builderを入力して読み込まれたか確認します。
詳細
Odoo XML ビュー ビルダー
概要
このスキルは、カンバン、フォーム、リスト、検索、カレンダー、グラフビュー用の Odoo XML ビュー定義を生成し、レビューします。可視性修飾子、groups、domain、context、ウィジェットの使用方法を Odoo 14~17 にわたって理解しており、attrs(v14~16)からインライン式(v17 以降)への移行にも対応しています。
このスキルを使う場面
- カスタムモデル用の新しいフォームビューまたはリストビューを作成するとき。
- 既存のビューにフィールド、タブ、スマートボタンを追加するとき。
- 色分けやプログレスバーを使ったカンバンビューを作成するとき。
- フィルターやグループ化オプションを備えた検索ビューを作成するとき。
仕組み
- 有効化:
@odoo-xml-views-builderに言及し、作成したいビューを説明します。 - 生成:そのまま貼り付けて使える完全な XML ビュー定義を取得します。
- レビュー:既存の XML を貼り付けると、よくある間違いの修正案を取得できます。
例
これらの例は Odoo 17 を対象としており、カスタムモデル、フィールド、メソッドが必要です。v14~16 では、動的修飾子を attrs ドメインに変換してください。ビューの可視性はアクセス制御ではありません。ACL、レコードルール、メソッドの認可は個別に適用してください。
例 1:タブ付きフォームビュー
<record id="view_hospital_patient_form" model="ir.ui.view">
<field name="name">hospital.patient.form</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<form string="Patient">
<header>
<button name="action_confirm" string="Confirm"
type="object" class="btn-primary"
invisible="state != 'draft'"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,confirmed,done"/>
</header>
<sheet>
<div class="oe_title">
<h1><field name="name" placeholder="Patient Name"/></h1>
</div>
<notebook>
<page string="General Info">
<group>
<field name="birth_date"/>
<field name="doctor_id"/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
例 2:カンバンビュー
<record id="view_hospital_patient_kanban" model="ir.ui.view">
<field name="name">hospital.patient.kanban</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<kanban default_group_by="state" class="o_kanban_small_column">
<field name="name"/>
<field name="state"/>
<field name="doctor_id"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_content">
<strong><field name="name"/></strong>
<div>Doctor: <field name="doctor_id"/></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
ベストプラクティス
- ✅ 推奨:表示/非表示の制御には、
attrsの代わりにインラインのinvisible="condition"(Odoo 17 以降)を使います。 - ✅ 推奨:Odoo 14~16 を対象とする場合に限り、
attrs="{'invisible': [...]}"を使います。v17 ではサポートされなくなりました。 - ✅ 推奨:
ir.ui.viewレコードのnameフィールドを設定し、使用可能なstring属性を、対応するアーキテクチャ要素に指定します。 - ✅ 推奨:Odoo 17 では
oe_chatterブロックを使い、モデルが必要なメール用ミックスインを継承していることを確認します。対象バージョンに合わせて構文を検証してください。 - ❌ 非推奨:Odoo 17 で
attrsを使わないでください。サポートされておらず、ビューの読み込みを妨げる可能性があります。 - ❌ 非推奨:ビュー XML にビジネスロジックを記述しないでください。Python モデルメソッドに記述してください。
- ❌ 非推奨:モデル上の
domainフィールドで動的に指定できる場合、ビューでハードコードしたdomain文字列を使わないでください。
リファレンス:Odoo 17 のビューアーキテクチャ。
制限事項
- OWL JavaScript ウィジェットやクライアントサイドのコンポーネント開発は対象外です。
- 検索パネルビュー(
<searchpanel>)は網羅していません。これらにはフロントエンドの知識が必要です。 - Web サイトの QWeb ビューは対象外です。そちらには
@odoo-qweb-templatesを使ってください。 - コホートビューとマップビュー(Enterprise 専用)は、このスキルの対象外です。
コメント
Markdown 対応