3

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 サービスをリロードしたりせずに、ユーザーに加えられた変更が接続ユーザーにリアルタイムで適用される必要があります。

助けてくれてありがとう。

4

3 に答える 3

0

モデルのメソッドに 追加self.env['ir.rule'].clear_cache()します。create()write()

于 2019-08-07T17:00:34.293 に答える
0

誰かが同じ問題を抱えている場合は、ユーザーの製品カテゴリ フィールドを変更するたびに、この関数を使用して解決します

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

このコードは、ルールのキャッシュをクリアして、ルールが新しいドメインに適用されるようにします。

于 2018-05-09T15:39:19.963 に答える