odoo关于菜单及记录规则中“非”计算的改造

Posted 老韩头的开发日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了odoo关于菜单及记录规则中“非”计算的改造相关的知识,希望对你有一定的参考价值。

老韩头的开发日常【好书学习】系列

随笔,随便写写

权限的三种管理:或、与、非

做过odoo二开的人都了解,在odoo中,权限是跟着权限组走的。

全局的记录规则是以“与”的关系进行计算的,需同时满足才可以。

而非全局的权限,是以“或”的规则进行累加的。因此,如果我们需要的权限大于某个官方基础模块的权限组时,我们可以通过新建一个权限组,然后给这个新的权限组赋予缺少的权限即可。这就是我们所说的“或”。但,如果我们需要的权限正好是小于某个权限组呢,难道要新建一个组,并完整拷贝已知最接近权限组A的权限后去除多余的权限吗?这并不是一个明智的决定。
划重点
以“完整拷贝已知最接近权限组A的权限后去除多余的权限”的方式创建新的权限组,也就以为着该场景下用户只能是我们新建的权限组。但是如果后续的二开模块中,由其他的开发人员新建了某个模型,并将该模型的CURD权限授予权限组A,并对响应的视图进行了扩展。那么,属于我们新建权限组的用户,就没有办法使用最新的功能了。

那么针对上面的场景,目前我能想到的最优的解决方案是扩展“非”的逻辑。见下图

一般情况下,我们照常赋予目标用户权限A的角色,同时新建一个权限组,并在禁用菜单禁用记录,中勾选希望去除的记录。
比如,我们授予了用户“销售”模块下“仅自己单据”的角色,但又不希望用户看到销售人员为空的单据,那么我们就可以禁用如下的记录规则。

菜单和记录规则的禁用,分别在ir_ui_menu.py(_visible_menu_ids)和ir_rule.py(_get_rules)中。

本文来自博客园,作者:老韩头的开发日常,转载请注明原文链接:https://www.cnblogs.com/xushuotec/p/15758177.html

以上是关于odoo关于菜单及记录规则中“非”计算的改造的主要内容,如果未能解决你的问题,请参考以下文章

在 Odoo 13 的 one2many 关系中显示非活动记录

Odoo权限设置机制

星辉信息科技Odoo开发教程6-配置安全权限控制02

Odoo 打印报表定制方法

Odoo8中“更多”下拉菜单选项指定后台执行代码

关于odoo tree 视图 数值类型的列值 的统计