Odoo это управляемая данными система и большая часть описания модуля это описание различных записей, которые управляют: Пользовательским интерфейсом (меню и представления), безопасностью (права доступа и правила доступа), печатные формы(отчеты) и обычные данные описаны через записи в таблицах базы данных,
Структура
Основной способ описать данные в Odoo это XML файлы. Структура XML файла следующая:
2 элемента верхнего уровня -
openerpиdataЛюбое количество рабочих элементов внутри
data
<!-- the root elements of the data file -->
<openerp><data>
<operation/>
...
</data></openerp>
Файлы данных выполняются последовательно, операции могут только ссылаться на результату операции, определенной ранее.
Базовые операции
record
record надлежащим образом определяет или обновляет запись в базе данных, имеет следующие атрибуты:
model(обязательный)имя модели данных, которую необходимо создать (или обновить)
idthe 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Устанавливает содержимое поля непосредственно как значение поля без изменений
base64Base64-кодирует содержимое поля, полезно в сочетании с атрибутом
file* * для загрузки, например, данных изображения в вложенияintпреобразует содержимое поля в целое число и устанавливает его как значение поля
floatпреобразует содержимое поля в float и устанавливает его как значение поля
list,tupleдолжно содержать любое количество элементов
valueс одинаковыми свойствами, что иfield, каждый элемент обрабатывается элементом генерируемого кортежа или списка, а сгенерированная коллекция устанавливается как значение поля
evalдля случаев, когда предыдущие методы не подходят, атрибуты
evalпросто вычисляют любое выражение Python, которое оно предоставляет, и задают результат как значение поля.Вычисляемый контекст содержит различные модули (
time,datetime,timedelta,relativedelta), функцию разрешения external identifiers (ref) и объект модели данных для текущего поля, если это применимо (obj)
delete
Тег delete может удалить любое количество ранее определенных записей. Он имеет следующие атрибуты:
model(обязательный)модель данных, в которой должна быть удалена указанная запись
idexternal 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 представления, и позволяет задействовать несколько дополнительных атрибутов:
idexternal identifier представления
name,inherit_id,priorityТо же, что и соответствующее поле в
ir.ui.view(nb:inherit_idдолжен быть external identifier)primaryЕсли установлено в
Trueи объединено сinherit_id, определяет представление как первичноеgroupsсписок external identifiers групп через запятую
pageесли установлено значение
True, шаблон представляет собой страницу веб-сайта (с возможностью ссылаться на нее, удалять)optionalenabledили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