'Creates user, profile, registration, and (usually) social auth.
This synthesizes what happens during /register.
See student.views.register and student.views._do_create_account.'

def create_user_models_for_existing_account(self, strategy, email, password, username, skip_social_auth=False):

    response_data = self.get_response_data()
    uid = strategy.request.backend.get_user_id(response_data, response_data)
    user = social_utils.Storage.user.create_user(email=email, password=password, username=username)
    profile = student_models.UserProfile(user=user)
    profile.save()
    registration = student_models.Registration()
    registration.register(user)
    registration.save()
    if (not skip_social_auth):
        social_utils.Storage.user.create_social_auth(user, uid, self.provider.backend_name)
    return user
