Add --role option to debusine-admin group members (#1290)
Changes
1. debusine/server/management/commands/group.py
- Added
--roleargument to thememberssubparser, acceptingmemberoradmin(default:member). - Updated
handle_members()to resolve the--rolestring into aGroupRolesenum value and pass it togroup.add_user(). - Fixed
--setto usegroup.users.clear()followed by individualgroup.add_user(user, role=role)calls, so the requested role is correctly applied (the previousgroup.users.set()bypassed role assignment). - Switched the list output from
Usersto the newGroupMembersprinter.
2. debusine/server/management/management_utils.py
- Added
GroupMembersprinter class that takes aGroupMembershipqueryset and displaysusername,email,role, anddate_joinedcolumns.
3. debusine/server/management/commands/tests/test_group.py
- Updated
test_members_list_emptyandtest_members_listto account for the newrolecolumn (column indices shifted). - Added 7 new test cases covering:
- List output shows correct role per member
-
--addwithout--roledefaults toMEMBER -
--add --role memberexplicitly setsMEMBER -
--add --role adminsetsADMIN -
--addwith multiple users assigns the same role to all -
--set --role adminreplaces all members withADMINrole - Invalid
--rolevalue 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)
List output (after)
Adding an admin member
Edited by Colin Watson


