def migrate_author(self, author_name):
        """
        Handle actions for migrating the authors.
        """
        action_text = "The author '%s' needs to be migrated to an user:\n"\
                      "1. Use an existing user ?\n"\
                      "2. Create a new user ?\n"\
                      "Please select a choice: " % self.style.ITEM(author_name)
        while 42:
            selection = input(smart_str(action_text))
            if selection and selection in '12':
                break
        if selection == '1':
            users = Author.objects.all()
            if users.count() == 1:
                username = users[0].get_username()
                preselected_user = username
                usernames = [username]
                usernames_display = ['[%s]' % username]
            else:
                usernames = []
                usernames_display = []
                preselected_user = None
                for user in users:
                    username = user.get_username()
                    if username == author_name:
                        usernames_display.append('[%s]' % username)
                        preselected_user = username
                    else:
                        usernames_display.append(username)
                    usernames.append(username)
            while 42:
                user_text = "1. Select your user, by typing " \
                            "one of theses usernames:\n"\
                            "%s or 'back'\n"\
                            "Please select a choice: " % \
                            ', '.join(usernames_display)
                user_selected = input(user_text)
                if user_selected in usernames:
                    break
                if user_selected == '' and preselected_user:
                    user_selected = preselected_user
                    break
                if user_selected.strip() == 'back':
                    return self.migrate_author(author_name)
            return users.get(**{users[0].USERNAME_FIELD: user_selected})
        else:
            create_text = "2. Please type the email of " \
                          "the '%s' user or 'back': " % author_name
            author_mail = input(create_text)
            if author_mail.strip() == 'back':
                return self.migrate_author(author_name)
            try:
                return Author.objects.create_user(author_name, author_mail)
            except IntegrityError:
                return Author.objects.get(
                    **{Author.USERNAME_FIELD: author_name})
def migrate_author ( self , author_name ) : action_text = "The author '%s' needs to be migrated to an user:\n" "1. Use an existing user ?\n" "2. Create a new user ?\n" "Please select a choice: " % self . style . ITEM ( author_name ) while 42 : selection = input ( smart_str ( action_text ) ) if selection and selection in '12' : break if selection == '1' : users = Author . objects . all ( ) if users . count ( ) == 1 : username = users [ 0 ] . get_username ( ) preselected_user = username usernames = [ username ] usernames_display = [ '[%s]' % username ] else : usernames = [ ] usernames_display = [ ] preselected_user = None for user in users : username = user . get_username ( ) if username == author_name : usernames_display . append ( '[%s]' % username ) preselected_user = username else : usernames_display . append ( username ) usernames . append ( username ) while 42 : user_text = "1. Select your user, by typing " "one of theses usernames:\n" "%s or 'back'\n" "Please select a choice: " % ', ' . join ( usernames_display ) user_selected = input ( user_text ) if user_selected in usernames : break if user_selected == '' and preselected_user : user_selected = preselected_user break if user_selected . strip ( ) == 'back' : return self . migrate_author ( author_name ) return users . get ( ** { users [ 0 ] . USERNAME_FIELD : user_selected } ) else : create_text = "2. Please type the email of " "the '%s' user or 'back': " % author_name author_mail = input ( create_text ) if author_mail . strip ( ) == 'back' : return self . migrate_author ( author_name ) try : return Author . objects . create_user ( author_name , author_mail ) except IntegrityError : return Author . objects . get ( ** { Author . USERNAME_FIELD : author_name } )
Handle actions for migrating the authors.