18.odoo入门——odoo权限控制(一)模型(数据表)级别权限控制

来源:互联网 发布:水池结构设计软件 编辑:程序博客网 时间:2024/06/07 00:04

进入正常工作流程,首先要解决odoo后台中,财务部门和管理部门分别进入后台中应该有对应的不同的权限,那么在项目中需要security/ir.model.access.csv

————大致参考 http://www.jianshu.com/p/bc4e9db349a2——不过里面有一个地方弄错了!就是id并不是有固定写法的,随意取名字,只要确保每天权限记录的id不同不要互相覆盖就好了

在这里我遇到了一个特别的问题,就是在model_id:id字段的值中,由于我的模块名和类名的前缀是相同的,按网站上的实现就出错了,然后将原本的model_模块名_类名中的模块名删掉,变成model_类名就可以正常工作了。(反正我的odoo10.0就是用的model_类名而不是参考的简书网站上所说的model_模块名_类名

odoo中,我查看一条记录,希望能看到这条记录的create_uidcreate_date, write_uid,write_date,但是在创建记录的时候不能有这几个字段(因为这是系统自动生成的,不应该是人为输入的),在xml中如何控制呢?

一位大佬教的:

<field name="id" invisible="1"/><field name="create_uid" attrs="{'invisible': [('id', '<=', 0)]}" string="XXX"/><field name="create_date" attrs="{'invisible': [('id', '<=', 0)]}"/><field name="write_uid" attrs="{'invisible': [('id', '<=', 0)]}"/><field name="write_date" attrs="{'invisible': [('id', '<=', 0)]}"/>

这样的写法就可以了,使id字段不可见,再利用id<=0(不存在的)的情况使其不可见

接下来进行权限分组,分别是管理部门,财务部门,普通用户,管理员,组的概念在哪里呢?

看一些开发者文档好像都没什么用,感觉急缺一份详细而有针对性的官方文档,看了几份文档都没有提到我这个问题,不过在我拿到的一个demo模块中看到了security的3个文件,分别是:

ir.model.access.csv   ir_rule.xml   group.xml

去百度一下,就可以看到第一个网页:http://www.cnblogs.com/crazyguo/p/6999408.html

利用xml文件分组成功,security/group.xml代码如下图所示:

<?xml version="1.0" encoding="utf-8"?><!--建立权限组,定义组和组对菜单的访问权限,--><openerp>     <data noupdate="0">        <!--#######################################应用系统分类设置#######################################-->        <record model="ir.module.category" id="wens_investment_finance">            <field name="name">投资理财</field>            <field name="description">针对公司内部使用的投资理财项目</field>        </record>        <!--#######################################应用系统分类设置#######################################-->         <!-- #################################角色设置#################################-->        <record id="administration_section" model="res.groups">            <field name="name">管理部门</field>            <field name="category_id" ref="wens_investment_finance"></field>            <!--category_id表示:administration_section属于group_wens_investment分组,并且只能选择其中一个角色。-->            <!--ref表示用户组所属的模块名-->        </record>         <record id="finance_staff" model="res.groups">            <field name="name">财务部门</field>            <field name="category_id" ref="wens_investment_finance"></field>        </record>         <record id="ordinary_user" model="res.groups">            <field name="name">普通用户</field>            <field name="category_id" ref="wens_investment_finance"></field>        </record>        <!-- #################################角色设置#################################-->     </data></openerp>


成功后,在odoo端创建新用户时可以看到可以选择不同的角色,说明我们分组成功了。

接下来我们在security/ir.model.access.csv下写好字段控制,就可以成功地控制每个角色对于每个对象的权限——需要一提的是,这是对象(或者说,模型,数据库表)级别的权限控制

示例代码为:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

access_1,wens_investment_finance.wens_investment_program,model_wens_investment_program,wens_investment_finance.administration_section,1,1,1,1

access_2,wens_investment_finance.wens_investment_subscription,model_wens_investment_subscription,wens_investment_finance.administration_section,1,1,1,1

access_3,wens_investment_finance.value_change_record,model_value_change_record,wens_investment_finance.administration_section,1,1,1,1

access_4,wens_investment_finance.cash_transfer_record,model_cash_transfer_records,wens_investment_finance.administration_section,1,1,1,1


原创粉丝点击