2017-02-14 12 views
0

モジュールを読み取り専用にしたいと考えています。親メニューをクリックした後、すべてのサブメニューも読み取り専用にする必要があります。 試しましたfields_view_get()しかし、あまりにも多くのフォームを書く方法があります! これを行うには他の方法があります。特定の日付に基づいてモジュールを永久に無効にしています。 助けてください。特定の時間の後にモジュールからのアクセスを取り消す方法はありますか?

+0

モジュールとサブメニューについて話したときに読んだだけではどういう意味ですか? –

+0

「モジュールを無効にする」とはどういう意味ですか?しばらくしてモジュールの動作を停止しますか? – Majikat

+0

@GeorgeDaramouskas私たちの要求は、古いデータベースのデータを読み込み専用にするためにはあまりにもシフトしています。私たちは移行していますが、特定の日付の後に新しいデータを作成するアクセス権をユーザーに与えずに、古いデータ/フローを今のところ保持したいと考えています。基本的にすべてのフォームを読み取り専用にします。 – Meg

答えて

0

これを達成するために実行できるアルゴリズムは、ユーザーがサーバーにどのようなアクセスを行うかによって異なります。彼らが設定メニューにアクセスできない場合は、あなたのモジュールのサブスクリプションを検証するX分ごとにcronジョブを実行させることができます。

cronジョブは、そのサブスクリプションが無効であるとあなたには、いくつかのメニューがunclickableしたいか、いくつかのビューを使用すると、特定のモジュールがどのようなビューを作成しない見つけるために、データベースに対して次のクエリを実行できるだけ読むことを発見した場合:

select * from ir_model_data where module = 'your_module_name';

ir_model_dataモデルには、実際にモジュールに含まれるすべてのキーが含まれています。 XMLファイルを使用して作成した(または作成していない)メニュー、ビュー、グループなどはすべてそこにあります。

カーソル内のすべてのレコードを取得したら、cr.fetchall()に戻り、戻り値をループします。各レコードはmodelres_idとなります。関心のあるメニューやビューがあることがわかると、activeフィールドをfalseに設定して、ビューやメニューを完全に隠すことができます。それはmodel='ir.model.fields'を持つレコードであるあなた、あなたの結果では、ループやフィールドを見つける(このフィールドは読み取り専用であるように、あなたがTrueにreadonlyフィールドを設定することができます

。あなたはすべてのフィールドのためにこれを行うことができます。

ユーザーが設定(管理者権限)にアクセスできる場合は、Odooのcronジョブを使用せず、オペレーティングシステムから実行されるcronジョブを設定して外部のものを呼び出さないようにする必要があります上記のプロセスを実行するPythonスクリプト

また、ビュー/メニュー/フィールドを読み取り専用に設定すると、それらはWebブラウザ上で読み取り専用としてレンダリングされることがありますが、エンドユーザがrpc要求を作成し、不適切なjsonデータを送信するのを止めるものは何もありません。

ユーザーがあなたのサーバーへのSSHアクセス権を持っている場合、あまりできることはありません。

関連する問題