Beispiel #1
0
    def act_on_users(logger: logging.Logger, server: object, action_name: str,
                     server_method: Callable,
                     args: argparse.Namespace) -> None:
        n_users_handled: int = 0
        number_of_errors: int = 0
        n_users_listed: int = UserCommand.validate_file_for_import(
            args.users, logger, strict=args.require_all_valid)
        logger.debug(
            _("importcsvsummary.line.processed").format(n_users_listed))

        group = None
        try:
            group = UserCommand.find_group(logger, server, args.name)
        except TSC.ServerResponseError as e:
            Errors.exit_with_error(
                logger,
                _("errors.reportable.impersonation.group_not_found").format(
                    args.name),
                exception=e)

        error_list = []
        user_obj_list: List[TSC.UserItem] = UserCommand.get_users_from_file(
            args.users)
        logger.debug(
            _("tabcmd.result.success.parsed_users").format(len(user_obj_list)))
        for user_obj in user_obj_list:
            username: str = user_obj.name or "unknown user"
            try:
                user_id: str = UserCommand.find_user_id(
                    logger, server, username)
                logger.debug("{} user {} ({})".format(action_name, username,
                                                      user_id))
            except TSC.ServerResponseError as e:
                Errors.check_common_error_codes_and_explain(logger, e)
                number_of_errors += 1
                error_list.append(e)
                logger.debug(_("tabcmd.result.failure.user").format(username))
                continue

            try:
                server_method(group, user_id)
                n_users_handled += 1
                logger.info(
                    _("tabcmd.result.success.user_actions").format(
                        action_name, username, group))
            except TSC.ServerResponseError as e:
                Errors.check_common_error_codes_and_explain(logger, e)
                number_of_errors += 1
                error_list.append(e)

        logger.info(_("session.monitorjob.percent_complete").format(100))
        logger.info(
            _("importcsvsummary.errors.count").format(number_of_errors))
        if number_of_errors > 0:
            logger.info(_("importcsvsummary.error.details").format(error_list))
    def run_command(args):
        logger = log(__class__.__name__, args.logging_level)
        logger.debug(_("tabcmd.launching"))
        session = Session()
        server = session.create_session(args)

        logger.info(_("deleteusers.status").format(args.filename.name))

        UserCommand.validate_file_for_import(args.filename,
                                             logger,
                                             strict=args.require_all_valid)
        number_of_users_deleted = 0
        number_of_errors = 0
        user_obj_list = UserCommand.get_users_from_file(args.filename, logger)

        logger.debug("Users: {}".format(len(user_obj_list)))

        error_list = []
        for user_obj in user_obj_list:
            logger.info(
                _("importcsvsummary.line.processed").format(
                    number_of_users_deleted))
            try:
                user_id = UserCommand.find_user_id(logger, server,
                                                   user_obj.name)
                server.users.remove(user_id)
                logger.debug(
                    _("tabcmd.result.success.delete_user").format(
                        user_obj.name, user_id))
                number_of_users_deleted += 1
            except Exception as e:
                Errors.check_common_error_codes_and_explain(logger, e)
                number_of_errors += 1
                error_list.append(e)

        logger.info(
            _("importcsvsummary.line.processed").format(
                number_of_users_deleted))
        logger.info(
            _("importcsvsummary.errors.count").format(number_of_errors))
        if number_of_errors > 0:
            logger.info(_("importcsvsummary.error.details").format(error_list))