odoo17 | 创建一个新应用程序

前言

本章的目的是为创建一个全新的Odoo模块奠定基础。 我们将从头开始,以使我们的模块被Odoo识别所需的最低限度。 在接下来的章节中,我们将逐步添加功能以构建一个真实的业务案例。

教程

假设我门需要在odoo上开发一个新app模块例如房地产广告模块。本节的目标是让Odoo识别我们的新模块,这将暂时是一个空壳。它将在应用程序中列出。
在这里插入图片描述

  • 首先需要在项目的根目录下新建一个custom_addons(名字可以更具自己的喜好命令)文件夹,用来存放我们接下开发的一些模块代码。odoo系统自带的模块代码都在根目录的addons文件夹下。虽然我们也可以把新开发的模块代码放在addons文件夹下,当时为了区分自己开发的和系统自带的模块我们最好还是新建一个文件夹来存放我们自己开发的模块。
  • 接下来修改odoo.config配置文件中的addons_path参数为 addons_path = addons,custom_addons
  • 然后在custom_addons文件夹下创建一个estate模块文件夹,以后用来放房地产广告模块的代码。
  • 一个模块必须至少包含 2 个文件:__manifest__.py(清单文件)和 __init__.py。 __init__.py文件现在可以保持为空,我们将在下一章中回到它。另一方面,__manifest__.py文件必须描述我们的模块,并且不能保持空。它唯一必需的字段是名称,但它通常包含更多信息。

__manifest__.py(清单)

清单文件用于将 python 包声明为 Odoo 模块 并指定模块元数据。

它是一个名为并包含单个 Python 的文件 字典,其中每个键指定模块元。manifest.py

{'name': "Real Estate",'version': '1.0','depends': ['base'],'author': "Author Name",'category': 'Category','description': """房地产广告模块""",# data files always loaded at installation'data': [#'views/mymodule_view.xml',],# data files containing optionally loaded demonstration data'demo': [#'demo/demo_data.xml',],
}

该文件应该只定义模块的名称和依赖项。 目前唯一需要的框架模块是 .manifest.py base。

可用的清单字段包括:

name (str,必填)
模块的人类可读名称

version (str)
此模块的版本应遵循语义版本控制规则

description (str)
模块的扩展说明,在 reStructuredText 中

author (str)
模块作者的姓名

website (str)
模块作者的网站 URL

license (str, defaults: LGPL-3)
模块的分发许可证。 可能的值:

  • GPL-2
  • GPL-2 or any later version
  • GPL-3
  • GPL-3 or any later version
  • AGPL-3
  • LGPL-3
  • Other OSI approved licence
  • OEEL-1(Odoo企业版许可证v1.0)
  • OPL-1(Odoo 专有许可证 v1.0)
  • Other proprietary

category (str, default: Uncategorized)
Odoo中的分类类别,模块的粗略业务领域。

尽管建议使用现有类别,但该字段是 自由格式和未知类别是即时创建的。类别 可以使用分隔符创建层次结构,例如 将创建一个类别,一个类别作为子类别,并将设置为模块的类别。/Foo / BarFooBarFooBar

depends (list(str))
Odoo模块必须在此之前加载,因为 模块使用他们创建的功能,或者因为它改变了他们 定义。

安装模块时,其所有依赖项都将在安装之前安装 它。同样,依赖项在加载模块之前加载。

注意
模块base 总是安装在任何Odoo实例中。但是,您仍然需要将其指定为依赖项,以确保在base更新时更新模块。

data (list(str))
必须始终使用 模块。模块根目录中的路径列表

demo (list(str))
仅在演示中安装或更新的数据文件列表 模式

auto_install (bool or list(str), default: False)
如果 ,此模块将自动安装,如果其所有 已安装依赖项。True

一般用于实现协同集成的“链接模块” 在两个其他独立的模块之间。

例如,依赖于 和 和 被设置 自。当两者都安装时,它 自动将CRM活动跟踪添加到销售订单中,而无需相互了解。sale_crmsalecrmauto_installsalecrmsalecrm

如果它是一个列表,它必须包含依赖项的子集。该模块将自动 一旦安装了子集中的所有依赖项,就会安装。其余的 依赖项也将自动安装。如果列表为空,则此模块将 无论其依赖项如何,始终自动安装,这些将作为 井。

external_dependencies (dict(key=list(str)))
包含 python 和/或二进制依赖项的字典。

对于 python 依赖项,必须为此定义密钥 应分配字典和要导入的 Python 模块列表 到它。python

对于二进制依赖项,必须为此定义密钥 应为其分配字典和二进制可执行文件名称列表。bin

