From f28e1cec30f1a50f26081b5ef90baa0b043a7438 Mon Sep 17 00:00:00 2001 From: Tomas 'Jethro' Pokorny Date: Tue, 16 Mar 2021 21:36:59 +0100 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=20management=20command=20pro?= =?UTF-8?q?=20ukl=C3=A1d=C3=A1n=C3=AD=20a=20na=C4=8D=C3=ADt=C3=A1n=C3=AD?= =?UTF-8?q?=20pr=C3=A1v=20skupiny=20org.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commands/load_org_permissions.py | 26 +++++++++++++++++++ .../commands/save_org_permissions.py | 22 ++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 seminar/management/commands/load_org_permissions.py create mode 100644 seminar/management/commands/save_org_permissions.py diff --git a/seminar/management/commands/load_org_permissions.py b/seminar/management/commands/load_org_permissions.py new file mode 100644 index 00000000..90dc36c4 --- /dev/null +++ b/seminar/management/commands/load_org_permissions.py @@ -0,0 +1,26 @@ +# -*- 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]) + 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() + diff --git a/seminar/management/commands/save_org_permissions.py b/seminar/management/commands/save_org_permissions.py new file mode 100644 index 00000000..a6814e6f --- /dev/null +++ b/seminar/management/commands/save_org_permissions.py @@ -0,0 +1,22 @@ +# -*- 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 +import json + +class Command(BaseCommand): + """ + Dump permissions for group 'org' such that them can be used on an other machine. + + """ + def handle(self, *args, **options): + orgroup = Group.objects.get(name='org') + permissions = [] + for p in orgroup.permissions.all(): + permissions.append({ + 'codename': p.codename, + 'ct_app_label': p.content_type.app_label, + 'ct_model': p.content_type.model}) + print(json.dumps(permissions)) +