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 权限解析 的相关文章

  • openerp:ubuntu 上的内部服务器错误

    我刚刚在我的系统中安装了新的 OpenERP 8 0 替换了 Ubuntu 12 04 上现有的 OpenERP 7 0 我已经在家里的 Ubuntu 笔记本电脑上下载了这个 它运行得很好 并且想在我的办公室服务器上做同样的事情 我采取的步
  • 字典更新序列元素#0的长度为3; 2 为必填项

    我想向对象添加线条account bank statement line通过其他对象但我收到以下错误 字典更新序列元素 0 的长度为 3 需要 2 这是我的代码 def action account line create self cr
  • 如何隐藏所有表单odoo中的“创建和编辑”按钮以及每行中的“搜索更多”按钮

    我想隐藏所有表单中的 创建和编辑 按钮 我还想以所有形式显示 搜索更多 按钮 目前我使用 odoo 10 让我们看看这个插件 https apps openerp com apps modules 9 0 web m2x options h
  • 在 Odoo 中创建新组

    我创建了一个新组 它是一个人员组 但是在查看元数据中 我创建的新组没有 XML ID 我在哪里可以找到 XML ID 或添加新组的 XML ID 即使在外部 ID 中也是如此菜单 我找不到 ID 如何创建或编辑自定义组 打开设置 gt 用户
  • openerp中的父左和父右

    什么是父左和父右 它是如何运作的Openerp Thanks 正如拉斐尔 科莱 Raphael Collet 所解释的那样他关于 OpenERP Server 的回答 https answers launchpad net openobje
  • 元素 xpath 无法位于父视图中

    我需要自定义从销售模块中打印的字段 因此我创建了一个新模块并安装了它 我已经创建了一个 XML 文件 但出现以下错误 odoo tools convert ParseError Error while validating constrai
  • 如何在 Odoo 12 中使用 Python XML-RPC 注册付款

    首先我创建了这个函数 def invoiceRegisterPayment self register payment row confirm result self ODOO OBJECT execute kw self DATA sel
  • Odoo 14:在树视图中添加部分功能

    I need add a section functionality like sales gt quotation view has in one of my tree views 我的代码view是这样的
  • Axios 未传递 Content-Type 标头

    我在后端运行一个 Odoo 实例 并创建了一个公开 Web 控制器的自定义模块 如下所示 网页控制器 coding utf 8 from odoo import http import odoo from odoo http import
  • setFont(Times-Roman) 不能缺少 T1 文件吗?

    我有错误 Can t find pfb for face Times Roman Error reportlab graphics renderPM RenderPMError Can t setFont Times Roman missi
  • 如何在 odoo 8 中导入 QOH

    我想通过 odoo 前端或使用后端 postgres 查询 更新 odoo 中的库存 我的股票价值保存在 csv 文件中 最后 我想批量更新现有数量 终于解决了 按照步骤操作即可 步骤1 1 gt 在仓库模块中选择产品 在列表视图中打开 2
  • 在 Odoo 10 的表单视图中向 One2Many 树添加多条记录

    我目前正在 Odoo 10 中创建一个小部件 它有一个按钮 用户可以单击此按钮 然后会出现一个对话框 允许用户选择多个记录并将它们添加到相应的 One2Many 字段 例如 我可以选择多个产品并将它们添加到新的销售订单中 相应的订单行将添加
  • 如何在ubuntu 12.0中更新openerp 7中的新模块? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 完成 在 ubuntu 12 0 中更新 openerp 7 中的新模块的所有可能方法 还有其他方法可以更新 ubuntu 12 0 中
  • 无法在 odoo 10 Windows 中执行命令 lessc

    我想问一下在windows上安装odoo 10的问题 我有这样的错误 无法执行命令 lessc 我在另一篇文章中看到过这个问题 但他们的文章只是讨论 mac 和 ubuntu 服务器 而不是在 Windows 中 任何人都可以帮我解决这个
  • initdb.bin:无效的区域设置;检查 LANG 和 LC_* 环境变量

    当我尝试安装时比特纳米奥多 9在我的 ubuntu 系统中通过终端 我收到以下错误消息 如何解决这个问题 initdb bin invalid locale settings check LANG and LC environment va
  • 如何使用python创建从openerp自动发送邮件的程序

    如何使用python创建从openerp自动发送邮件的程序 我已经创建了 openerp 模块 当生成客户端 ID 时 我正在尝试向客户端发送邮件 在 sale 文件夹中的 sale py 中 当将潜在客户转换为客户时 我想向客户发送邮件
  • Javascript - 对父母调用 super 父母?

    我在 Odoo 中定义了当前自定义 javascript 视图的扩展 openerp account move journal test function instance var t instance web t lt instance
  • 如何创建记录而不将其保存在数据库中

    我正在使用InventoryOdoo 12 的插件 但我的问题可能发生在任何模块上 在这个插件中 一个StockMove模型有一个move line ids field In the Detailed Operations对话框中 我们可以
  • 禁用文本字段中的复制粘贴 odoo 13

    我有一个文本字段 my field fields Text 我想禁用 java 脚本或 python 输入中的复制和粘贴 ctrl c ctrl v 我该怎么做 谢谢 您可以延长FieldText widget https www odoo
  • 如何在 ODOO 10 中从销售订单创建交货订单?

    在销售应用中 确认报价时根据销售订单创建的库存交货单在哪里 ODOO10 的工作流程中调用了哪些函数 当我无法跟踪回溯时 这是我使用的一个有用的技巧 您说过您想知道交货单是在哪里创建的 不是吗 因此 由于交货单是出货拣货 您可以在代码中编写

随机推荐

  • 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 记录级别权限 即