You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
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
|
|
|
|
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):
|
|
|
|
orgroup = Group.objects.get(name='org')
|
|
|
|
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()
|
|
|
|
|