# Odoo14 groups && rule

# admin账户以及权限的来源:
# admin创建代码在:odoo/odoo/addons/base/data/res_users_data.xml中
<data noupdate="1">
<!-- user 1 is the technical admin user -->
<record model="res.users" id="base.user_root">
<field name="partner_id" ref="base.partner_root"/>
<field name="company_id" ref="main_company"/>
<field name="company_ids" eval="[(4, ref('main_company'))]"/>
<field name="email">root@example.com</field>
<field name="signature"><![CDATA[<span>-- <br/>
System</span>]]></field>
</record> <!-- user 2 is the human admin user -->
<record id="user_admin" model="res.users">
<field name="login">admin</field>
<field name="password">admin</field>
<field name="partner_id" ref="base.partner_admin"/>
<field name="company_id" ref="main_company"/>
<field name="company_ids" eval="[(4, ref('main_company'))]"/>
# 注意这里:groups_id字段会关联的就是权限组,这里初始化的时候会将权限组清空一遍
<field name="groups_id" eval="[(6,0,[])]"/>
<field name="image_1920" type="base64" file="base/static/img/avatar_grey.png"/>
<field name="signature"><![CDATA[<span>-- <br/>
Administrator</span>]]></field>
</record>
</data>
# noupdate="1"
# 只有在安装的时候会执行data中的代码
# 如果noupdate="0"或者没设置的话,安装升级的时候都会执行data中的代码
# 另一种情况是-i modelname的时候不管noupdate设置的啥都会执行data代码 # 当我们在.py的model中增加字段的时候,我们经常需要./odoo-bin -c odoo.cfg -i base来初始化字段,否则会报错
# 这时候时候携带的 -i base参数,会导致data中的代码重新执行一遍初始化
# 因为groups_id字段值被清空了,所以导致给admin设置的权限被初始化了
# 如何解决这个问题:那就是不加-i # 权限组(res.groups)的作用:
# 1.限制用户models的增删改查(通过.csv来编写)
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_login_image,access_login_image,model_login_image,,1,1,1,1
# 2.控制按钮的显示隐藏
<button name="open" string="Join Video Meeting" type="object" class="oe_highlight" groups='base.group_no_one'/>
# 3.控制menu菜单的显示隐藏
<menuitem action='payment_token_action' id='payment_token_menu' parent='account.root_payment_menu' groups='base.group_no_one'/>
# 4.控制fields的显示隐藏
invoice_amount = fields.Boolean(groups='account.group_account_invoice,account.group_account_readonly')
# 权限组如何声明:
<record id="group_ship_support_contact_us_menu" model="res.groups" >
<field name="name">Contact Us</field>
# category_id的值来自__manifast__.py的category值。"base.module_category_"是前缀加上category的值(需要将非字母数字下划线的值替换成下划线)
<field name="category_id" ref="base.module_category_ship_support"/>
# users哪些用户默认拥有这些权限
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
# implied_ids继承其他组。这样其他组拥有的权限都会自带过来
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record> # 过滤域(ir.rule)的作用是:用户访问models的时候强制加上domain过滤条件。过滤域是附加在权限组中的
<record id="account_move_line_rule_group_readonly" model="ir.rule">
<field name="name">Readonly Move Line</field>
# model_id:模块标识符,"model_"前缀+模块名(点替换成下划线)
<field name="model_id" ref="model_account_move_line"/>
# domain_force:过滤domain
<field name="domain_force">[(1, '=', 1)]</field>
# groups:该过滤与作用于哪些权限组
<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>

