Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 9491|回复: 2

odoo 权限设置

  [复制链接]

68

主题

96

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
发表于 2018-10-18 11:03:27 | 显示全部楼层 |阅读模式
*权限管理的四个层次
    # 菜单级别:不属于指定菜单所包含组的用户看不到该菜单,不客全,只是隐藏
                 菜单,若知道菜单ID,仍然可以通过指定URL访问
    # 对象级别:对某个对角是否有'创建,读取,修改,删除'的权限,可以简单理解为
                表对象
    # 记录级别:对对象表中的数据的访问权限,比如访问“客户”对象,业务员只能对自己创建
                的客户有访问权限,而经理可以访问其管辖的业务员所有的“客户”对象
    # 字段级别:一个对象或表上的某些字段的访问权限,比如产品的成本字段只有经理有读权限
* 建立权限组
      这是我们常说的用户组,会通常放在“模块名_security.xml”这个文件中
      例如:
      <record id="base.group_hr_manager" model="res.groups">
        <field name="name">Manager</field>
        <field name="comment">the user will have an access to the human resources configuration as well as statistic reports.</field>
        <field name="category_id" ref="base.module_category_human_resources"/>
        <field name="implied_ids" eval="[(4, ref('base.group_hr_user'))]"/>
        <field name="users" eval="[(4, ref('base.user_root'))]"/>
     </record>
      @name:用户组名,这个或以翻译的
      @comment:用户组的注释
      @category_id 用户组所属的模块名
      @implied_ids 基于哪个用户组,这个层级关系 <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>是最基础的
       用户名,最初是基于这个,后面一层一层递增,像上面 base.group_hr_user 定义时就是基于最基础
      @users 预设用户属于这个用户组
     
* 权限组
    权限管理核心是权限组,每个权限组,可以设置权限组的 Menus,Access Right, Record Rule
    # Menus:
        定义该权限组可以访问哪些菜单,若该权限组可以访问某父菜单,父菜单对应的子菜单会显示出来
        若不想显示其子菜单,可以把其子菜单加入 "Useablity/No One" 权限组。
    # Access Right:
        定义该权限组可以访问哪些对象,以及拥有 增、查、改、删的哪个权限    (create,read,write,unlink)
    # Record Rule:
        定义该权限组可以访问对象中的哪些记录,以及拥有 增、查、改、删的哪个权限    ,Access Right是
        对对象中的所有记录赋权限,Record Rule 则通过定义domain过滤指定某些记录赋权限
        ['&',('department','=',user.context_department_id.id),('state','=','pr_draft')]
        申购单的部门等于当前用户的部门,且申购单的状态是草稿状态
        
* 基于组的访问控制
   # 视图中
      运用group_id
        <record id="view_order_form_editable_list" model="ir.ui.view">
            <field name="name">sale.order.form.editable.list</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form" />
            <field name="group_id" eval="[(6,0,[ref('product.group.uos'),
                 ref('product.group_stock_packaging'),
                 ref('sale.group_mrp_properties')])]" />
            <field name="arch" type="xml">
                <xpath expr="//field[@name='order_line]/tree" position="before"
                    <attribute name="editable" />
                </xpath>   
            </field>
        </record>
        eval:把eval的值通过作为python运算返回该属性
        ref:视图的方法,根据 module_name.xml_id 返回数据库id
        [(6,0,[xx,yy])]
          (0,_ ,{’field’: value}) 这将创建一个新的记录并连接它
          (1,id,{’field’: value}): 这是更新一个已经连接了的记录的值
          (2,id,_) 这是删除或取消连接某个已经连接了的记录
          (3,id,_) 这是取消连接但不删除一个已经连接了的记录
          (4,id,_) 连接一个已经存在的记录
          (5,_,_) 取消连接但不删除所有已经连接了的记录
          (6,_,[ids]) 用给出的列表替换掉已经连接了的记录
          这里的下划线一般是0或False
     运用groups
       <button name="invoice_pay_customer" type="object" string="Register Payment"
                        attrs="{'invisible': ['|', ('state','!=','open'), ('sent','=',True)]}" groups="base.group_user"/>
       <field name="invoice_line_ids" groups="account.group_account_invoice"/>
       <menuitem name="China Account" id="menu_china_account" parent="account.menu_finance" sequence="4" groups="account.group_account_user"/>
   #在模型中
     package_id = fields.Many2one(
        comodel_name='stock.quant.package', string='Package',
        related='quant.package_id', readonly=True,
        groups="stock.group_tracking_lot")
   要有多个用户组时,用户组之间用逗号隔开
   #小结  
    只有在视图中有完整标签时,会用group_id,其它都用groups
*访问权限管理:
  对于其内的数据访问权限管理有两种机制:
  第一种是模型访问权限管理 (accessrule);
  第二种是记录规则管理 (record rule)。
  record rule 是对accessrule的细化 ,带条件,比如记录是什么状态的可以访问
  如果不为模块设置规则,默认只有Administator才能访问这个模型的数据
  record rule 对 Administator 用户是无效的,而access rule还是有效

回复

使用道具 举报

68

主题

96

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
 楼主| 发表于 2018-10-18 11:04:28 | 显示全部楼层
问题已解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-4-18 19:34 , Processed in 0.011903 second(s), 9 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表