openerp/odoo 权限解析

2023-10-27

前言:odoo权限管理主要分为4类

1.菜单权限:即未指定的用户组看不到该菜单。缺点:不安全,只是隐藏菜单,若用户知道菜单的id一样可以通过url查看菜单。
2.对象级别:即有权限的对象才能有某种功能比如:增删改查的权限
3.记录级别权限:即对数据的访问权限
4.字段级别权限:即一个对象或者某个字段的访问权限
例:以请假单为例:只要管理员才能看到所有人的请假单,而自己只能看到自己的请假单
leave_security.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="1"> 
        <record model="ir.module.category" id="module_category_leave">
            <field name="name">请假单</field>
        </record>
        <record model="res.groups" id="group_leave_user">
            <field name="name">User</field>
            <field name="category_id" ref="module_category_leave"/>
        </record>
        <record model="res.groups" id="group_leave_manager">
            <field name="name">Manager</field>
            <field name="implied_ids" eval="[(4, ref('group_leave_user'))]"/>
            <field name="category_id" ref="module_category_leave"/>
        </record>

        <record id="rule_user_leave" model="ir.rule">
            <field name="name">User只能看自己的请假单</field>
            <field name="model_id" ref="model_leave_leave"/>
            <field name="domain_force">[('create_uid','=',user.id)]</field>
            <field name="groups" eval="[(4,ref('group_leave_user'))]"/>
        </record>

        <record id="rule_manager_leave" model="ir.rule">
            <field name="name">Manage可看所有请假单</field>
            <field name="model_id" ref="model_leave_leave"/>
            <field name="domain_force">[(1,'=',1)]</field>
            <field name="groups" eval="[(4,ref('group_leave_manager'))]"/>
        </record>

    </data>
</openerp>
            
ir.model.access.csv
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_leave_leave_191012_001,leave.leave,model_leave_leave,group_leave_user,1,1,1,0
access_leave_leave_191012_002,leave.leave,model_leave_leave,group_leave_manager,1,1,1,1
解析:
  • id:命名规则:access_模型类名,如果权限很多的话,后面可以跟着日期时间后缀
  • name:模型类名
  • model_id:model_模型类名
  • group_id:group_开头,定义的权限名,与leave_security.xml中相互对应
  • perm_read,perm_write,perm_create,perm_unlink:分别对应读、写、创建、删除权限
以销售订单为例设置权限:只有超级管理员才能看全部销售订单数据,而普通用户只能看已完成的订单数据
menu.xml
<menuitem id='menu_nt_sale_order' name='订单' parent="menu_nt_order" sequence="10" new_ui="1"/>
				<menuitem id='menu_nt_sale_order_waiting_list' name='销售订单(待处理)' parent="menu_nt_sale_order" sequence="10" action="nt_sale_order_tree_action_waiting" new_ui="1" />
				<menuitem id='menu_nt_sale_order_all_list' name='销售订单(全部)' parent="menu_nt_sale_order" sequence="20" action="nt_sale_order_tree_action_all" new_ui="1" />
			
通过id设置权限列表 role_init.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="0">
        <!--  角色  -->
        <record id="nt_user_role_super_user" model="res.users">
            <field name="name">超级管理员(初始化)</field>
            <field name="login">super_user</field>
            <field name="password">super_user</field>
            <field name="is_init" eval="True" />
            <field name="is_role" eval="True"/>
            <field name="active" eval="False"/>
            <field name="groups_id" eval="[此可放用户组权限]"]" />
            <field name="display_menu_ids" eval="[
                (4,ref('nt_core.menu_nt_sale_order_waiting_list')),
                (4,ref('nt_core.menu_nt_sale_order_all_list'))]"
                      
            
            <record id="nt_user_role_store_master" model="res.users">
            <field name="name">店员(初始化)</field>
            <field name="login">store_master</field>
            <field name="password">store_master</field>
            <field name="is_init" eval="True" />
            <field name="is_role" eval="True"/>
            <field name="is_shop_manager" eval="True"/>
            <field name="active" eval="False"/>
            <field name="display_menu_ids" eval="[            
                (3,ref('nt_core.menu_nt_sale_order_waiting_list')),
                (4,ref('nt_core.menu_nt_sale_order_all_list')),]"
             
           
解析:

many2many情况:

  • (0,0,{values}) 根据values里面的信息新建一个记录。

  • (1,ID,{values})更新id=ID的记录(写入values里面的数据)

  • (2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

  • (3,ID) 切断主从数据的链接关系但是不删除这个数据

  • (4,ID) 为id=ID的数据添加主从链接关系。

  • (5) 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID)

  • (6,0,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))

