我需要帮助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>
规则工作正常,但我有这个问题:
当我更改当前公司或重新加载Odoo服务时,更改仅适用于“A”用户。
我认为它必须是用户登录时存储数据的用户,可能是某种方式来更新该数据并允许规则从“用户”读取它。我需要对用户进行的更改实时应用于已连接的用户,而无需更改当前公司或重新加载Odoo服务。
谢谢你的帮助。
这很奇怪,它应该工作,但只有在更改当前公司或重新启动Odoo服务器之后。
您可以在加载了演示数据的空白数据库和/或新数据库上尝试修改吗?如果可能的话,最好在完全不同的服务器上测试它,看看问题是否存在。
也许你也可以尝试像这样修改你的force_domain
:
['|', ('categ_id', 'in', user.product_category_ids.ids), ('categ_id', 'child_of', user.product_category_ids.ids)]
如果有人遇到同样的问题,每次我在用户的产品类别字段中进行更改时,我都会使用此功能解决它
self.env['ir.rule'].clear_cache()
该代码清除规则的缓存,以便规则应用新域。