'Creates a user (both SSL and regular)'

def create_user(self, uname, name, password=None):

    if (not uname):
        return _('Must    provide    username')
    if (not name):
        return _('Must    provide    full    name')
    email_domain = getattr(settings, 'SSL_AUTH_EMAIL_DOMAIN', 'MIT.EDU')
    msg = u''
    if settings.FEATURES['AUTH_USE_CERTIFICATES']:
        if ('@' not in uname):
            email = '{0}@{1}'.format(uname, email_domain)
        else:
            email = uname
        if (not email.endswith('@{0}'.format(email_domain))):
            msg += _('Email    address    must    end    in    {domain}').format(domain='@{0}'.format(email_domain))
            return msg
        mit_domain = 'ssl:MIT'
        if ExternalAuthMap.objects.filter(external_id=email, external_domain=mit_domain):
            msg += _('Failed    -    email    {email_addr}    already    exists    as    {external_id}').format(email_addr=email, external_id='external_id')
            return msg
        new_password = generate_password()
    else:
        if (not password):
            return _('Password    must    be    supplied    if    not    using    certificates')
        email = uname
        if ('@' not in email):
            msg += _('email    address    required    (not    username)')
            return msg
        new_password = password
    user = User(username=uname, email=email, is_active=True)
    user.set_password(new_password)
    try:
        user.save()
    except IntegrityError:
        msg += _('Oops,    failed    to    create    user    {user},    {error}').format(user=user, error='IntegrityError')
        return msg
    reg = Registration()
    reg.register(user)
    profile = UserProfile(user=user)
    profile.name = name
    profile.save()
    if settings.FEATURES['AUTH_USE_CERTIFICATES']:
        credential_string = getattr(settings, 'SSL_AUTH_DN_FORMAT_STRING', '/C=US/ST=Massachusetts/O=Massachusetts    Institute    of    Technology/OU=Client    CA    v1/CN={0}/emailAddress={1}')
        credentials = credential_string.format(name, email)
        eamap = ExternalAuthMap(external_id=email, external_email=email, external_domain=mit_domain, external_name=name, internal_password=new_password, external_credentials=json.dumps(credentials))
        eamap.user = user
        eamap.dtsignup = timezone.now()
        eamap.save()
    msg += _('User    {user}    created    successfully!').format(user=user)
    return msg