如果未安装 python 模块,则不会安装该模块 或在主机中找不到二进制可执行文件 主机的 PATH 环境变量。

application (bool, default: False)
是否应将该模块视为一个成熟的应用程序 () 或者只是一个技术模块 (),它提供了一些 现有应用程序模块的额外功能。TrueFalse

assets (dict)
定义如何在各种资产包中加载所有静态文件。 有关如何操作的更多详细信息,请参阅资产页面 描述捆绑包。

installable (bool default: True)
用户是否应该能够从 Web UI 安装模块。

maintainer (str)
默认情况下,负责维护此模块的个人或实体 假设作者是维护者。

{pre_init, post_init, uninstall}_hook (str)
用于模块安装/卸载的钩子,其值应为 字符串表示在模块的 .init.py

-pre_init_hook将游标作为其唯一参数,此函数是 在模块安装之前执行。

-post_init_hook将游标和注册表作为其参数,这 函数在模块安装后立即执行。

-uninstall_hook将游标和注册表作为其参数,这 函数在模块卸载后执行。

仅当此模块需要设置/清理时,才应使用这些挂钩 通过 API 要么非常困难,要么是不可能的。

active (bool)
弃用。由auto_install取代。

重新启动Odoo

重新启动Odoo服务器并转到应用程序。 单击“更新应用程序列表”,
在这里插入图片描述
搜索estate模块,estate房地产广告模块出现了!如果它没有出现吗?也许尝试删除默认的“应用程序”过滤器。
在这里插入图片描述

  • **警告:**请记住启用开发人员模式,否则,您将不会看到“更新应用列表”按钮。

如果你想要将estate房地产模块变成一个应用程序app,只需要修改__manifest__.py清单文件中添加以下配置,重启服务后,再次点击更新应用程序列表即可。

'application': True,

使您的模块成为“应用程序”。

您甚至可以安装启用该模块!但显然它是一个空壳,所以不会出现菜单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/228718.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp Vue3 日历 可签到 跳转

上干货 <template><view class"zong"><view><view class"top"><!-- 上个月 --><view class"sgy" click"sgy">◀</view><view class"nianyue">{{ year }}年{{ month 1 }}…

MD5算法

一、引言 MD5&#xff08;Message-Digest Algorithm 5&#xff09;是一种广泛应用的密码散列算法&#xff0c;由Ronald L. Rivest于1991年提出。MD5算法主要用于对任意长度的消息进行加密&#xff0c;将消息压缩成固定长度的摘要&#xff08;通常为128位&#xff09;。在密码学…

右键菜单“以notepad++打开”,在windows文件管理器中

notepad 添加到文件管理器的右键菜单中 找到安装包&#xff0c;重新安装一般即可。 这里有最新版&#xff1a;地址 密码:f0f1 方法 在安装的时候勾选 “Context Menu Entry” 即可 Notepad的右击打开文件功能 默认已勾选 其作用是添加右键快捷键。即&#xff0c;对于任何…

黑马程序员SSM框架-SpringBoot

视频连接&#xff1a;SpringBoot-01-SpringBoot工程入门案例开发步骤_哔哩哔哩_bilibili SpringBoot简介 入门程序 也可以基于官网创建项目。 SpringBoot项目快速启动 下面的插件将项目运行所需的依赖jar包全部加入到了最终运行的jar包中&#xff0c;并将入口程序指定。 Spri…

2023/12/30 c++ work

定义一个Person类&#xff0c;私有成员int age&#xff0c;string &name&#xff0c;定义一个Stu类&#xff0c;包含私有成员double *score&#xff0c;写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数&#xff0c;完成对Person的运算符重载(算术运算符、条件运算…

JavaScript 工具库 | PrefixFree给CSS自动添加浏览器前缀

新版的CSS拥有多个新属性&#xff0c;而标准有没有统一&#xff0c;有的浏览器厂商为了吸引更多的开发者和用户&#xff0c;已经加入了最新的CSS属性支持&#xff0c;这其中包含了很多炫酷的功能&#xff0c;但是我们在使用的时候&#xff0c;不得不在属性前面添加这些浏览器的…

lv14 注册字符设备 3

