Add --role option to debusine-admin group members (#1290)

Changes

1. debusine/server/management/commands/group.py

  • Added --role argument to the members subparser, accepting member or admin (default: member).
  • Updated handle_members() to resolve the --role string into a GroupRoles enum value and pass it to group.add_user().
  • Fixed --set to use group.users.clear() followed by individual group.add_user(user, role=role) calls, so the requested role is correctly applied (the previous group.users.set() bypassed role assignment).
  • Switched the list output from Users to the new GroupMembers printer.

2. debusine/server/management/management_utils.py

  • Added GroupMembers printer class that takes a GroupMembership queryset and displays username, email, role, and date_joined columns.

3. debusine/server/management/commands/tests/test_group.py

  • Updated test_members_list_empty and test_members_list to account for the new role column (column indices shifted).
  • Added 7 new test cases covering:
    • List output shows correct role per member
    • --add without --role defaults to MEMBER
    • --add --role member explicitly sets MEMBER
    • --add --role admin sets ADMIN
    • --add with multiple users assigns the same role to all
    • --set --role admin replaces all members with ADMIN role
    • Invalid --role value is rejected by argparse

Usage

# Add a member with the default role (member)
debusine-admin group members scope/group --add username

# Add a member with admin role
debusine-admin group members scope/group --add username --role admin

# Replace all members, assigning admin role to each
debusine-admin group members scope/group --set user1 user2 --role admin

# List members (now shows role column)
debusine-admin group members scope/group

Screenshots

List output (before)

image

List output (after)

image

Adding an admin member

image

Edited by Colin Watson

Merge request reports

Loading