欢迎转载,但需标注出处,谢谢!

说明: 本文面向开发人员,普通用户可参考【odoo14】【用户侧】权限配置。文章结构与用户侧一致。

一、 odoo中的对象

菜单、视图、访问权限(对应 模型)、记录规则(对应 模型记录)

二、 权限控制

总的来说,odoo中的权限控制颗粒度还是非常细的。最小可以到模型中的某个具体的字段,以及在odoo系统中的每一条记录。

2.1 实现原理

以上提到的所有的对象,都是以权限组为最小单位进行控制的。有点类似于库存中商品与变体的感觉。

2.2 代码方式实现权限控制

以下内容以account模块为例

  1. 新建权限组所属类型,可添加到现有类别。一般情况是一个模块一个类别做,该模块所属的权限组属于该模块的类别中。
<record model="ir.module.category" id="base.module_category_accounting_accounting">
<field name="description">Helps you handle your accounting needs, if you are not an accountant, we suggest you to install only the Invoicing.</field>
<field name="sequence">7</field>
</record>
  1. 新建权限组
<record id="group_show_line_subtotals_tax_included" model="res.groups">
<field name="name">Tax display B2C</field>
<field name="comment">Show line subtotals with taxes included (B2C)</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>

权限组中设计的核心字段介绍

  • category_id:当前权限组所属的类别
  • name:权限组名称
  • implied_ids:继承的其他群组,数据当前群组的用户将添加为所继承群组的用户
  • users:属于当前群组的用户

说明

implied_ids及users字段在初始化的时候遵循一对多、多对多的数据更新策略。

  1. 我们在新建菜单的时候,可将该菜单配置为特定组可见。
<menuitem id="menu_board_journal_1" name="Dashboard" action="open_account_journal_dashboard_kanban" groups="account.group_account_readonly" sequence="1"/>
  1. 视图,对groups添加初始值
<record id="analytic_rule_action_user" model="ir.actions.act_window">
<field name="name">Analytic Rules</field>
<field name="res_model">account.analytic.default</field>
<field name="context">{'search_default_user_id': [active_id], 'default_user_id': active_id}</field>
<field name="binding_model_id" ref="base.model_res_users"/>
<field name="binding_view_types">form</field>
<field name="groups_id" eval="[(4, ref('analytic.group_analytic_accounting'))]"/>
</record>
  1. 访问权限,对groups添加初始值
 <record id="account_move_rule_group_readonly" model="ir.rule">
<field name="name">Readonly Move</field>
<field name="model_id" ref="model_account_move"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('account.group_account_readonly'))]"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
  1. 模型字段的控制
invoice_payments_widget = fields.Text(groups="account.group_account_invoice,account.group_account_readonly",
compute='_compute_payments_widget_reconciled_info')

综上,其实在实际使用中,通过代码层面去实现权限的控制相对于UI操作而言,更简单。且具有移植性。

【odoo14】【开发侧】权限配置的更多相关文章

  1. odoo权限配置讲解2

    今天我们在来讲解一下odoo中配合使用公司开发的权限配置模块,简单配置odoo权限的操作说明 接着上篇讲到的,昨天我们只是做了一个简单的表单模型的筛选规则 今天来讲解一下如何在创建内贸报价单的时候,在 ...

  2. HTML5 开发APP( 环境配置)

    上一篇我写了关于新建项目,这一篇说一下配置环境我们新建一个移动app后,会发现一个mainifest.json文件,开发app所要配置的环境就在这个文件里 点击打开文件后会有配置界面,在配置界面的下方 ...

  3. Linux 账号管理与 ACL 权限配置

    要登陆 Linux 系统一定要有账号与口令才行,否则怎么登陆,您说是吧?不过, 不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限配置, 来规范出不同的群组开发项 ...

  4. app ios info权限配置:

    info权限配置: Privacy - Bluetooth Peripheral Usage Description --> App需要您的同意,才能访问蓝牙 Privacy - Calenda ...

  5. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

  6. 第十四章、Linux 账号管理与 ACL 权限配置

    1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...

  7. Linux下SVN部署/安全及权限配置,实现web同步更新

    转自:http://www.cnblogs.com/me115/archive/2013/04/07/3002058.html 本文包含以下内容: SVN服务器安装 SVN权限管理 SVN使用SASL ...

  8. SVN 权限配置详解

    SVN权限详细配置 本章将详细介绍SVN权限配置涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内 ...

  9. Android应用的权限配置和权限列表

    权限配置写在Mainifest.xml文件中: <?xml version="1.0" encoding="utf-8"?> <manifes ...

随机推荐

  1. MindSpore保存与加载模型

    技术背景 近几年在机器学习和传统搜索算法的结合中,逐渐发展出了一种Search To Optimization的思维,旨在通过构造一个特定的机器学习模型,来替代传统算法中的搜索过程,进而加速经典图论等 ...

  2. [Python] execl读写

    相关库 读:xlrd 写:xlwt 案例 要求: 将图1中的数据导以图2的形式写入另一个文件中 第一列索引关系:{1:K1-B1,2:K1-B2} ...(18列) 思路: 按行读取数据,根据索引关系 ...

  3. [bug] C++:[Error] name lookup of 'i' changed for ISO '

    错误原因:变量i只在for循环中可见,若在循环外使用需要单独定义 1 #include <iostream> 2 using namespace std; 3 4 int main(){ ...

  4. 解决SecureCRTPortable和SecureFXPortable的中文乱码问题

    我们使用客户端连接Linux服务器时会出现中文乱码的问题,解决方法如下: 一.修改SecureCRTPortable的相关配置 步骤一:[选项]->[全局选项] 步骤二:[常规]->[默认 ...

  5. linux进阶之gitlab仓库搭建及免密使用

    一.Gitlab简介 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...

  6. IDEA 怎么统计项目代码行数

    引言 IDEA 统计项目代码行数,主要是使用 Statistic 插件来统计 第一步 点击 File->Settings,如下图所示: 第二步 点击 install 安装 Statistic 插 ...

  7. pre -regulator 前端稳压器

    regulator

  8. 思考一个问题STM32的

    如果一个定时中断刚刚进入中断服务函数 但是服务函数执行时间太长   又一次触发了中断 会怎样

  9. 性能调优必备:NIO的优化实现原理

    前言 我们就从底层的网络 I/O 模型优化出发,再到内存拷贝优化和线程模型优化,深入分析下 Tomcat.Netty 等通信框架是如何通过优化 I/O 来提高系统性能的. 网络 I/O 模型优化 网络 ...

  10. Spring Boot - 自定义 Banner 图案

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 前言 ...