Toggle navigation

Файлы с данными - Odoo 9.0

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, который будет находится и устанавливаться в качестве значения поля.

В основном для Many2one и Reference полей.

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"

в более читаемом формате:

idcountry_id:idnamecode
state_au_1auAustralian Capital TerritoryACT
state_au_2auNew South WalesNSW
state_au_3auNorthern TerritoryNT
state_au_4auQueenslandQLD
state_au_5auSouth AustraliaSA
state_au_6auTasmaniaTAS
state_au_7auVictoriaVIC
state_au_8auWestern AustraliaWA
state_us_1usAlabamaAL
state_us_2usAlaskaAK
state_us_3usArizonaAZ
state_us_4usArkansasAR
state_us_5usCaliforniaCA
state_us_6usColoradoCO
state_us_7usConnecticutCT
state_us_8usDelawareDE
state_us_9usDistrict of ColumbiaDC
state_us_10usFloridaFL
state_us_11usGeorgiaGA
state_us_12usHawaiiHI
state_us_13usIdahoID
state_us_14usIllinoisIL
state_us_15usIndianaIN
state_us_16usIowaIA
state_us_17usKansasKS
state_us_18usKentuckyKY
state_us_19usLouisianaLA
state_us_20usMaineME
state_us_21usMontanaMT
state_us_22usNebraskaNE
state_us_23usNevadaNV
state_us_24usNew HampshireNH
state_us_25usNew JerseyNJ
state_us_26usNew MexicoNM
state_us_27usNew YorkNY
state_us_28usNorth CarolinaNC
state_us_29usNorth DakotaND
state_us_30usOhioOH
state_us_31usOklahomaOK
state_us_32usOregonOR
state_us_33usMarylandMD
state_us_34usMassachusettsMA
state_us_35usMichiganMI
state_us_36us

Миннесота

MN
state_us_37usMississippiMS
state_us_38usMissouriMO
state_us_39usPennsylvaniaPA
state_us_40usRhode IslandRI
state_us_41usSouth CarolinaSC
state_us_42usSouth DakotaSD
state_us_43usTennesseeTN
state_us_44usTexasTX
state_us_45usUtahUT
state_us_46usVermontVT
state_us_47usVirginiaVA
state_us_48usWashingtonWA
state_us_49usWest VirginiaWV
state_us_50usWisconsinWI
state_us_51usWyomingWY

Для каждой строки (записи):

  • первый столбец - external id записи для создания или обновления

  • второй столбец - external id объекта страны, на который он ссылается (объекты страны должны быть определены заранее)

  • третий столбец это значение поля name для res.country.state

  • четвертый столбец это значение поля code для res.country.state