XML - m3dbedb/odoo GitHub Wiki

Пример файла XML

<odoo>
    <record model="{имя модели}" id="{идентификатор записи}">
        <field name="{имя поля}">{значение}</field>
    </record>
</odoo>

Since odoo 8 tags <openerp> <data>

are replaced with <odoo>

Каждый тег <record> создаёт или меняет запись в БД

Примеры:

Наследование тега <kanban>, добавление атрибута:

 <xpath expr="//kanban[contains(<ls user="class" />, 'oe_background_grey o_kanban_dashboard o_project_kanban')]" position="attributes">
     <attribute name="default_group_by">stage_id</attribute>
 </xpath>

Добавление заголовка:

 <xpath expr="/form/*" position="before">
    <header>
        <field name="stage_id" widget="statusbar" clickable="True" options="{'fold_field': 'fold'}"/>
    </header>
 </xpath>

Добавление тега

Упрощенная запись (можно искать теги <sheet> , <group> , <div> и другие)

<record id="project_form" model="ir.ui.view">
    <field name="name">project_stage.form.inherit2</field>
    <field name="model">project.project</field>
    <field name="inherit_id" ref="project.edit_project"/>
    <field name="arch" type="xml">
      <field name="message_follower_ids" position="after">
        <field name="message_ids" widget="mail_thread"/>
      </field>
    </field>
</record>

В общем случае для поиска <field name="done"> в теге <field name="arch" type="xml"> ... </field> пишем //field[@name]='is_done':

<xpath expr="//field[@name]='done'" position="before">
  <field name="date" />
</xpath>

Возможные места вставки:

  • after добавляет содержимое в родительский элемент, после найденного узла.
  • before добавляет содержимое перед найденным узлом.
  • inside (значение по умолчанию) добавляет содержимое внутрь найденного узла.
  • replace заменяет найденный узел. При использовании с пустым содержимым элемент удаляется. Начиная с 10й Оды это также позволяет обернуть элемент другой разметкой, используя $0 в содержимом, чтобы представить заменяемый элемент.
  • attributes изменяют XML-атрибуты найденного элемента. Это делается с помощью указания новых значений атрибутов. <attribute name="имя-аттрибута">

Пример:

<field name="active" position="attributes">
  <attribute name="invisible">1</attribute>
</field>

Добавление листа page (вкладки) в книгу notebook

<xpath expr="/form/sheet[1]/notebook[1]/page[1]" position="before">
  <page name="description_page" string="Description">
    <field name="description" type="html"/>
    <div class="oe_clear"/>
  </page>
</xpath>

Сортировка

Атрибут group_by_full в Odoo 10 заменён атрибутом group_expand

Переопределение названия поля, которое по умолчанию берётся из БД

<label for="alias_name" string="Choose a Project Email" attrs="{'invisible': [('alias_domain', '=', False)]}"/>

Тут будет пример использования (пока не нашёл):

<kanban class="oe_background_grey o_kanban_dashboard o_project_kanban" > ...

Если ваша модель не содержит кода питона, в файле __init__.py оставляем только # -*- coding: utf-8 -*-

⚠️ **GitHub.com Fallback** ⚠️