权限等级
- 第一级是access rule,即表级(对象)权限,控制用户组对某个对象是否有创建、读取、修改、删除的权限,一般是用security/ir.model.access.csv文件来管理。
- 第二级是行级权限,控制用户组对表中数据行的访问权限,可以写在views/views.xml文件中。
- 第三级是字段级权限,一个对象或表上的某些字段的访问权限。
- 第四级是菜单级权限,不属于指定菜单所包含组的用户看不到该菜单。
其实简单的理解就是
对于数据表Table A
用户能不能看见这个表的内容(字段及数据),就是表级权限
用户能不能看见表A的某行(数据),就是行级权限(记录及权限)
用户是否能看见表A的字段(列),就是字段及权限
对于odoo的菜单,用户是否可见,就是菜单级权限
创建模块
版本:odoo8
(python 2.7环境)
python ./odoo.py scaffold academy ./openerp/addons_test切换用户到开发者模式
右上角用户,点击关于,页面右上角“激活开发者模式”
更新模块列表
Settings->Modules->Update Modules List
安装模块
Settings->右上角搜索模块名
一、表级权限
新建modelacademy/models.py
class Teachers(models.Model):
_name = 'academy.teachers'
name = fields.Char('Teacher Name')
biography = fields.Html()
user_id = fields.Many2one('res.users', string="User", ondelete='cascade', required="true")
class Courses(models.Model):
_name = 'academy.courses'
name = fields.Char()
teacher_id = fields.Many2one('academy.teachers', string="Teacher")
course_ids = fields.One2many('academy.courses', 'teacher_id', string="Courses")
给两个表添加基本的视图以及新建两个菜单
academy/views.xml
<openerp>
<data>
<record id="action_academy_teachers" model="ir.actions.act_window">
<field name="name">Academy teachers</field>
<field name="res_model">academy.teachers</field>
</record>
<record id="academy_teacher_tree" model="ir.ui.view">
<field name="name">Academy teachers: tree</field>
<field name="model">academy.teachers</field>
<field name="arch" type="xml">
<tree>
<field name="user_id"/>
</tree>
</f