2010年3月23日火曜日

Djangoのパーミッションテーブルを更新するスクリプト

Djangoでproxy modelというものを使って、ひとつのモデルを複数にわけて、
管理するようにした際に、片方のモデルがadminのユーザーパーミッション一覧に
表示されなくて困っていた。

ユーザーパーミッションのテーブルを更新する方法がないかと
調べてみるとこんなページを発見

http://www.djangosnippets.org/snippets/698/

これを参考にパーミッションを更新するスクリプトを書いてみた。


# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
from django.contrib.contenttypes.management import update_all_contenttypes
from django.contrib.auth.management import create_permissions
from django.db.models import get_apps


"""
パーミッションを更新する
"""
class Command(BaseCommand):
def handle(self, *args, **options):

# Add any missing content types
update_all_contenttypes()

# Add any missing permissions
for app in get_apps():
create_permissions(app, None, 2)



これをインストール済みのアプリのmanagement/commands/syncpermissions.pyとして保存すれば、以下のコマンドで更新できる。


$ python manage.py syncpermissions

0 件のコメント:

コメントを投稿