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!"

Add a management command to create realm administrators.
Add a management command to create realm administrators.

(imported from commit ab2dd580a206f29086c0d5a4e717c1bfd65a7435)
