ODOO权限管理,在两个方面设置权限

摘要:
所以给这个组赋权限,相当于给新帐户的默认权限。以管理员身份登录系统,在应用˃应用查找qingjia模块。

转载参考https://zhuanlan.zhihu.com/p/29130388

在odoo中新建两个用户user1,user2

新建用户

建完了用户,记得编辑用户,设置密码。

然后以user1用户登录系统,在导航菜单中我们看不到请假菜单,因为我们没有给user1这个用户请假模块的权限。编辑security/ir.model.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_qingjia_qingjiadan,qingjia.qingjiadan,model_qingjia_qingjiadan,base.group_user,1,1,1,1

id

权限id,默认规则是access_模块名_类名,还没发现有什么用

name

权限名,默认规则是模块名.类名,还没发现有什么用

model_id:id

这个是固定写法,规则是model_模块名_类名,其它地方引用权限会用这个id

group_id:id

组id,这里的base.group_user是系统内置组,即员工.员工组,创建帐户时,默认属于这个组。所以给这个组赋权限,相当于给新帐户的默认权限。

perm_read,perm_write,perm_create,perm_unlink

对应读、写、增加、删除权限,1是有权限,0是无权限,具体根据需要来设置权限

编辑__manifest__.py

# -*- coding: utf-8 -*-
{
    'name': "qingjia",

    'summary': """
请假模块""",

    'description': """
请假模块
""",

    'author': "leo",
    'website': "http://www.yourcompany.com",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',

    # any module necessary for this one to work correctly
    'depends': ['base'],

    # always loaded
    'data': [
        'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo/demo.xml',
    ],
    'application': True,    
}

'data':[]中添加权限文件'security/ir.model.access.csv',

新增一行'application':True,这样在应用中默认能搜索到请假单模块,因为应用列表默认使用应用过滤器的。

以管理员身份登录系统,在应用>应用查找qingjia模块。然后升级。

新增请假单

使用user1用户登录系统,现在可以看到请假菜单了。新建一个请假单。看起来功能正常。然后我们用user2登录系统。也可以看到这个请假单。如果我们希望用户只能看到自己的请假单,如何做呢,修改代码views/views.xml

<odoo>
  <data>
    <!-- tree视图 -->
    <record id="view_tree_qingjia_qingjiadan" model="ir.ui.view">
      <field name="name">请假单列表</field>
      <field name="model">qingjia.qingjiadan</field>
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="days"/>
          <field name="startdate"/>
        </tree>
      </field>
    </record>    

    <!-- form视图 -->
    <record id="view_form_qingjia_qingjiadan" model="ir.ui.view">
      <field name="name">请假单</field>
      <field name="model">qingjia.qingjiadan</field>
      <field name="arch" type="xml">
        <form>
          <sheet>
            <group name="group_top" string="请假单">
              <field name="name"/>
              <field name="days"/>
              <field name="startdate"/>
              <field name="reason"/>
            </group>            
          </sheet>
        </form>
      </field>
    </record>

    <!-- 视图动作 -->
    <act_window id="action_qingjia_qingjiadan"
                   name="请假单"
                   res_model="qingjia.qingjiadan"
                   view_mode="tree,form" />

    <!-- 顶级菜单 -->
    <menuitem name="请假" id="menu_qingjia"/>

    <!-- 二级菜单 -->
    <menuitem name="请假单" id="menu_qingjia_qingjiadan" parent="menu_qingjia" action="action_qingjia_qingjiadan"/>

    <!--record 规则 -->
    <record id="rule_user_qingjia_qingjiadan" model="ir.rule">
      <field name="name">自己编辑自己的请假单</field>
      <field name="model_id" ref="model_qingjia_qingjiadan" />
      <field name="domain_force">[('create_uid','=',user.id)]</field>
      <field name="groups" eval="[(4,ref('base.group_user'))]"/>
    </record>

  </data>
</odoo>

增加了一个record 规则,几个关键属性

model_id

模块id,对应ir.model.access.csv文件中定义的model_id

domain_force

domain表达式,'create_uid'qiangjia_qingjiadan表的字段,在insert数据时,odoo自动写入添加用户的id。user.id是当前用户id。这个domain表达式的含义就是请假单数据的添加用户id等于当前用户id。

groups

组id,base.group_user前面说过,是系统内置的员工组的外部id

再次升级请假模块,现在user1、user2都只能看到自己的请假单,管理员可以看到全部的请假单。odoo管理员默认拥有全部权限。

总结下odoo权限分级:

  • 第一级是access rule,即表级权限,控制用户组对表的访问权限,一般是用security/ir.model.access.csv文件来管理
  • 第二级是record rule,即行级权限,控制用户组对表中数据行的访问权限,可以写在views/views.xml文件中
  • 其实还有第三级权限,是字段级权限,之后再学习。

免责声明:文章转载自《ODOO权限管理,在两个方面设置权限》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇H5 及 web 页面微信授权登录流程使用VBA数组公式——Excel之VBA(11)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

odoo中Controller

  一:Controller     一般通过继承的形式来创建controller类,继承自odoo.http.Controller。     以route装饰器来装饰定义的方法,提供url路由访问路径: class MyController(odoo.http.Controller)://继承controller定义控制器 @route('/so...

Odoo 模型之间的关系 笔记

Many2one 关系需要两个参数:关联模块(设置对应模块的关键参数)和展示字符。它会在数据库表中创建一个拥有外键的字段去关联数据库表。 这种类型的字段,也可以使用一些其它的参数: ondelete 在关联的记录被删除时,将会触发。默认值是null,也就是说,当关联的记录被删除时,它将被置空。其它值为restrict,当记录被关联时,禁止删除,cascad...

odoo使用笔记

1:active字段为False的记录如何显示: odoo中默认,active字段为False的记录上不显示的。但是如果在创建时没有勾选active,之后想要显示它,那就需要吧active修改为True。 然而它现在是不可见的,怎么修改? 通过odoo提供的搜索视图来实现: 自定义筛选——active字段——为假 即可把active为False的记录显示出...

【笔记】Docker部署Odoo

一,制作一个自己的odoo镜像odoo:yto 1,下载一个odoo10的镜像 docker pull odoo:10.0 2,按照自己的意愿修改里面的内容 docker run -it -u root --name odoo-yto odoo:10.0 /bin/bash  安装必要的软件并用vim修改内容 apt-get update apt-get...

Odoo学习笔记(一)搭建windows开发环境

前言: 虽然很多人都说学习odoo,最好是linux开发环境,可是我这业余选手有不是只做开发,还有好多活是在windows上做的,我还是做windows开发环境吧。 开始学习Odoo之前,需要具备一些基础知识: 下载git源码、配置python虚拟环境、基本了解数据库服务器的部署和连接、python编程基础知识。 部署Odoo需要掌握Docker,起码知道...

odoo开发笔记:Server+Action服务器动作自动触发执行

       Odoo的市场定位是SME(中小型企业),这个市场的ERP产品,多如牛毛,产品各具特色。不过,Odoo的自动化处理机制,可以睥睨天下,无人能及。包括一些大型国产软件,如用友、金蝶也不具备如此强大的自动化业务处理功能。Odoo的业务自动化机制,可以非常容易地扩充ERP系统功能,非常容易地让业务工作自动化。 Odoo自动化动作 如下图,增...