Djangoのgroup permissionをプログラム内で付ける

Python

権限周りをプログラムでいじれると何かと便利

Djangoでは既存の機能でユーザーの権限をグループで管理する機能が付いていますが、これが何かと便利です。
グループ毎に、使わせる使わせないの制御が出来るので、良く使う機能の1つです。

今回は、テストケースを生成する上で、プログラム内でユーザーに付加する必要があり、少し調べる必要が出てきました。

どのようにグループに権限を追加するか

group permission 自体は auth modelGroup に紐付いており、 ManyToMany で定義されているテーブルです。
なので、以下の通り、 Group を呼び出した後で、permissionsadd することで追加することが出来るようになりました。

from django.contrib.auth.models import Group, Permission

perm = Permission.objects.get(codename='change_something')
group = Group.objects.get(pk=1)
group.permissions.add(perm)

ポイント

プログラム内で権限を付与出来るようになり、テスト時のユーザーに最初から権限を付与しておく必要がなくなりました
ユーザーのデータ自体に後から権限を付けてしまうと、他のテスト自体に影響してしまったりするので、1つのテストケース内で権限を付与出来るというのは有り難いですね。

コメントを残す