zoukankan      html  css  js  c++  java
  • 权限组创建 eval 解析

    创建权限组

    1. <record id="base.group_website_publisher" model="res.groups">
    2. <field name="name">Display Editor Bar on Website</field>
    3. <field name="category_id" ref="base.module_category_website"/>
    4. </record>
    5. <record id="base.group_website_designer" model="res.groups">
    6. <field name="name">Manage Website and qWeb view</field>
    7. <field name="users" eval="[(4, ref('base.user_root'))]"/>
    8. <field name="implied_ids" eval="[(4, ref('base.group_website_publisher'))]"/>
    9. <field name="category_id" ref="base.module_category_website"/>
    10. </record>

    以上截选自 odoo website 模块源码,创建了两个组

    name 组的描述名称
    category_id 指定此组属于哪个应用程序(模块)
    users 指定了组里面的用户,这里表示把admin用户添加到该组

    eval 解析
    (4,ID)添加主从链接关系到id=ID的对象。

    (3,ID)去除和id=ID的对象主从链接关系,但是不删除这个对象

    (2,ID) 去除和id=ID的对象主从链接关系,并且删除这个对象(调用unlink方法)

    (5) 去除所有的链接关系,也就是循环所有的从数据且调用(3,ID)

    (6,0,[IDs]) 用IDs里面的记录替换原来链接的记录,即先执行(5)再循环IDs执行(4,ID)

    组和菜单

    
    
    1. <record model="ir.ui.menu" id=" memu_id1">
    2. <field name="name" >menu1</field>
    3. <field name="groups_id" eval="[(6,0,[ref('A'),ref('B')]),]"/>
    4. <field name="sequence">1</field>
    5. </record>

    name 菜单名称
    groups_id 哪些组可以访问该菜单

    以上内容表示A组与B组的成员都可以访问menu1菜单

    另一中写法:

    
    
    1. <menuitem id="menu_id1 " name="menu1" parent="menu_p" sequence="1" groups="A,B "/>

    base.group_user 是一个通用的系统内置用户组, Odoo系统中所有用户默认属于此组

    记录规则

    权限规则可用于更精细化的权限控制,对应【设置】->【安全】->【记录规则】的数据

    
    
    1. <record model="ir.rule" id="rule1">
    2. <field name="name">rule1</field>
    3. <field name="model_id" ref="model_model1"/>
    4. <field name="global" eval="True"/>
    5. <field name="domain_force">[1,’=’,1]</field>
    6. <field name="groups" eval="[(4,ref('A'))]"/>
    7. </record>

    name 规则名称
    model_id 对应的模型
    global 是否是全局
    domain_force 过滤条件
    groups 属于哪个组

    以上表示A组的成员就可以获取model_model1的所有数据,可以看出domain_force是控制的关键

    访问控制列表(组和权限映射表)

    另一种表达权限规则的方式是编写 ir.model.access.csv 文件
    对应【设置】->【安全】->【访问控制列表】的数据
    示例:

    idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
    access_xxx xxxxx model_website_menu base.group_website_designer 1 1 1 1

    model_id:id 对应的对象模型,
    写法示例:website.model_website_config_settings
    如果内容本身在website模块中则可以省略website.
    后面则为模型的name将”.”替换成”-“的结果,在前面加model_

    group_id:id 哪个组
    perm_readperm_writeperm_createperm_unlink 增删改查权限。1 有权限 0 无权限

  • 相关阅读:
    计算数组的逆序对个数
    处理类型(typedef,uisng,auto,decltype)
    constexpr与常量表达式(c++11标准)
    const的限定
    void*类型的指针
    linux终端拖动鼠标总是产生ctrl+c
    Linux hrtimer分析(2)
    Linux hrtimer分析(一)
    Alarm(硬件时钟) init
    第十一章 Android 内核驱动——Alarm
  • 原文地址:https://www.cnblogs.com/zcy1103/p/8301047.html
Copyright © 2011-2022 走看看