openerp权限设置总结
Openerp权限设置
最近一直在弄openerp权限问题,现在终于懂了一些。主要对模块下的security 目录下的文件:xxx_security.xml、ir.model.access.csv进行讲解
@ xxx_security.xml
1、 建立组
<record id="group_department_project_admin" model="res.groups">
<field name="name">A</field>
<fieldname="category_id" ref="B"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/> //把admin用户加入该组中
</record>
@name 组名称
@ category_id 属于哪个应用程序,或者哪个模块
@ users 组里面的用户
这样B应用程序就建立了一个名叫A的组。并且初始化了A组的一个用户admin
注:组一般是由职位等级划分的
2、 组控制菜单显示
A
<record model="ir.ui.menu" id=" memu_id1">
<field name="name" >menu1</field>
<field name="groups_id" eval="[(6,0,[ref('A'),ref('B')]),]"/>
<field name="sequence">1</field>
</record>
@ name 菜单名称
@ groups_id 哪些组可以访问该菜单
@ sequence 该菜单的序号
这样A组与B组的成员都可以访问menu1菜单,menu1菜单的显示顺序为1
注:eval 后面解释,多个组访问用“,”隔开
B
<menuitem id="menu_id2 " name="menu2" parent="menu_id1" sequence="1" groups="A,B "/>
@ name 菜单名称
@ parent 父类菜单 如果没有可以不写parent
@ groups哪些组可以访问该菜单
这样menu1的子菜单menu2可以被A组合B组的成员访问
注:两种菜单的group设置有区别
3、 权限规则
这个可以过滤掉其它数据,只取你需要的数据
<record
model="ir.rule" id="rule1">
<field name="name">rule1</field>
<field name="model_id"
ref="model_model1"/>
<field name="global"
eval="True"/>
<field
name="domain_force">[1,’=’,1]</field>
<field
name="groups" eval="[(4,ref('A'))]"/>
</record>
@ name
规则名称
@ model_id
依赖的模块
@ global
是否是全局
@ domain_force
过滤条件
@ groups
属于哪个组
这样A组的成员就可以取到model_model1的所有数据
注:model_id
这个放在后面讲ir.model.access.csv的时候讲
domain_force
这个很重要,只有这个写好了才能获取到自己想要的数据
4. ir.model.access.csv
定义组对对象的权限矩阵
@id 随便取
@name
随便取
@model_id:id
这个就是你所定义的对象了
@group_id:哪个组
@perm_read","perm_write","perm_create","perm_unlink"
增删改查权限了。1代表有权限
5.Eval
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))
例子[(6,
0, [8, 5, 6, 4])] 设置
many2many to ids [8, 5, 6, 4]
one2many
(0,
0,{ values })根据values里面的信息新建一个记录。
(1,ID,{values})
更新id=ID的记录(对id=ID的执行write 写入values里面的数据)
(2,ID)
删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
例子:
[(0,0,{'field_name':field_value_record1,...}),(0,0,{'field_name':field_value_record})]
many2one的字段比较简单,直接填入已经存在的数据的id或者填入False删除原来的记录。
6.隐藏的常用技巧
* 直接隐藏
<group name="owner"
position="attributes">
<attribute
name="invisible">True</attribute>
</group>
* 满足某些条件的隐藏
<xpath
expr="//field[@name='parent_id']" position='attributes'>
<attribute
name="attrs">{'invisible': [('passenger','=',
True)]}</attribute>
</xpath>
<group
col="4" string='旅客信息' attrs="{'invisible': [('supplier','=',
True)]}"></group>
* 通过组来隐藏
<xpath
expr="//field[@name='type']" position="attributes">
<attribute
name="groups">base.group_no_one</attribute>
</xpath>
* 菜单的隐藏
<record model="ir.ui.menu"
id="crm.menu_crm_opportunities">
<field eval="[(6,0,
[ref('base.group_no_one'),])]" name="groups_id"/>
</record>
openerp权限设置总结的更多相关文章
- odoo 权限设置
*权限管理的四个层次 # 菜单级别:不属于指定菜单所包含组的用户看不到该菜单,不客全,只是隐藏 菜单,若知道菜单ID,仍然可以通过指定URL访问 # 对象级 ...
- Atitit godaddy 文件权限 root权限设置
Atitit godaddy 文件权限 root权限设置 1. ubuntu需要先登录,再su切换到root1 2. sudo 授权许可使用的su,也是受限制的su1 3. ubuntu默认吗roo ...
- Linux 权限设置chmod
Linux中设置权限,一般用chmod命令 1.介绍 权限设置chmod 功能:改变权限命令.常用参数: 1=x(执行权execute) 2=w(写权write) 4=r(读权Read) setuid ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- MAC OS X的ACL扩展权限设置
在WEB开发时,网站是以_www的用户运行的,而我在本地是以liuwencan的用户编辑的.这就带来一个问题:如果所有文件属于liuwencan,那么网站运行需要写文件时就因无权限而失败:如果所有文件 ...
- C#-WinForm-MDI窗体容器、权限设置
MDI窗体容器 - 放窗体的容器 窗体时顶级控件,是不允许放到其他的控件或窗体中的 (李献策lxc) 窗体属性中有一个属性:IsMdiContainer - 确定该窗体是否是MDI容器 在窗体中放一个 ...
- ACL权限设置命令setfacl和getfacl命令
ACL权限设置命令setfacl和getfacl命令 setfacl命令是用来在命令行里设置ACL(访问控制列表).在命令行里,一系列的命令跟随以一系列的文件名. [TOC] 选项 |参数|说明| ...
- MDI窗体容器、权限设置
一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...
- Linux 权限设置
一.文件和目录权限 在Linux系统中,用户可以对每一个文件或目录都具有访问权限,这些访问权限决定了谁能访问,以及如何访问这些文件和目录. 1.文件权限简介 在Linux系统中,每一位用户都有对文件或 ...
随机推荐
- noaman日志第一条:2015-1024;“Hello.World”
在南京的不知道第几个周末,一夜的煎熬终于活过来了.清早起来开通了自己的博客,第一条说说就记录开通博客这个事件.没有别的. 之后我会着重记录每天看书内容,以及所要编写的重要程序,一点一滴地积累希望能收获 ...
- 查看CentOS版本方法
查看内核版本 这个命令适用于所有的linux,包括Redhat.SuSE.Debian.Centos等发行版. root@MyMail ~ # uname Linux root@MyMail ~ # ...
- Ansible常用模块及API
Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel ...
- windows mobile仿真器内存调整
1.打开VS,进入工具,选项. 2.点击设备,在右侧选中要调整的模拟器,点属性. 3.点击仿真器选项. 4.勾选 指定RAM大小. 5.重启仿真管理器.
- 我的Android最佳实践之—— Android启动画面的实现方法
本文实例讲述了Android启动画面的实现方法.分享给大家供大家参考.具体分析如下: 在应用程序中经常用到启动画面,会启动一个后台线程为主程序的运行准备资源.Android要实现启动画面可以这样做: ...
- JavaScript中Call()以及Apply()的应用
apply()和call()的真正用武之地是能够扩充函数赖以运行的作用域 三点说明: 1.每个函数都包含两个非继承而来的方法:apply()和call(). 2.他们的用途相同,都是在特定的作用域中调 ...
- 黄聪:jquery mobile通过a标签页面跳转后,样式丢失、js失效的解决方法
问题描述: 用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了. 解决办法1: 将所有的css以及js全部放在div内. 原理: 由于jqm的ajax跳转的 ...
- ssh整合随笔(注解方式,Spring 管理action)
Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- C# 通过线程来控制进度条(转)--讲解多线程对界面的操作
// 通过创建委托解决传递参数问题 private void _btnRun_Click( object sender, System.EventArgs e ) { RunTaskDelegate ...
- [UEditor]百度编辑器配置总结
前端配置文件ueditor.config.js 前端有两个重要的配置属性: UEDITOR_HOME_URL: 配置百度编辑器的资源目录路径,你可以手动指定此路径,默认是有URL变量指定,而URL变量 ...