one2many:

  • (0, 0,{ values })根据values里面的信息新建一个记录。

  • (1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)

  • (2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openerp/odoo 权限解析 的相关文章

随机推荐

  • flea-cache使用之Redis分片模式接入

    Redis分片模式接入 1 参考 2 依赖 3 基础接入 3 1 定义Flea缓存接口 3 2 定义抽象Flea缓存类 3 3 定义Redis客户端接口类 3 4 定义Redis客户端命令行 3 5 定义分片模式Redis客户端实现类 3
  • 三色过人脸脚本_大小仅1MB,超轻量级通用人脸检测模型登上GitHub趋势榜

    机器之心报道 项目作者 Linzaer 近日 用户 Linzaer 在 Github 上推出了一款适用于边缘计算设备 移动端设备以及 PC 的超轻量级通用人脸检测模型 该模型文件大小仅 1MB 320x240 输入下计算量仅 90MFlop
  • IT项目管理第三次作业

    分析题 研究项目管理过程与领域知识及其关系 1 了解CMMI项目管理过程 项目计划 PP 使用知识域 过程矩阵 对比项目规划过程组与CMMI PP过程 具体要求 首先 绘制矩阵 矩阵行是十大知识领域 最后一行为其他知识 矩阵第一列 是项目规
  • C++ 描述任意多边形的类及计算其面积和周长

    这是一个可以在平面坐标系中表示任意多边形并且计算其面积和周长的类 不过目前只能在第一象限计算 使用时较简便 只要把多边形的各个顶点传进去就可以了 不用按顺序 其中面积的计算是参考https blog csdn net hemmingway
  • 【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 近年来 随着可再生能源的并网以及非线性负载
  • jenkins 踩坑

    ERROR Failed to parse POMs org apache maven project ProjectBuildingException Some problems were encountered while proces
  • java 加载驱动3种方法_加载jdbc驱动程序的三种不同方式

    1 比较常用 try Class forName com mysql jdbc Driver 加载数据库驱动 String url jdbc mysql localhost 3306 databasename 数据库连接子协议 databa
  • React:通过嵌套对象循环

    问题描述 我正在从strapi 获取数据 我的导航对象的响应如下所示 简化 id 1 title Home order 1 items id 2 title 3D Assets order 1 items id 4 title 3D Pla
  • Linux下OpenCV摄像头录像(c++)

    opencv 从摄像头中读取视频并保存 c 版 YouthDance CSDN博客 opencv 保存摄像头视频 参考如上 CMakeLists txt cmake版本 cmake minimum required VERSION 2 8
  • 【Android】上拉加载更多,下拉刷新数据快速实现

    项目需求 在页面数据中 每次只显示一部分 当手指操作从下往上滑动时 进行请求加载更多数据 当从上往下滑动时 进行整个所有数据的刷新 需求实现 1 引入依赖 刷新 implementation com scwang smart refresh
  • 【满分】【华为OD机试真题2023 JAVA&JS】学校的位置

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 学校的位置 知识点数组贪心排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为了解决新学期学生暴涨的问题 小乐村要建所新学校 考虑到学生上学安全问题 需要所有
  • 【电商数仓】数仓调度之全流程调度(调度数据准备、Azkaban部署、创建数据库和表、Sqoop导出脚本、编写工作流程配置文件、一些注意事项)

    1082条消息 电商数仓 数仓调度之全流程调度 调度数据准备 Azkaban部署 创建数据库和表 Sqoop导出脚本 编写工作流程配置文件 一些注意事项 数仓权限系统和调度系统搭建 OneTenTwo76的博客 CSDN博客
  • uniApp动态更改页面顶部标题

    需求 多个功能公用一个页面 根据上个页面传递过来的参数动态更改顶部标题 onLoad option if option type permit uni setNavigationBarTitle title 许可证页面 else if op
  • ST7701芯片820*320屏幕移植stemwin

    简要说明 如题 公司最近更换820 320屏幕 移植stemwin 使用3线spi通讯 16RGB 这屏幕工作流程为 首先通过3线spi发送初始化指令 之后通过16bitRGB发送像素点 移植过程参考了安富莱 野火 https www nx
  • python爬虫selenium被检测处理(适用淘宝登录)

    1 增加这个是防止检测是webdriver谷歌驱动调起的请求 通用大部分 self chrome execute cdp cmd Page addScriptToEvaluateOnNewDocument source Object def
  • RandomAccessFile 实现文件分片获取发送和写入

    在实现文件上传的过程发现由于文件太大会导致程序接收和发送都出现问题 所以想着实现一个分片发送和写入的方法方便实现大文件上传 查了一些资料 在随机文件流操作时RandomAccessFile 恰好可以满足我的要求 这里主要是如何用Random
  • 怎么使用input执行xss攻击_XSS场景及修复方案总结

    xss原理 跨站脚本攻击 Cross Site Scripting 缩写为XSS 恶意攻击者往Web页面里插入恶意javaScript代码 当用户浏览该页之时 嵌入其中Web里面的javaScript代码会被执行 从而达到恶意攻击用户的目的
  • 大专生学Java真没出路吗?

    现在市场上的众多移动应用 大部分都是用Java做后台开发的 我们大家所熟知的支付宝 美团 淘宝 京东等都是用Java来做后台的 这么多互联网公司对Java如此青睐 这样也就助推Java的生态变得越来的越好 毕竟有大厂背书 生态越好 Java
  • 防范明文密码和散列值抓取

    一 单机密码抓取的防范方法 微软为了防止用户密码在内存中以明文形式泄露 发不了补丁KB2871997 关闭了Wdigest功能 windows server 2012以上版本默认关闭Wdigest 使攻击者无法从内存中获取明文密码 对于wi
  • openerp/odoo 权限解析

    前言 odoo权限管理主要分为4类 1 菜单权限 即未指定的用户组看不到该菜单 缺点 不安全 只是隐藏菜单 若用户知道菜单的id一样可以通过url查看菜单 2 对象级别 即有权限的对象才能有某种功能比如 增删改查的权限 3 记录级别权限 即