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

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

创建新的模型(Model)

模型是应用的基本组件,包含了所需使用到的数据结构和存储。接下来我们就为 To-do 项目添加模型,将包含三个字段:

  • Description
  • Is done? 标记
  • Work team 用户列表

如前所述,通过菜单Settings > Technical > Database Structure > Models可进入模型创建页面,步骤如下:

1、 进入模型菜单,点击左上角 Create 按钮,在弹出页面填入:

  • Model Description: To-do Item
  • Model: x_todo_item

在进一步添加字段之前可以先进行保存。

2、 点击 Save 保存然后点击 Edit 再次进入编辑,可以看到 Odoo 自动添加了一些字段,ORM在所有模型中添加了这些字段,可用于审计和记录功能。

x_name (或Name)字段是在列表中显示记录或其它记录中引用时显示的标题。在 To-do Item标题中将使用它,还可以对其进行编辑将字段标签改为更能表达含义的描述。基于前面的知识添加 Is Done? 标记此时就显得非常容易了。

3、 在字段列表页底部点击 Add a line 链接创建一个包含如下值的字段:

  • Field Name: x_is_done
  • Field Label: Is Done?
  • Field Type: boolean

该字段的填写效果如下:

接下来添加 Work Team 字段就带有挑战性了,不仅因为这是一个指向 res.partner 对应记录的关联字段,它还是一个包含多个值的 selection 字段。在很多框架中这都会颇为复杂,但所幸我们使用的是 Odoo,因为它支持 many-to-many 关联。任务清单应用属于这一情况,因为一条任务可以有多个用户,同时一个用户也可以参与多个任务。

4、 再次在字段列表中点击 Add a line,添加一个包含如下值的字段:

  • Field Name: x_work_team_ids
  • Field Label: Work Team
  • Field Type: many2many
  • Object Relation: res.partner
  • Domain: [(‘x_is_work_team’, ‘=’, True)]

many-to-many字段有其独有的定义项-Relation Table, Column 1, and Column 2项,这些值会被自动填充,大多数情况下都无需修改。在第六章模型中将会有更详细的探讨。 Domain 项为非必填项,这里使用到是因为只有符合条件的用户才可被选取加入工作组,如果不加这项则所有用户均可被选取。

Domain 表达式中对展示的记录进行了过滤,它遵循Odoo 独有的语法 – 一个包含三个值的元组(补充:经测试使用列表也同样可以),第一项为待过滤的字段名、第二项为过滤操作符、第三项为过滤作用的值。详细的解释参见第七章使用模型数据。

“ 小贴士:Odoo有一个交互式的 domain 过滤向导可帮助生成 domain 表达式。访问Settings > Technical > User Interface > User-defined Filters,点击 Create选择模型后将会出现 Add filter 按钮,可通过选择字段在下方的文本框中实时生成 domain 表达式。”

现在我们已经为 To-do应用创建好了模型,但还无法使用它,在创建模型后,我们需要配置组来使用该模型。

配置安全权限控制

Odoo自带有权限控制机制,用户仅能使用被授权了的功能。这就意味着我们自建的库功能不对普通用户甚至是管理员开放。

“ 注意:Odoo 12的修改

管理员用户现在也像其它用户一样受权限控制所限制。在此前的 Odoo 版本中,admin 都作为特权用户不受权限规则控制。而新版中我们需要进行授权管理员才能访问模型数据。”

Odoo 安全权限通过安全组来设置访问权限。每个用户的权限根据所属组来决定,对于我们的测试项目,我们将创建一个 to-do 用户组,然后通过组来分配可使用功能的用户。我们通常使用 ACL 为某个组赋予指定模块的读或写权限,就当前项目,我们对添加的 to-do 项模型添加读和写权限。

此外,我们还可以设置用户对指定模型的记录范围的访问规则。本项目中 to-do 项为用户私有,所以用户仅能访问自己创建的记录,这通过安全记录规则实现。

安全组

访问控制基于组,通过安全组对模型设置权限,控制组内用户所能使用的菜单项。要做更精细化的控制,我们可以对指定菜单项、视图、字段甚至是(带有记录规则的)数据记录进行权限控制。

安全组还可以对应用进行管理,通常每个应用有两个组:用户组(Users)可执行日常操作、管理员组(Manager)可对应用执行所有配置。

下面我们新建一个安全组,在菜单中访问Settings > Users & Companies > Groups。点击 Create通过如下值创建一条新记录:

  • Application: 留空
  • Name: To-do User
  • Inherited 标签下: 添加User types / Internal User项

效果如下:

在 Application 下拉列表中还没有to-do 应用,所以我们直接通过组表单来添加。我们还继承了 Internal User 用户组,那么这个组的成员也会自动(递归)成为所继承组的成员,以获取他们原有的权限。Internal User 是基础权限组,通常应用的安全组都继承它。

“ 注意:Odoo 12的修改

在 Odoo 12之前,内部用户组称作雇员(Employee),这只是表面上的修改,代码中标识符(XML id)仍然和此前版本相同:base.group_user。”

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

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

相关文章

推荐文章

'); })();