2

OpenERP 6.1でウィンドウを開くために新しいメニュー項目を作成しようとすると、次のエラーが発生します。

AccessError

アクセスルールで禁止されている操作、または削除済みのドキュメントに対して実行された操作(操作:作成、ドキュメントタイプ:ir.values)。

すべてのセキュリティチェックをバイパスする魔法の管理者アカウントをいつでも使用できますが、可能であれば、より細かく制御したいと思います。これが失敗するのはなぜですか。また、一部の管理者がメニュー項目を作成できるようにするにはどうすればよいですか。

メニュー項目を作成するモジュールを書きたいので、特に興味があります。

4

1 に答える 1

2

たくさん掘り下げた後、私はエラーの原因を見つけました。「デフォルト:個人の値のみを変更する」というレコードルールがあります。これはリビジョン3560.1.7で追加され、リビジョン3713にマージされました。コミットコメントは言う:

[IMP] ir.values:セキュリティの向上:ユーザーは個人のデフォルトにのみ書き込むことができます

すべてのユーザーのデフォルトを設定したり、アクションバインディングを変更したりするには、管理者アクセスが必要です。

マジック管理者アカウントを使用してのみアクションバインディングを変更できるようにすることを意図しているようです。メニュー項目を変更するには、アクションバインディングを変更する必要があります。

これをどのように回避できますか?さて、あなたは記録規則をより洗練させることができます。ほとんどのユーザーを自分のデフォルトの編集に制限し、管理ユーザーがir_valuesテーブル内のすべてのレコードを編集できるようにする必要があります。すべてのユーザーはHumanResources/ Employeeグループに属しているため、そのグループを「デフォルト:個人の値のみを変更する」ルールに追加して、グローバルルールにならないようにしました。ir_values次に、 「デフォルトとアクション:任意の値を変更する」という新しいルールを追加しました。ダミーのドメインフィルターを使用しました。[(1,'=',1)]それを管理/構成グループに割り当てました。これで、ほとんどのユーザーは最初のルールにのみ一致し、自分のデフォルトを編集することしかできなくなります。構成グループ内の誰もが両方のルールに一致するため、ルールはORと組み合わされ、テーブル内のすべてのレコードを編集できるようになります。これを機能させるために重要なことは、すべてのユーザーがメンバーであるグループまたはグループのセットが必要なことです。

于 2013-02-19T00:52:56.727 に答える