グループに (既に存在し、meta タグのアクセス許可によって定義された) アクセス許可を追加し、そのための正しい場所を探したいと考えています。sync_db コマンドの後で、すべてのグループに正しい権限が割り当てられていることを確認する必要があります。
post_syncdb シグナルを接続することを考えていましたが、シグナル ドキュメントには次のように書かれています。
syncdb コマンド中にフラッシュ管理コマンドが実行された場合、フラッシュ管理コマンドが失敗する可能性があるため、このシグナルのハンドラーがべき等の変更 (データベースの変更なしなど) を実行することが重要です。
したがって、誰かが sync_db_post シグナルを介して呼び出される管理コマンドでグループにパーミッションを追加することはおそらくお勧めできません。
次のように権限を設定する予定でした。
class UserProfile(models.Model):
user = models.OneToOneField(User)
company = models.ForeignKey(Company, related_name='user_profiles')
department = models.ForeignKey(Department, related_name='user_profiles')
class Meta:
permissions = (
('admin_section_access', 'Access to front-end admin section'),
)
管理コマンドで:
from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
class Command(BaseCommand):
args = 'none'
help = 'Sets the defined group permissions'
def handle(self, *args, **options):
front_end_admin_group, created = Group.objects.get_or_create(name="Front End Admin")
#get the content type for the UserProfile model
user_profile_ct = ContentType.objects.get(app_label='organization', model='userprofile')
admin_section_access_perm = Permission.objects.get(content_type=user_profile_ct, codename="admin_section_access")
front_end_admin_group.permissions.add(admin_section_access_perm)
self.stdout.write('Successfully setup group permissions.')