1

私は CMS を作成していますが、現在いくつかの問題に直面しています。アドバイスが必要です。カスタム許可を定義できるいくつかの異なるモジュール (アプリ) があります。モデルでは、「view_store」、「edit_store」、「delete_store」などのカスタム許可を定義します。そして、管理者、編集者、vip、ユーザーなど、さまざまなユーザーグループを定義しました(グループベースのユーザーアクセス制御が必要です)。

CMS (manage.py initcms) を初期化するコマンドを 1 回実行するときにこれらのグループを作成しています。もちろん、すべての適切なアクセス許可が同時にグループに追加されるようにしたいと考えています。

initcms アクションは syncdb の後に実行されるため、すべてのモデルが DB にあります (もちろん権限に関する情報も含まれます)。

私は心に何かを持っています...これが良い方法ですか、それともあなたがより良い方法を持っていますか? 私について説明しましょう: たとえば、vip ユーザーに、すべてのモデル (この権限が定義されている) からのすべての権限を「view_*」に付与したいと考えています。これは、vip がすべてを表示できることを意味します。データベースを初期化するときに、パターン「LIKE view_%」に適合するすべてのエントリ(すべての権限)を取得し、これらすべてをグループの権限に追加するという考えがあります。

しかし、新しいモジュールが追加されるかどうかの問題...このアクションを再実行して、すべての権限が正しいかどうかを確認する必要があります...グループの権限を動的に処理する方法があるのでしょうか?

4

1 に答える 1

1

考えられる解決策の1つは、Django Signalsを使用することです。これは、モデルの保存方法が呼び出される前または後、M2Mアクションが実行される前または前、syncdbなどの後にトリガーできます。次に、関連する権限をチェックする関数を呼び出し、必要に応じて追加または削除します...

于 2011-02-19T10:56:20.073 に答える