odoo覆盖对象的组权限

odoo override group permission on object

我在 odoo 8 中有一个任务,我必须创建一个名为 ( picker ) 的用户组,它将继承到仓库用户组。作为仓库经理 -> 用户 -> 测试。所以我按如下方式创建了用户:

<record id="warehouse_picker" model="res.groups">
    <field name="name">picker </field>
    <field name="category_id" ref="base.module_category_warehouse_management"/>
    <field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
 </record>

我还添加了此代码以授予此用户访问菜单仓库的权限:

<record id="stock.group_stock_user" model="res.groups">
     <field name="implied_ids" eval="[(4, ref('warehouse_picker')),(4, ref('stock.group_locations'))]"/>
</record>  

现在,组仓库/用户对对象 (stock.picking) 的访问规则为 1,1,1,1。我需要将此规则 (stock.picking) 限制/覆盖为 1,0,0,0

我尝试了以下代码,但没有用:

<record id="warehouse_picker_rule" model="ir.rule">
    <field name="name">Warehouse Picker Rule</field>
    <field name="model_id" ref="stock.model_stock_picking"/>
    <field name="domain_force">[(1, '=', 1)]</field>
    <field name="groups" eval="[(4, ref('warehouse_picker'))]"/>
    <field name="perm_read" eval="False"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="True"/>
</record>

谁能帮我解决/覆盖现有规则。我不想触及核心模块规则。

谢谢,

做一件事,创建一个名为 "ir.model.access.csv" 的 csv 文件并在其中创建一条记录。

此 csv 文件必须包含以下列。

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink       
access_id,access_name,model_stock_picking,group_name_external_id,1,0,0,0

并将其添加到 openerp.py 文件中,这样它将针对特定模型将此访问权限设置为特定组。假设您想为所有人设置此权限,然后只需将 "group_id" 字段留空,然后它将为所有用户设置此默认权限。

检查此规则来自哪个模块,然后您可以像这样覆盖:

<record id="module.rule_id" model="ir.model.access">
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="False"/>
</record>

例如,模块是 stock 并且 rule_id(您可以在 GUI 中使用调试模式找到它或查看模块 ir.model.access.csv 第一列)是 move_read_all:

<record id="stock.move_read_all" model="ir.model.access">
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="False"/>
</record>

如果我理解你的愿望是正确的,那么你必须按以下方式覆盖它:

<record id="stock.access_stock_picking_user" model="ir.model.access">
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="False"/>
</record>

您需要将对 stock 的依赖项放入自定义模块的清单文件中。