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权限设置总结的更多相关文章

  1. odoo 权限设置

    *权限管理的四个层次    # 菜单级别:不属于指定菜单所包含组的用户看不到该菜单,不客全,只是隐藏                 菜单,若知道菜单ID,仍然可以通过指定URL访问    # 对象级 ...

  2. Atitit  godaddy 文件权限 root权限设置

    Atitit  godaddy 文件权限 root权限设置 1. ubuntu需要先登录,再su切换到root1 2. sudo 授权许可使用的su,也是受限制的su1 3. ubuntu默认吗roo ...

  3. Linux 权限设置chmod

    Linux中设置权限,一般用chmod命令 1.介绍 权限设置chmod 功能:改变权限命令.常用参数: 1=x(执行权execute) 2=w(写权write) 4=r(读权Read) setuid ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用

    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    ...

  5. MAC OS X的ACL扩展权限设置

    在WEB开发时,网站是以_www的用户运行的,而我在本地是以liuwencan的用户编辑的.这就带来一个问题:如果所有文件属于liuwencan,那么网站运行需要写文件时就因无权限而失败:如果所有文件 ...

  6. C#-WinForm-MDI窗体容器、权限设置

    MDI窗体容器 - 放窗体的容器 窗体时顶级控件,是不允许放到其他的控件或窗体中的 (李献策lxc) 窗体属性中有一个属性:IsMdiContainer - 确定该窗体是否是MDI容器 在窗体中放一个 ...

  7. ACL权限设置命令setfacl和getfacl命令

    ACL权限设置命令setfacl和getfacl命令 setfacl命令是用来在命令行里设置ACL(访问控制列表).在命令行里,一系列的命令跟随以一系列的文件名. [TOC] 选项 |参数|说明|   ...

  8. MDI窗体容器、权限设置

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  9. Linux 权限设置

    一.文件和目录权限 在Linux系统中,用户可以对每一个文件或目录都具有访问权限,这些访问权限决定了谁能访问,以及如何访问这些文件和目录. 1.文件权限简介 在Linux系统中,每一位用户都有对文件或 ...

随机推荐

  1. Python基础教程【读书笔记】 - 2016/8/3

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十一波:第11章  文件和素材 本章更进一步,让程序能够接触更多的领域:文件和流.接下来介绍的函数和对象可以让你在程序 ...

  2. 磁盘IOPS的计算

    计算磁盘IOPS的三个因素:   1.RAID类型的读写比   不同RAID类型的IOPS计算公式: RAID类型 公式 RAID5.RAID3 Drive IOPS=Read IOPS + 4*Wr ...

  3. insmod module_param 模块参数

    模块参数 引导模块时,可以向它传递参数.要使用模块参数加载模块,这样写: insmod module.ko [param1=value param2=value ...] 为了使用这些参数的值,要在模 ...

  4. [svn] linux命令——svn分支创建、合并

    一.创建分支 1,创建一个分支 svn copy svn://xx.com/repo/trunk svn://xx.com/repo/branches/TRY-something -m 'make b ...

  5. item31,连续子数组的最大和

    整型数组,元素有正数和负数.数组中一个或连续的多个整数组成一个子数组,求所有子数组中最大值. =========== 动态规划, 状态转移方程,max[].size = nums.size() max ...

  6. c/c++多线程编程中最好不要加volatile

    来自https://www.zhihu.com/question/31459750 答主解释说:不能指望volatile能解决多线程竞争问题,除非所用的环境系统不可靠才会为了保险加上volatile, ...

  7. 黄聪:PHP json_encode中文乱码解决方法

    相信很多人在使用Ajax与后台php页面进行交互的时候都碰到过中文乱码的问题.JSON作为一种轻量级的数据交换格式,备受亲睐,但是用PHP作为后台交互,容易出现中文乱码的问题.JSON和js一样,对于 ...

  8. Shell_Shell调用SQLPlus简介(案例)

    2014-06-20  Created By BaoXinjian

  9. [实变函数]2.2 聚点 (cluster point), 内点 (interior point), 界点 (boundary point)

    设 $E\subset \bbR^n, P_0\in \bbR^n$. 1 若 $\exists\ U(P_0)\subset E$, 则称 $P_0$ 为 $E$ 的内点 (interior poi ...

  10. SteamVR Unity工具包(VRTK)之激光和移动

    简单激光指针(VRTK_ SimplePointer) 简单指针(Simple Pointer)脚本从控制器尾部发出一个有色光束来模拟激光束.这在场景中指向对象很有用,它能判断所指向的对象以及对象距控 ...