1 注册字符设备 1.1 结构体介绍 struct cdev {struct kobject kobj;//表示该类型实体是一种内核对象struct module *owner;//填THIS_MODULE&#xff0c;表示该字符设备从属于哪个内核模块const struct file_operations *ops;//指向空间存放着针对该设备的各种操作函数地址str…

VMware安装RHEL9.0版本Linux系统

最近在学习Linux&#xff0c;安装了Red Hat Enterprise Linux 的 9.0版本&#xff0c;简称RHEL9.0。RHEL9.0是Red Hat公司发布的面向企业用户的Linux操作系统的最新版本。我把它安装在虚拟机VMware里来减少电脑性能占用&#xff0c;也防止系统炸搞得我后面要重装。安装RHEL9.0还…

2023海内外零知识证明学习资料汇总(二)(深入理解零知识证明篇)

工欲善其事,必先利其器 Web3开发中&#xff0c;各种工具、教程、社区、语言框架.。。。 种类繁多&#xff0c;是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役&#xff1f; 参见另一篇博文&#x1f449; 2024最全面且有知识深度的web3开发工具、web3学习项目…

Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)

1、问题概述&#xff1f; Springboot对Thymeleaf支持的要更好一些&#xff0c;Springboot内嵌的Tomcat默认是没有JSP引擎&#xff0c;不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。 2、Springboot整合使用JSP过程 现在很多的IDEA版本即使创建的项目类型是WAR工…

中科亿海微UART协议

引言 在现代数字系统设计中&#xff0c;通信是一个至关重要的方面。而UART&#xff08;通用异步接收器/发送器&#xff09;协议作为一种常见的串行通信协议&#xff0c;被广泛应用于各种数字系统中。FPGA&#xff08;现场可编程门阵列&#xff09;作为一种灵活可编程的硬件平台…

王道考研计算机网络——应用层

如何为用户提供服务&#xff1f; CS/P2P 提高域名解析的速度&#xff1a;local name server高速缓存&#xff1a;直接地址映射/低级的域名服务器的地址 本机也有告诉缓存&#xff1a;本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库&#xff0c;放到本地的高…

Python编程新技能:如何优雅地实现水仙花数?

水仙花数&#xff08;Narcissistic number&#xff09;也被称为阿姆斯特朗数&#xff08;Armstrong number&#xff09;或自恋数等&#xff0c;它是一个非负整数&#xff0c;其特性是该数的每个位上的数字的n次幂之和等于它本身&#xff0c;其中n是该数的位数。简单来说&#x…

【HarmonyOS开发】案例-记账本开发

OpenHarmony最近一段时间&#xff0c;简直火的一塌糊度&#xff0c;学习OpenHarmony相关的技术栈也有一段时间了&#xff0c;做个记账本小应用&#xff0c;将所学知识点融合记录一下。 1、记账本涉及知识点 基础组件&#xff08;Button、Select、Text、Span、Divider、Image&am…

SpringCloud(H版alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)

源码地址&#xff1a;https://gitee.com/jackXUYY/springboot-example 创建订单服务&#xff0c;支付服务&#xff0c;公共api服务&#xff08;共用的实体&#xff09;&#xff0c;eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.…

数据结构:队列(链表和数组模拟实现)

目录 1.何为队列 2.链表模拟实现 2.1 节点和队列创建 2.2 初始化队列 2.3 入队操作 2.4 出队操作 2.5 遍历队列 2.6 获取队首和队尾元素 2.7 判断队列是否为空 2.8 完整实现 3. 数组模拟实现 3.1 创建队列 3.2 入队和出队操作 3.3 遍历队列 3.4 获取队首和队尾元…

构建安全的SSH服务体系

1、配置OpenSSH服务端 在CentOS7.3系统中&#xff0c;OpenSSH服务由openssh、openssh-server等软件包提供&#xff08;默认已安装&#xff09;&#xff0c;并已将sshd添加为标准的系统服务。执行"systemctl start sshd"命令即可启动sshd服务。ssh服务的配置文件默认位…

初识SpringBoot(2023最后一篇文章)

初识SpringBoot 1、SpringBoot概述 Spring是什么&#xff1f; Spring是一个于2003 年兴起的一个轻量级开源Java开发框架&#xff0c;由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;使…

探索工业智能检测,基于轻量级YOLOv8开发构建焊接缺陷检测识别系统

焊接缺陷相关的开发实践在前面的博文中已经有所涉及了&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a;《探索工业智能检测&#xff0c;基于轻量级YOLOv5s开发构建焊接缺陷检测识别系统》 将智能模型应用和工业等领域结合起来是有不错市场前景的&#xff0c;比如&…

001、安装 Rust

目录 1. 安装 Rust 2. 安装编译器 Visual Studio Code 3. 更新、卸载、文档命令 4. 结语 1. 安装 Rust 安装 Rust 非常简单&#xff0c;首先进入 Rust官网 &#xff0c;然后点击右上角的 Install 。 进入 Install 界面&#xff0c; 它会自动识别你当前的操作系统并给你推荐…