Odoo это система управляемая с помощью данных, большая часть описания модуля это описание различных записей, которые задают поведение: Пользовательским интерфейсом (меню и представления), безопасностью (права доступа и правила доступа), отчеты(печатные формы) и обычные данные описаны через записи в таблицах базы данных.
Структура
Основной способ описать данные в Odoo это XML файлы. Структура XML файла следующая:
- The nested root elements
openerp
anddata
- Any number of operation elements within
data
<!-- the root elements of the data file -->
<openerp><data>
<operation/>
...
</data></openerp>
Файлы данных выполняются последовательно, операции могут только ссылаться на результату операции, определенной ранее.
Базовые операции
record
record
определяет или обновляет запись в базе данных, имеет следующие атрибуты:
model
(обязательный параметр)имя модели, которую необходимо создать (или обновить)
id
external identifier для этой записи. Настоятельно рекомендуется указывать, чтобы обеспечить
создание записи, позволяет последующим определениям также модифицировать или ссылаться на эту запись
модификацию записи, для того чтобы изменить ее значения
context
контекст который нужно использовать при создании записи
forcecreate
режиме обновления указывает на то, должна ли создаваться запись, если она не существует
Требует external id, по умолчанию
True
.
field
Каждая запись может состоять из тегов field
, определяющих значения полей при создании записи. Элемент record
без элементов field
будет использовать все значения по умолчанию (при создании) или ничего не делать (при обновлении).
Поле field
имеет обязательный атрибут name
, имя устанавливаемого поля и различные методы для определения самого значения:
- Ничего
если для поля не указано значение, в поле будет установлено неявное значение
False
. Может использоваться для очистки поля или для использования значения по умолчанию.search
for relational fields, should be a domain on the field's model.
Will evaluate the domain, search the field's model using it and set the search's result as the field's value. Will only use the first result if the field is a
Many2one
ref
Если указан атрибут
ref
, его значением должен быть существующий external id, который будет находится и устанавливаться в качестве значения поля.type
Если указан атрибут
type
, он используется для интерпретации и преобразования содержимого поля. Содержимое поля может быть предоставлено через внешний файл, используя атрибутfile
, или через тело узла.Доступные типы:
xml
,html
Извлекает дочерние элементы
field
как единый документ, Оценивает любой external id указанный в форме%(external_id)s
.%%
может использоваться для вывода фактических знаков %.file
гарантирует, что содержимое поля является правильным путем к файлу в текущей модели, сохраняет
module,path
как значение поляchar
устанавливает содержимое поля непосредственно как значение поля без изменений
base64
Base64-кодирует содержимое поля, полезно в сочетании с атрибутом
file
для загрузки, изображений во вложенияint
преобразует содержимое поля в целое число и устанавливает его как значение поля
float
преобразует содержимое поля в float и устанавливает его как значение поля
list
,tuple
должно содержать любое количество элементов
value
с теми же свойствами, что иfield
, каждый элемент устанавливается как элемент генерируемого кортежа или списка, а созданная коллекция устанавливается как значение поля
eval
для случаев, когда предыдущие методы не подходят, атрибуты
eval
просто исполняют любое выражение Python, которое оно предоставляет, и задают результат как значение поля.Вычисляемый контекст содержит различные модули (
time
,datetime
,timedelta
,relativedelta
), функцию разрешения external identifiers (ref
) и объект модели для текущего поля, если это применимо (obj
)
delete
Тег delete
может удалить любое количество ранее определенных записей. Он имеет следующие атрибуты:
model
(обязательный параметр)модель, в которой должна быть удалена указанная запись
id
external id записи для удаления
search
домен для поиска записей удаляемых из модели
id
и search
являются эксклюзивными
function
Тег function
вызывает метод в модели данных с указанными параметрами. Он имеет два обязательных параметра model
и name
, с указанием модели и имени, вызываемого метода, соответственно.
Параметры могут быть предоставлены с помощью eval
(необходимо правильно установить последовательность, передаваемых с методом, значений) или с помощью value
элементов (см. значения list
).
workflow
The workflow
tag sends a signal to an existing workflow. The workflow
can be specified via a ref
attribute (the external id of
an existing workflow) or a value
tag returning the id of a workflow.
The tag also has two mandatory attributes model
(the model linked to the
workflow) and action
(the name of the signal to send to the workflow).
Ссылки
Поскольку некоторые важные структурные модели Odoo сложны и связаны между собой, файлы данных предоставляют более короткие альтернативы их определения с использованием тегов record:
template
Создает QWeb представлние требующее только раздел arch
, и позволяет задействовать несколько дополнительных атрибутов:
id
external identifier представления
name
,inherit_id
,priority
То же, что и соответствующее поле в
ir.ui.view
(inherit_id
должен быть external identifier)primary
Если установлено в
True
и объединено сinherit_id
, определяет представление как первичноеgroups
список external identifiers групп через запятую
page
если установлено значение
True
, шаблон представляет собой страницу веб-сайта (с возможностью ссылаться на нее и удалять)optional
enabled
илиdisabled
, можно ли отключить представление (в интерфейсе веб-сайта) и его статус по умолчанию. Если не установлен, представление всегда включено.
report
Creates a ir.actions.report.xml
record with a few default values.
Mostly just proxies attributes to the corresponding fields on
ir.actions.report.xml
, but also automatically creates the item in the
More menu of the report's model
.
Файлы данных CSV
Файлы данных XML являются гибкими и самодостаточными, но очень избыточными при создании большого числа простых записей для одной и той же модели.
В этом случае файлы также могут быть и csv формата, данный вид файлов часто применяется при описании прав доступа:
имя файла
model_name.csv
В первой строке перечисляются поля для записи со специальным полем
id
для external identifiers (используются для создания или обновления записей)каждая последующая строка создает новую запись
Ниже приведены первые строки файла, определяющего штаты США res.country.state.csv
"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
state_au_5,au,"South Australia","SA"
state_au_6,au,"Tasmania","TAS"
state_au_7,au,"Victoria","VIC"
state_au_8,au,"Western Australia","WA"
state_us_1,us,"Alabama","AL"
state_us_2,us,"Alaska","AK"
state_us_3,us,"Arizona","AZ"
state_us_4,us,"Arkansas","AR"
state_us_5,us,"California","CA"
state_us_6,us,"Colorado","CO"
в более читаемом формате:
id | country_id:id | name | code |
---|---|---|---|
state_au_1 | au | Australian Capital Territory | ACT |
state_au_2 | au | New South Wales | NSW |
state_au_3 | au | Northern Territory | NT |
state_au_4 | au | Queensland | QLD |
state_au_5 | au | South Australia | SA |
state_au_6 | au | Tasmania | TAS |
state_au_7 | au | Victoria | VIC |
state_au_8 | au | Western Australia | WA |
state_us_1 | us | Alabama | AL |
state_us_2 | us | Alaska | AK |
state_us_3 | us | Arizona | AZ |
state_us_4 | us | Arkansas | AR |
state_us_5 | us | California | CA |
state_us_6 | us | Colorado | CO |
state_us_7 | us | Connecticut | CT |
state_us_8 | us | Delaware | DE |
state_us_9 | us | District of Columbia | DC |
state_us_10 | us | Florida | FL |
state_us_11 | us | Georgia | GA |
state_us_12 | us | Hawaii | HI |
state_us_13 | us | Idaho | ID |
state_us_14 | us | Illinois | IL |
state_us_15 | us | Indiana | IN |
state_us_16 | us | Iowa | IA |
state_us_17 | us | Kansas | KS |
state_us_18 | us | Kentucky | KY |
state_us_19 | us | Louisiana | LA |
state_us_20 | us | Maine | ME |
state_us_21 | us | Montana | MT |
state_us_22 | us | Nebraska | NE |
state_us_23 | us | Nevada | NV |
state_us_24 | us | New Hampshire | NH |
state_us_25 | us | New Jersey | NJ |
state_us_26 | us | New Mexico | NM |
state_us_27 | us | New York | NY |
state_us_28 | us | North Carolina | NC |
state_us_29 | us | North Dakota | ND |
state_us_30 | us | Ohio | OH |
state_us_31 | us | Oklahoma | OK |
state_us_32 | us | Oregon | OR |
state_us_33 | us | Maryland | MD |
state_us_34 | us | Massachusetts | MA |
state_us_35 | us | Michigan | MI |
state_us_36 | us | Миннесота | MN |
state_us_37 | us | Mississippi | MS |
state_us_38 | us | Missouri | MO |
state_us_39 | us | Pennsylvania | PA |
state_us_40 | us | Rhode Island | RI |
state_us_41 | us | South Carolina | SC |
state_us_42 | us | South Dakota | SD |
state_us_43 | us | Tennessee | TN |
state_us_44 | us | Texas | TX |
state_us_45 | us | Utah | UT |
state_us_46 | us | Vermont | VT |
state_us_47 | us | Virginia | VA |
state_us_48 | us | Washington | WA |
state_us_49 | us | West Virginia | WV |
state_us_50 | us | Wisconsin | WI |
state_us_51 | us | Wyoming | WY |
Для каждой строки (записи):
первый столбец - external id записи для создания или обновления
второй столбец - external id объекта страны, на который он ссылается (объекты страны должны быть определены заранее)
третий столбец это значение поля
name
дляres.country.state
четвертый столбец это значение поля
code
дляres.country.state