Маніфести модуля¶
Маніфест¶
Файл маніфесту слугує для оголошення пакета python як модуля Odoo та визначення метаданих модуля.
Це файл під назвою __manifest__.py
, який містить єдиний словник Python, де кожен ключ визначає метадані модуля.
{
'name': "A Module",
'version': '1.0',
'depends': ['base'],
'author': "Author Name",
'category': 'Category',
'description': """
Description text
""",
# data files always loaded at installation
'data': [
'views/mymodule_view.xml',
],
# data files containing optionally loaded demonstration data
'demo': [
'demo/demo_data.xml',
],
}
Доступні поля маніфесту:
name
(str
, обов’язково)зрозуміла назва модуля
version
(str
)версія цього модуля має відповідати правилам семантичного керування версіями
description
(str
)розширений опис модуля в reStructuredText
author
(str
)ім’я автора модуля
website
(str
)URL-адреса веб-сайту автора модуля
license
(str
, за умовчанням:LGPL-3
)ліцензія на розповсюдження модуля. Можливі значення:
GPL-2
GPL-2 або будь-яка пізніша версія
GPL-3
GPL-3 або будь-яка пізніша версія
AGPL-3
LGPL-3
Інша затверджена ліцензія OSI
OEEL-1
(ліцензія Odoo Enterprise Edition v1.0)OPL-1
(власна ліцензія Odoo v1.0)Інша власність
category
(str
, за замовчуванням:Uncategorized
)категорія класифікації в Odoo, приблизний бізнес-домен для модуля.
Хоча рекомендується використовувати існуючі категорії, поле має вільну форму, і невідомі категорії створюються на льоту. Ієрархії категорій можна створити за допомогою роздільника
/
, наприклад,Foo / Bar
створить категоріюFoo
, категоріюBar
як дочірню категоріюFoo
, і встановитьBar
як категорію модуля.depends
(list(str)
)Модулі Odoo, які мають бути завантажені перед цим, або тому, що цей модуль використовує створені ними функції, або тому, що він змінює ресурси, які вони визначають.
Коли встановлено модуль, усі його залежності встановлюються перед ним. Так само залежності завантажуються перед завантаженням модуля.
Примітка
Модуль base
завжди встановлюється в будь-якому екземплярі Odoo. Але вам все одно потрібно вказати це як залежність, щоб переконатися, що ваш модуль оновлюється, коли оновлюється base
.
data
(list(str)
)Список файлів даних, які завжди потрібно встановлювати або оновлювати разом із модулем. Список шляхів із кореневого каталогу модуля
demo
(list(str)
)Список файлів даних, які встановлюються або оновлюються лише в демонстраційному режимі
auto_install
(bool
абоlist(str)
, за умовчанням:False
)Якщо
True
, цей модуль буде встановлено автоматично, якщо встановлено всі його залежності.Зазвичай він використовується для «модулів зв’язку», що реалізують синергетичну інтеграцію між двома незалежними модулями.
Наприклад,
sale_crm
залежить як відsale
, так і відcrm
і має значенняauto_install
. Коли встановлено іsale
, іcrm
, він автоматично додає відстеження CRM-кампаній до замовлень на продаж, не знаючи один одного ніsale
, ніcrm
.Якщо це список, він повинен містити підмножину залежностей. Цей модуль буде автоматично встановлено, щойно буде встановлено всі залежності в підмножині. Решта залежностей також буде встановлено автоматично. Якщо список порожній, цей модуль завжди встановлюватиметься автоматично, незалежно від його залежностей, і вони також будуть встановлені.
external_dependencies
(dict(key=list(str))
)Словник, що містить python та/або бінарні залежності.
Для залежностей python ключ
python
має бути визначений для цього словника, і йому має бути призначено список модулів python, які потрібно імпортувати.Для бінарних залежностей для цього словника має бути визначено ключ
bin
і йому має бути призначено список імен двійкових виконуваних файлів.Модуль не буде встановлено, якщо модуль python не встановлено на головній машині або двійковий виконуваний файл не знайдено в змінній середовища PATH головної машини.
application
(bool
, за умовчанням:False
)Чи слід розглядати модуль як повноцінний додаток (
True
) чи це просто технічний модуль (False
), який надає деякі додаткові функції існуючому модулю додатку.assets
(dict
)A definition of how all static files are loaded in various assets bundles. See the assets page for more details on how to describe bundles.
installable
(bool
за замовчуванням:True
)Чи повинен користувач мати можливість інсталювати модуль із веб-інтерфейсу користувача чи ні.
maintainer
(str
)Особа або організація, відповідальна за підтримку цього модуля, за замовчуванням передбачається, що автор є супроводжувачем.
{pre_init, post_init, uninstall}_hook
(str
)Перехоплювачі для встановлення/видалення модуля, їхнє значення має бути рядком, що представляє назву функції, визначеної в модулі
__init__.py
.pre_init_hook
приймає курсор як єдиний аргумент, ця функція виконується до встановлення модуля.post_init_hook
приймає курсор і реєстр як аргументи, ця функція виконується відразу після встановлення модуля.uninstall_hook
приймає курсор і реєстр як аргументи, ця функція виконується після видалення модуля.Ці хуки слід використовувати лише тоді, коли налаштування/очищення, необхідні для цього модуля, надзвичайно складні або неможливі через API.
active
(bool
)Застаріле. Замінено на
auto_install
.