diff --git a/invenio_utilities_tuw/cli/options.py b/invenio_utilities_tuw/cli/options.py index b85d4c2e8625a3ed4bda8ca5552c6bc3f0752c24..8f8f5707b42f1c2cd8b9bfa0d3565c24c9df8418 100644 --- a/invenio_utilities_tuw/cli/options.py +++ b/invenio_utilities_tuw/cli/options.py @@ -116,3 +116,10 @@ option_hide_user_roles = click.option( default=False, help="show (or hide) the roles associated with the users", ) + +option_hide_user_names = click.option( + "--show-names/--hide-names", + "-n/-N", + default=False, + help="show (or hide) the full names of the users as per their profile", +) diff --git a/invenio_utilities_tuw/cli/users.py b/invenio_utilities_tuw/cli/users.py index 61db784d24bdb108e29989a387eade1768990001..1ad624e0393d3fe658cd2f7efbe344e139652355 100644 --- a/invenio_utilities_tuw/cli/users.py +++ b/invenio_utilities_tuw/cli/users.py @@ -13,7 +13,11 @@ from flask.cli import with_appcontext from invenio_accounts.models import User from ..utils import get_user_by_identifier, similarity -from .options import option_hide_user_roles, option_only_list_active_users +from .options import ( + option_hide_user_names, + option_hide_user_roles, + option_only_list_active_users, +) @click.group() @@ -23,9 +27,10 @@ def users(): @users.command("list") @option_only_list_active_users +@option_hide_user_names @option_hide_user_roles @with_appcontext -def list_users(only_active, show_roles): +def list_users(only_active, show_names, show_roles): """List registered users.""" users = User.query.order_by(User.id) @@ -34,6 +39,12 @@ def list_users(only_active, show_roles): for user in users: line = f"{user.id} {user.email}" + if show_names: + name = "N/A" + if user.profile and user.profile.full_name: + name = f"({user.profile.full_name})" + line += f" {name}" + if show_roles: line += f" {[r.name for r in user.roles]}" @@ -42,15 +53,19 @@ def list_users(only_active, show_roles): @users.command("show") +@option_hide_user_names @option_hide_user_roles @click.argument("user_id") @with_appcontext -def show_user(user_id, show_roles): +def show_user(user_id, show_names, show_roles): """Show more information about the specified user.""" user = get_user_by_identifier(user_id) - full_name = f'"{user.profile.full_name}"' if user.profile else "N/A" + full_name = f"({user.profile.full_name})" if user.profile else "N/A" + + line = f"{user.id} {user.email}" + if show_names: + line += f" {full_name}" - line = f"{user.id} {user.email} {full_name}" if show_roles: line += f" {[r.name for r in user.roles]}"