diff --git a/zephyr/management/commands/knight.py b/zephyr/management/commands/knight.py new file mode 100644 index 0000000000..1337aaeb9b --- /dev/null +++ b/zephyr/management/commands/knight.py @@ -0,0 +1,36 @@ +from __future__ import absolute_import + +import sys +from optparse import make_option + +from django.core.management.base import BaseCommand, CommandError +from django.core.exceptions import ValidationError +from django.db.utils import IntegrityError +from django.core import validators + +from guardian.shortcuts import assign_perm + +from zephyr.models import Realm, UserProfile + +class Command(BaseCommand): + help = """Give an existing user administrative permissions over their (own) Realm. + +ONLY perform this on customer request from an authorized person. +""" + + option_list = BaseCommand.option_list + ( + + def handle(self, *args, **options): + try: + email = args[0] + except ValueError: + raise CommandError("""Please specify a user.""") + try: + profile = UserProfile.objects.get(email=email) + except ValidationError: + raise CommandError("No such user.") + if profile.has_perm('administer', profile.realm): + raise CommandError("User already has permission for this realm.") + else: + assign_perm('administer', profile, profile.realm) + print "Done!"