全球排名第一的免费开源ERP Odoo 轻PaaS页面开发技术详解(一)

本文来自《免费开源企业信息化快速开发平台 Odoo开发指南》的第二章精选内容连载。如需免费获取本书,请访问开源智造(OSCG)官网

创建工作数据库

通过前面的学习,我们应该都有一个 PostgreSQL 数据库和 Odoo 服务器供运行了。在开始使用我们的项目前还需要再创建一个 Odoo 数据库。如果您在本地安装 Odoo 并保留了默认设置,则可以通过http://localhost:8069/打开 Odoo。第一次打开时,还没有可用的数据库,此时可以看到一个用于创建数据库的页面:

创建数据库需的信息有:

  • Database Name:数据库的标识名称,在同一台服务器上可以有多个数据库
  • Email:管理员的登录用户名,可以不是 email 地址
  • Password:管理员登录的密码
  • Language:数据库的默认语言
  • Country:数据库中公司数据所使用的国家,这个是可选项,与发票和财务等带有本地化特征的应用中会用到
  • Demo data:勾选此选项会在数据库中创建演示数据,通常在开发和测试环境中可以勾选

如果在 Odoo 的服务端配置中添加了 master password,还会要求输入该密码。这可以阻止未经授权的用户执行相关管理员操作,默认情况下不会设置该密码。 点击 Create database 按钮后,会开始初始化数据库,整个过程可能会需要一到几分钟,结束后会自动登入后台。

登录界面底部有一个 Manage Databases 的链接,点击进入会可以看到当前可用的数据库,可对它们进行备份、复制和删除操作,当然还可以创建新的数据库。直接进入的地址为:http://localhost:8069/web/database/manager

“ 小贴士:数据库管理器可进行一些管理操作,默认开启且没有保护措施。虽然对于开发来说这样非常方便,但即便是在测试或开发环境,对包含有真实数据的数据库都存在安全风险。建议设置一个复杂的管理密码甚至最好是关闭这一功能(在配置文件中设置 list_db = False)”

现在我们已有经了 Odoo 实例和数据库,下一步就是开启开发者模式这个用于实现我们项目的工具。

开启开发者模式

要实现我们的项目,这里需要用到开发者模式所提供的工具。开发者模式使我们可以在用户界面中直接对 Odoo 应用进行自定义操作。这有利于我们快速修改和添加功能,可用于进行一些添加字段的小调整乃至像创建带有多个模型、视图和菜单项的应用这样的复杂自定义开发。

但这种直接在用户界面执行的自定义开发相对于在后续章节讲到的编程工具而言也有其局限性,如它无法添加或扩展默认的 ORM 方法(虽然有时自动化动作足以作为一个替代方案)。它也不易于集成到结构性开发流,如版本控制、自动化测试、部署到多环境(质量测试、预发布和生产环境)。

本文我们主要使用开发者模式来介绍在 Odoo 框架中应用配置是如何组织的、如何在开发者模式下进行简单的自定义和快速列出所要实现方案的框架或原型。进入 Settings > Dashboard, 即可在右侧下方看到Activate the developer mode链接,点击该链接即可开启开发者模式(Odoo 9.0版本及其以前的版本,开发者模式在 User 菜单的 About 对话框窗口中进行开启)。

在该页面我们还会看到一个Activate the developer mode (with assets)的选项,这个用于不对静态文件进行压缩,通常用于调试前端代码,开启后浏览的速度也会略慢。为加快加载速度,客户端中的 JavaScript 和 CSS 文件通常会被压缩。但这也导致我们很难对前端代码进行调试,Activate the developer mode (with assets)选项会把这些静态文件按照独立文件、非压缩的方式进行加载。

我们也可以通过修改当前的 URL 来进入开发者模式,这样就无需进入 Settings 页面,仅需修改链接中的…/web#…为…/web?debug#…或…/web?debug=assets#…,比如修改http:///localhost:8069/web#home为http://localhost_8069/web?debug#home。虽然没有直接的链接来开启前端框架的开发者模式,但也可以通过在前端页面URL上添加?debug=assets 来取消静态文件的压缩, 但需要注意在我们进入其它页面时这个标记可能就会消失。

“ 小贴士:Firefox 和 Chrome均提供开启和取消开发者模式的插件,请在火狐或 Chrome 的应用商店中搜索 Odoo debug 进行安装”

开发者模式一经开启,在菜单中就会增加两个选项:

  • 开发者工具菜单,以调试图标的形式出现在右上角用户名和头像的左侧
  • Settings 中的 Technical 菜单项

开发者模式还会在表单字段上添加一个额外信息:将鼠标悬停在字段上方,就会显示一些相关技术信息。下一部分我们一起来学习相关的开发者模式功能。

为已有模型添加字段

为已有表单添加字段是种常见的自定义操作,我们无需创建自定义模块即可在用户界面中进行实现。就我们 To-do 应用而言,需要可以选取一组用户对 To-do 项进行协作。我们可以通过在 partner 表单中添加标识来找到这些用户,那么接下来为 partner 模型添加一个Is Work Team?标记。

Partner 模型是 Odoo 内核自带的,无需安装任何应用即可使用,但这样在菜单中会无法查看到。一个简单的方法是安装 Contacts 应用。没安装的朋友可以点击 Apps 菜单搜索该应用并进行安装:

