Odoo记录的用户数据不会为登录用户更新

问题描述 投票:2回答:2

我需要帮助Odoo 11中的一些自定义规则配置。

目前我正在制定一条规则,允许用户只访问某些产品类别,因为我有一个指定这些类别的Many2many字段:

product_category_ids = fields.Many2many('product.category')

以下是仅允许访问该类别的规则:

<record model="ir.rule" id="product_template_category_users">
    <field name="name">product.template.category.users</field>
    <field name="model_id" ref="product.model_product_template"/>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="True"/>
    <field name="perm_unlink" eval="True"/>
    <field name="perm_create" eval="True"/>
    <field name="domain_force">[('categ_id', 'child_of', user.product_category_ids.ids)]</field>
</record>

规则工作正常,但我有这个问题:

  • 使用具有该规则的用户“A”登录
  • 使用用户“B”登录另一个会话,并更新用户“A”,将新类别添加到类别字段
  • 返回用户“A”并且规则未显示添加的新类别,也重新加载页面不起作用。

当我更改当前公司或重新加载Odoo服务时,更改仅适用于“A”用户。

我认为它必须是用户登录时存储数据的用户,可能是某种方式来更新该数据并允许规则从“用户”读取它。我需要对用户进行的更改实时应用于已连接的用户,而无需更改当前公司或重新加载Odoo服务。

谢谢你的帮助。

odoo odoo-11
2个回答
0
投票

这很奇怪,它应该工作,但只有在更改当前公司或重新启动Odoo服务器之后。

您可以在加载了演示数据的空白数据库和/或新数据库上尝试修改吗?如果可能的话,最好在完全不同的服务器上测试它,看看问题是否存在。

也许你也可以尝试像这样修改你的force_domain

['|', ('categ_id', 'in', user.product_category_ids.ids), ('categ_id', 'child_of', user.product_category_ids.ids)]

0
投票

如果有人遇到同样的问题,每次我在用户的产品类别字段中进行更改时,我都会使用此功能解决它

self.env['ir.rule'].clear_cache()

该代码清除规则的缓存,以便规则应用新域。

© www.soinside.com 2019 - 2024. All rights reserved.