Windows上的Odoo想要使用scaffold创建app,就是要稍微看着啰嗦了,在unix上可以odoo-bin 这样的方式,但Windows得这样:
"<Path_to_python.exe in the Odoo folder>" "<Path_to_odoo-bin>" scaffold "<Path_to_addons_folder>"
比如创建一个cate的模块:
"c:\Program Files (x86)\Odoo 13.0\python\python.exe" "C:\Program Files (x86)\Odoo 13.0\server\odoo-bin" scaffold cate "C:\Program Files (x86)\Odoo 13.0\server\odoo\addons"
输出结果:
$ tree
.
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ └── ir.model.access.csv
└── views
├── templates.xml
└── views.xml
介绍如下:
__mainifest__.py 文件是 addon 的基本信息文件,例如这个 addon 的名称、描述、作者和网站链接等等,这些信息会展现在 addons 的「安装界面」。
controllers用于编写 web 控制器。
demo存放 addon 安装后初始化的 demo 数据的目录。
models用于编写 ORM 数据模型。
security存放权限定义文件的目录。
views存放 addon 的视图的定义文件。
从目录结构可以看出,Odoo 也是标准的 MVC 模式,创建好了应用,接下来我们看看这个应用该如何安装。
激活开发者模式
点击「设置」到设置页面并点击「激活开发者模式」,再次回到应用页面后就可以看到「刷新本地模块列表」了。
然后还需要「刷新本地模块列表」
刷新本地模块列表后,我们再次搜索,发现依然没有搜索到hello,原因是搜索框中的「应用」过滤把我们的应用给过滤掉了,点击「应用」的「x」将搜索过滤去掉后就可以看到我们的应用了。
但搜索框中将 hello 标志为了模块,为了将 hello 修改为应用,需要修改 mainifest.py 文件。
在 mainifest.py 文件中的字典增加 application 并设为 True。
{
'name': "hello",
'application': True,
# ...
}
注意,True的第一字母是大写的。
再次点击 「刷新本地模块列表」后,搜索后可以看到 Hello 已经被修改为应用了。现在还什么菜单也看不到。但是你可以看到应用并且可以安装了。
了解应用和模块
我们经常听到Odoo模块和应用程序,但是它们之间到底有什么区别呢?
模块插件是Odoo应用程序的构建模块,一个模块可以为Odoo添加新的功能,也可以修改现有的功能,它是一个包含了一个名为__manifest__.py的描述符文件,再加上实现其功能的其余文件。
应用程序是将主要功能添加到Odoo的方式,它们提供了一个功能区的核心元素,比如Accouting或HR,在此基础上,附加的附加模块会修改或扩展功能。
如果你的模块很复杂,并且在Odoo中增加了新的或主要的功能,你可能会考虑将其创建为一个应用程序。
一个模块是否是一个应用程序是在清单中定义的,技术上对现在的附加模块的行为没有任何特别的影响,它只是在App列表中用于高亮显示。
添加到附加组件路径
现在,我们有了一个模拟的新模块,我们要把它提供给Odoo实例。
为此,我们需要确保包含模块的目录在add-ons路径中。 然后更新odoo模块列表。
我们将定位在工作目录下,然后用适当的附加组件路径配置启动服务器。
cd ~/odoo-dev ./odoo/odoo-bin -d todo --addons-path="custom-addons,odoo/addons" --save
保存选项是将你使用的选项保存在配置文件中,这样可以避免我们每次重启服务器时重复使用这些选项:只要运行./odoo-bin,最后保存的选项就会被使用。
仔细看一下服务器日志,它应该有一个INFO?odoo:addons path:[...]行,它应该包括我们的自定义addons目录。
记住,还应该包括你可能正在使用的任何其他add-ons目录。 如果你有一个 ~/odoo-dev/extra 目录,其中包含 额外的模块,你可能想把它们也包括进来,使用选项。
--addons-path="custom-addons,extra,odoo/addons"
现在我们需要Odoo确认我们刚刚添加的新模块。
安装新模块