模块清单文件¶
清单文件¶
清单文件用于将 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)此模块的版本,应遵循 semantic versioning 规则
description(str)模块的扩展描述,使用 reStructuredText 格式
author(str)模块作者的名称
website(str)模块作者的网站 URL
license(str,默认值:LGPL-3)模块的分发许可证。可选值:
GPL-2GPL-2 或任何更高版本
GPL-3GPL-3 或任何更高版本
AGPL-3LGPL-3其他经 OSI 认可的许可证
OEEL-1(Odoo 企业版许可证 v1.0)
OPL-1(Odoo 专有许可证 v1.0)
其他专有许可证
category(str,默认值:Uncategorized)Odoo 中的分类类别,表示模块所属的大致业务领域。
虽然推荐使用 existing categories,但该字段是自由格式的,未知类别会被即时创建。可以使用分隔符
/创建类别层级,例如Foo / Bar会创建一个类别Foo、一个作为Foo子类别的类别Bar,并将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)定义所有静态文件如何在各类资源包中加载。有关如何描述资源包的更多详情,请参阅 资源包 页面。
installable(bool,默认值:True)用户是否能够从 Web 界面安装该模块。
maintainer(str)负责维护此模块的个人或实体,默认情况下假定作者就是维护者。
{pre_init, post_init, uninstall}_hook(str)模块安装/卸载的钩子,其值应为字符串,表示模块
__init__.py中定义的函数名称。pre_init_hook只接受一个 env 作为参数,该函数在模块安装之前执行。post_init_hook只接受一个 env 作为参数,该函数在模块安装完成后立即执行。uninstall_hook只接受一个 env 作为参数,该函数在模块卸载之后执行。仅当本模块所需的设置/清理工作通过 API 极难完成或无法完成时,才应使用这些钩子。
sequence(int)您的模块在“应用”模块列表中的显示位置。数字越小,模块在列表中的位置越靠上。默认设置为
100。active(bool)已弃用。由
auto_install取代。