import sys from django.core.management.base import BaseCommand, CommandError from django.core.exceptions import ValidationError from django.db.utils import IntegrityError from django.utils.timezone import now from django.core import validators from zephyr.models import Realm, do_create_user from zephyr.views import do_send_message, notify_new_user from zephyr.lib.initial_password import initial_password class Command(BaseCommand): help = "Create the specified user with a default initial password." def handle(self, *args, **options): try: email, full_name = args try: validators.validate_email(email) except ValidationError: raise CommandError("Invalid email address.") except ValueError: if len(args) != 0: raise CommandError("Either specify an email and full name" + \ "as two parameters, or specify no parameters for" + \ "interactive user creation.") return 1 else: while True: email = raw_input("Email: ") try: validators.validate_email(email) break except ValidationError: print >> sys.stderr, "Invalid email address." full_name = raw_input("Full name: ") try: realm = Realm.objects.get(domain=email.split('@')[-1]) except Realm.DoesNotExist: raise CommandError("Realm does not exist.") try: notify_new_user(do_create_user(email, initial_password(email), realm, full_name, email.split('@')[0]), internal=True) except IntegrityError: raise CommandError("User already exists.")