安装完成后即可在顶级菜单中找到 Contacts 项。

为模型添加字段

开启开发者模式后,我们可通过菜单Settings > Technical > Database Structure > Models 来查看模型的定义。这时搜索 res.partner(未安装其它应用的情况下第一个即是),对应的模型描述为 Contact。点击打开表单视图,这时就可以看到 partner 模型的各类信息,包含字段列表:

点击 Edit,然后在字段列表的最下端点击 Add a line,即会弹出窗口用于创建新字段,输入:

  • Field Name: x_is_work_team
  • Field Label: Is Work Team?
  • Field Type: Boolean

字段名(Field Name)必须以 x_开头,这是在用户界面创建模型和字段强制要求的(否则保存时会提示Custom fields must have a name that starts with ‘x_’ !),通过插件模块的自定义开发不受这一限制。只修改添加以上信息点击Save & Close保存即可。 这个模型有80多个字段(如未安装 Contacts 仅50多个字段),我们需要通过右上角的向右箭头浏览到最后一页才能看到新创建的字段。这时再点击左上角的 Save 按钮进行最终的保存。

为表单视图添加字段

我们已经为 partner 模型创建了新字段,但对用户仍不可见,要实现这点我们还要在相应的视图中进行添加操作。再回到前述的 res.partner模型详情页,点击 Views 标签,我们就可以看到模块的各个 view 定义。正如所见,每个视图都是一条数据库记录,修改或添加视图记录即时生效,在下一次加载视图时即可见:

视图列表中有一些需要注意的事项,我们看到有不同的视图类型(View Type),如表单视图(Form)、树状列表视图(Tree)、搜索视图(Search)和看板视图(Kanban)。搜索视图指的是右上角搜索框中的过滤选项。其它视图的数据展示方法也各不相同,基本的类型有列表视图和表单视图(用于查看详细信息)。

“ 小贴士:树状视图(Tree) 和 列表视图(List) 实为同一视图,实际上Odoo 中的为列表视图,树状视图的名称是由历史原因产生的 – 过去列表视图是以树状层级结构来进行展示的。”

可以看到同一视图类型存在多个定义,通过 View Type 进行排序可以更清晰地看出。每种视图类型(如表单视图)可以有一个或多个base视图定义(包含空的继承视图字段)。菜单项使用窗口动作(Window Action)可以指定要用到的base视图,如果没有定义,将使用排序值(Sequence)最低的,因而可将其视为默认视图。 点击视图,可以在表单中看到包含排序值在内的所有详情:

每个base视图都可以有多个扩展,称为继承视图。每个继承视图可以对base视图添加修改,如对已有表单添加字段。

“ 小贴士:继承视图自身也可以被其它视图继承,这时最外层继承在内层继承执行后作用于base视图。”

res.partner 模型会包含众多的视图定义,因为类似我们的很多应用都需要对其进行扩展。一个替代方法是进入我们需要扩展的某一具体视图,使用开发者工具菜单对其进行编辑。这也可用于了解某一视图在用户界面的某处被使用了。下面我们就来进行操作:

1. 点击 Contacts 应用显示联系人名片列表,然后点击任意名片进入相应的表单视图:

2. 在表单视图界面,点击开发者工具菜单(右上角调试图标)并选择编辑视图(Edit View:Form),这时可以看到与前述模型页面相同的视图详情表单,但展示在实际定义使用base视图之上。也就是res.partner.form视图,通过External ID可以查看模块所有者。本处为base.view_partner_form,所以我们知道这个视图属于base模块。在Architecture字段中,我们可以看到base视图定义的 XML 代码。我们可以在这里编辑视图结构并添加我们的新字段,但从长期看这不是一个好办法:这个视图属于一个插件模块,一旦模块被更新,自定义的代码就会被覆盖并丢失。修改视图的正确姿势为创建一个继承视图(Inherited Views)扩展:

4. 使用继承视图标签我们可以为 base 视图添加扩展视图:

  • 首先我们需要在原始视图选择一个元素作为扩展点,我们可以通过查看 base视图的结构选择一个包含 name 属性的 XML 元素,大多数情况选择的是一个<field>元素,此处我们选择<field name=”category_id”…>元素:

  • 现在,点击开发者工具菜单,然后点击编辑视图(Edit View:Form),选择继承视图(Inherited Views)标签回到前述的界面,然后点击最下方的 Add a line链接

  • 此时会弹出名为Create Views which inherit from this one的窗口,填入如下内容

View Name: Contacts – Custom “Is Work Team” flag

Architecture:输入如下 XML代码

<field name="category_id" position="after">
<field name="x_is_work_team" />
</field>

其它重要字段,如 Model, View Type 和 Inherited View 使用默认值即可

此时点击 Save & Close按钮,然后在Edit View: Form 窗口点击Save按钮

在保存修改后重载联系人表单视图页面即可查看到变化,在大数浏览器中可以使用 F5快捷键来重载页面。这时打开任意联系人名片,可以看到右侧 Tags 字段下会多出一个新字段:

来源:开源智造(OSCG) - 源自欧洲,业界领先的免费开源ERP Odoo金牌服务机构

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();