0

の POST メソッドに基づいて対応する要素を取得するための静的メソッドを作成する必要がある Permissions クラスがありますviews.py。選択はチェックボックスを介して行われ、好みに基づいて、それらのいずれか、ペア、またはすべてを選択できます。これにより、文字列のリスト (u'OWNER') が作成されます。これは静的メソッドで処理され、対応するPermissions.OWNER, Permissions.HR,Permissions.USER_ADMIN

views.pyPOSTメソッドは次のようになります。

permissions = self.request.get_all('permissions') 
user.new_permission = Permissions.get_permission(permissions)

モデルは次のようになります。

class Permissions(object):
    OWNER = 'OWNER'
    HR = 'HR'
    USER_ADMIN = 'USER_ADMIN'

descriptions = {
    OWNER: """Company owner (full admin)""",
    HR: """Human Resources administrator (access to special fields within job and submissions)""",
    USER_ADMIN: """Add/Delete users, change user permissions""",
}

私がこれまで静的メソッドで持っているもの:

@staticmethod
def get_permissions(permissions):
    new_perms = []
    for permission in permissions:
        name = permission
        if permission == 
        new_perms.append(permission)
    return new_perms

文字列をモデルの値と比較する方法が本当にわかりません...また、質問に正しいタイトルを付けたかどうかもわかりません。

前もって感謝します、

ボリスラフ

4

1 に答える 1

0

あなたのコードにはたくさんの問題があり、複雑すぎるようです。いくつかの python チュートリアルを実行することをお勧めします。クラス定義がどのように機能するかはわかりません。ここでの方法は、あなたがそれを行うことができる1つの方法です。

class Permissions(object):

    _perms = {
        'OWNER': """Company owner (full admin)""",
        'HR': """Human Resources administrator (access to special fields within job and submissions)""",
       'USER_ADMIN': """Add/Delete users, change user permissions""",
    }

    @classmethod
    def get_permissions(cls,permissions):
        new_perms = []
        for choice in permissions:
            if choice in cls._perms:
                new_perms.append(choice)

        return new_perms

    @classmethod
    def get_description(cls,permission)
        return cls._perm.get(permission) 

実際にあなたの質問を読み直すと、あなたが本当に何をしようとしているのかわかりません。モデルについて言及していますが、提供するアクセス許可クラスにはそれが反映されていないため、オブジェクトを照会する必要があると思います。実際、モデルを使用してパーミッションを定義する場合、考えられるパーミッションごとに Permission オブジェクトを持つことになります。

代わりの戦略がたくさんありますが、権限を実際にどのように使用する予定であるかについて詳しく調べていません。(かなりよく開発された許可モデルに repose.who/what を使用します)。最も基本的には、既存のクラスで getattr を使用できます。ただし、チェックが行われていないため、私はそれに熱心ではありません。

class Permissions(object):
    OWNER = 'OWNER'
    HR = 'HR'
    USER_ADMIN = 'USER_ADMIN'

    @classmethod
    def get_permission(cls,permission):
        if hasattr(cls,permission):
            return getattr(cls,permission)
        else:
            raise KeyError("No permission %s" % permission)  # Some better exception should be used.
于 2013-08-16T23:23:42.077 に答える