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 -*-