Odoo14 groups && rule的更多相关文章

  1. Odoo14 ir.rule 中的domain查询语句

    # ir.rule 中的domain查询语句 # 当你的字段是many2one.many2many.one2many的时候domain都会强制加上过滤域 # tree显示的时候也会过滤 # m.mod ...

  2. 【odoo14】【开发侧】权限配置

    欢迎转载,但需标注出处,谢谢! 说明: 本文面向开发人员,普通用户可参考[odoo14][用户侧]权限配置.文章结构与用户侧一致. 目录 一. odoo中的对象 二. 权限控制 2.1 实现原理 2. ...

  3. 关于Freelists和Freelist Groups的研究【转】

    一.       什么是freelists 本文在于探讨Freelists和Freelist Groups的作用,存取机制,争用诊断和优化方法,同时通过理论和测试来推翻一些存在了很久的错误观点.本文的 ...

  4. [SQL in Azure] Tutorial: AlwaysOn Availability Groups in Azure (GUI)

    http://msdn.microsoft.com/en-us/library/azure/dn249504.aspx Tutorial: AlwaysOn Availability Groups i ...

  5. sonar rule

    bug类型: 1.".equals()" should not be used to test the values of "Atomic" classes.  ...

  6. Prometheus学习系列(五)之Prometheus 规则(rule)、模板配置说明

    前言 本文来自Prometheus官网手册1.2.3.4和 Prometheus简介1.2.3.4 记录规则 一.配置规则 Prometheus支持两种类型的规则,这些规则可以定期配置,然后定期评估: ...

  7. 记录规则(recording rules)与告警规则(alerting rule)

    记录规则(recording rules) 配置规则 Prometheus支持两种类型的规则,可以对其进行配置,然后定期进行评估:记录规则和警报规则.要在Prometheus中包含规则,请创建一个包含 ...

  8. 【odoo14】第十五章、网站客户端开发

    odoo的web客户端.后台是员工经常使用的地方.在第九章中,我们了解了如何使用后台提供的各种可能性.本章,我们将了解如何扩展这种可能性.其中web模块包含了我们在使用odoo中的各种交互行为. 本章 ...

  9. 【odoo14】第十四章、CMS网站开发

    第十四章.CMS网站开发** Odoo有一个功能齐全的内容管理系统(CMS).通过拖放功能,你的最终用户可以在几分钟内设计一个页面,但是在Odoo CMS中开发一个新功能或构建块就不是那么简单了.在本 ...

随机推荐

  1. Celery-Task参数方法

    @celery.task(bind=True, name='name') def function_name(): pass # task方法参数 name : 可以显式指定任务的名字:默认是模块的命 ...

  2. MySQL8小时问题

    一.问题 获取MySQL连接,8小时内无请求自动断开连接. 二.解决 2.1 分析 MySQL服务器默认的"wait_timeout"是28800秒即8小时,意味着如果一个连接的空 ...

  3. Blazor和Vue对比学习(进阶2.1.1):生命周期,基本理解和使用

    一.基本理解 首次接触"生命周期"这个名词,是比较晦涩的,Vue中又有生命周期钩子,而Blazor则是虚方法重写,容易蒙.所以,我尝试从初学者的角度来阐述一下. 1.我们在基础部分 ...

  4. Property or method "xxx" is not defined on the instance but referenced during render

    是xxx中的data写成date了,因此报错. 这个错误属于粗心

  5. 使用argparse进行调参

    argparse是深度学习项目调参时常用的python标准库,使用argparse后,我们在命令行输入的参数就可以以这种形式python filename.py --lr 1e-4 --batch_s ...

  6. 素性测试+PollardRho

    素数判定 暴力 本质上是检查其是否能够不用其本身进行质因数分解. 直接枚举从区间 \([2,n)\) 的数看其是否整除 \(n\) 即可.但是其实发现我们只要枚举到 \(\sqrt n\) 即可,复杂 ...

  7. 变量作用域——JavaSE基础

    变量作用域 局部变量.成员变量.静态变量的区别 类型 声明位置 从属于 生命周期 局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 成员变量 (实例变量 ...

  8. GO GMP协程调度实现原理 5w字长文史上最全

    1 Runtime简介 Go语言是互联网时代的C,因为其语法简洁易学,对高并发拥有语言级别的亲和性.而且不同于虚拟机的方案.Go通过在编译时嵌入平台相关的系统指令可直接编译为对应平台的机器码,同时嵌入 ...

  9. 内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)

    内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境 背景 内网开发机是 win7,只能安装 node 14 以下,而 spug 的文档项目采用的是 Facebook ...

  10. 29.MySQL高级SQL语句

    MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 ...