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

Odoo это система управляемая с помощью данных, большая часть описания модуля это описание различных записей, которые задают поведение: Пользовательским интерфейсом (меню и представления), безопасностью (права доступа и правила доступа), отчеты(печатные формы) и обычные данные описаны через записи в таблицах базы данных.

Структура

Основной способ описать данные в Odoo это XML файлы. Структура XML файла следующая:

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

Mostly for Many2one and Reference fields

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"

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

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