Что такое __manifest__.py?
Каждый пользовательский модуль (или маркетплейс) в Odoo включает в себя манифест модуля, __manifest__.py , расположенный в корневой папке модуля. Это файл Python, определяющий единый словарь, содержащий метаданные о модуле (имя, версия, зависимости, файлы данных, ресурсы и т. д.). Он содержит важную информацию о вашем модуле; он сообщает Odoo, что представляет собой ваш модуль, от чего он зависит и какие файлы/данные следует загрузить. Фактически, модуль даже не отобразится в списке приложений и не будет корректно установлен без файла манифеста.
Поскольку манифест — это первое, на что обращают внимание при разработке или анализе модуля, он является основой хорошего модуля.
Важность проявления
- Видимость — отображается (или нет) в приложениях в зависимости от таких полей, как «устанавливаемое» или «приложение».
- Зависимости — список зависимостей указывает Odoo установить определенные модули перед вашим.
- Порядок загрузки и управление данными — например, данные, демонстрационные материалы, ресурсы и т. д., определяют, что загружается и в каком порядке.
- Качество и метаданные — лицензия, версия, сопровождающий, краткое описание и т. д. — все это помогает управлять метатегами.
Общие поля, найденные в файле __manifest__.py
Здесь представлен (относительно полный) список полей, которые вы найдете, с пояснениями их значений, использования и информацией об Odoo 19 (где это возможно). Примечание: В Odoo 19 некоторые новые ключи (особенно касающиеся активов, веб-клиента и т. д.) могут использоваться чаще, но ядро системы не изменилось.
- имя
Видимое название модуля для пользователей, которое будет отображаться в их списке приложений вместе с другими установленными модулями, например, « Улучшения клиентского портала ». Изменение названия, как правило, не меняет функциональность модуля , а только то, как пользователь видит его в списке приложений.
- версия
Номер версии вашего модуля. Общепринятая система нумерации версий: .... Существует также множество модулей, использующих более простые номера версий. Пример полного номера версии может выглядеть так: '19.0.1.0.0'. Этот номер поможет вам отслеживать, когда следует обновить модуль.
- краткое содержание
Краткое описание функций модуля в одну строку. Это поможет пользователю быстро найти ваш модуль в списке приложений.
- описание
Описание модуля, включающее подробное объяснение его функций, возможностей и преимуществ для бизнеса. Для более привлекательного оформления можно использовать многострочную строку.
- категория
Домен компании или папка, к которой относится модуль (например, «Продажи», «Управление персоналом», «Инвентаризация/Склад»). Это помогает пользователям фильтровать модули в списке приложений.
- автор
Имя автора и/или название компании, разработавшей модуль.
- веб-сайт
URL-адрес документации автора/компании, посвященной данному модулю.
- лицензия
Тип лицензии, под которой распространяется модуль (например, 'LGPL-3', 'AGPL-3', 'OPL-1' и т. д.). Для многих модулей по умолчанию используется лицензия LGPL-3.
- зависит от
Список технических названий модулей, от которых зависит ваш модуль. Odoo позаботится об установке этих модулей перед установкой вашего модуля. Например, если вы унаследовали некоторые модели/представления от модуля продаж, вам нужно будет указать здесь название модуля продаж.
- приложение
Указывает, является ли модуль полноценным приложением (True) или техническим дополнением (False), что влияет на его отображение в разделе «Приложения».
- авто_установка
Модуль автоматически устанавливается, если значение равно True, при установке зависимостей. Если задан список, модуль устанавливается после выполнения зависимостей из этого списка.
- последовательность
Используется для упорядочивания модулей/отображения в социальных сетях в приложениях (сначала отображается значение меньшего размера). Последовательность часто необязательна.
- внешние_зависимости
Перечисляет внешние системные/Python-зависимости по ключам ' python ' (список пакетов Python) или ' bin ' (список исполняемых файлов), которые должны существовать в системе до установки модуля репозитория.
- ресурсы
Определяет пакеты ресурсов и списки файлов для модулей, включающих ресурсы веб-интерфейса/бэкенда (JS/CSS). Это особенно актуально в последних версиях Odoo (например, 19).
Пример манифеста для Odoo 19
Ниже приведён пример вашего файла __manifest__.py , чтобы вы могли увидеть в одном месте минимальный модуль Odoo 19 под названием " My Custom Module ":
# -*- coding: utf-8 -*-
{
'name': "My Custom Module",
'version': '19.0.1.0.0',
'summary': "Adds an approval workflow to the sales order process",
'description': """
This module adds an approval workflow to the sales order,
and provides multi-level validation, notification and dashboard.
""",
'category': 'Sales',
'author': "Your Company",
'website': "https://www.yourcompany.com",
'license': 'LGPL-3',
'depends': ['base', 'sale_management', 'mail'],
'data': [
'security/ir.model.access.csv',
'views/sale_order_approval_views.xml',
'data/sale_order_approval_data.xml',
],
'demo': [
'demo/demo_sale_order_approval.xml',
],
'installable': True,
'application': True,
'auto_install': False,
'assets': {
'web.assets_backend': [
'my_custom_module/static/src/js/sale_order_approval.js',
'my_custom_module/static/src/css/sale_order_approval.css',
],
},
}
Заключение
Файл __manifest__.py может показаться тривиальным, поскольку выглядит как простой словарь, но на самом деле он может считаться самым важным файлом вашего пользовательского модуля. Он служит идентификационной картой модуля, справочником зависимостей, руководством по установке и профилем метаданных. В разработке модулей Odoo 19 несколько минут, потраченных на создание чистого, точного и профессионального манифеста, окупятся с лихвой (простота установки, меньше ошибок, лучшая поддержка и лучшая видимость на торговой площадке).