from django.core.management.base import BaseCommand from django.contrib.sessions.models import Session from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist import json import argparse class Command(BaseCommand): """ """ def add_arguments(self, parser): parser.add_argument('file', nargs=1, type=argparse.FileType('r', encoding='utf8')) def handle(self, *args, **options): try: orgroup = Group.objects.get(name='org') except ObjectDoesNotExist: orgroup = Group(name='org') orgroup.save() permissions = json.load(options['file'][0]) orgroup.permissions.clear() for jp in permissions: ct = ContentType.objects.get(app_label = jp['ct_app_label'], model = jp['ct_model']) perm = Permission.objects.get(content_type = ct, codename = jp['codename']) orgroup.permissions.add(perm) orgroup.save()