Odoo это управляемая данными система и большая часть описания модуля это описание различных записей, которые управляют: Пользовательским интерфейсом (меню и представления), безопасностью (права доступа и правила доступа), печатные формы(отчеты) и обычные данные описаны через записи в таблицах базы данных,
Структура
Основной способ описать данные в Odoo это XML файлы. Структура XML файла следующая:
Любое количество элементов операции в корневом элементе `` odoo``
<!-- the root elements of the data file -->
<odoo>
<operation/>
...
</odoo>
Файлы данных выполняются последовательно, операции могут только ссылаться на результату операции, определенной ранее.
Базовые операции
record
record
надлежащим образом определяет или обновляет запись в базе данных, имеет следующие атрибуты:
model
(обязательный)имя модели данных, которую необходимо создать (или обновить)
id
the external identifier для этой записи. Настоятельно рекомендуется указывать, чтобы обеспечить
создание записи, позволяет последующим определениям также модифицировать или ссылаться на эту запись
модификацию записи, для того чтобы изменить ее значения
context
контекст используется, когда при создании записи
forcecreate
В режиме обновления должна ли создаваться запись, если она не существует
Требует external id, по умолчанию
True
.
field
Каждая запись может состоять из тегов field
, определяющих значения полей при создании записи. Элемент record
без элементов field
будет использовать все значения по умолчанию (при создании) или ничего не делать (при обновлении).
Поле field
имеет обязательный атрибут name
, имя устанавливаемого поля и различные методы для определения самого значения:
- Nothing
Если для поля не указано значение, в поле будет установлено неявное значение
False
. Может использоваться для очистки поля или для исключения использования значения по умолчанию для поля.search
для реляционных полей, должно быть domain в поле модели данных.
Будет оценивать домен, искать его в модели поля и задавать результат поиска в качестве значения поля. Если это поле
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
Тег workflow
отправляет сигнал в существующий бизнес-процесс. Бизнес-процесс может быть указан через атрибут ref
(external id существующего бизнес-процесса) или тег value
, возвращающий идентификатор бизнес-процесса.
Тег так же имеет два обязательных атрибута model
(модель данных связанная с бизнес-процессом) и action
(имя сигнала для отправки в бизнес-процесс).
Ссылки
Поскольку некоторые важные структурные модели Odoo сложны и связаны между собой, файлы данных предоставляют более короткие альтернативы их определения с использованием тегов record:
template
Создает QWeb view требующее только раздел arch
представления, и позволяет задействовать несколько дополнительных атрибутов:
id
external identifier представления
name
,inherit_id
,priority
То же, что и соответствующее поле в
ir.ui.view
(nb:inherit_id
должен быть external identifier)primary
Если установлено в
True
и объединено сinherit_id
, определяет представление как первичноеgroups
список external identifiers групп через запятую
page
если установлено значение
True
, шаблон представляет собой страницу веб-сайта (с возможностью ссылаться на нее, удалять)optional
enabled
илиdisabled
, можно ли отключить представление (в интерфейсе веб-сайта) и его статус по умолчанию. Если не установлен, представление всегда включено.
Отчёт!
Создает запись ir.actions.report.xml
с несколькими значениями по умолчанию.
В основном только присваивает атрибуты соответствующим полям в ir.actions.report.xml
, а также автоматически создает элемент в меню Еще для модели данных, для которой создается печатная форма.
Файлы данных 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