From b1444d7c04eda4bc0d96c93c8239a2476d204dca Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Fri, 18 Oct 2024 20:09:58 -0700 Subject: [PATCH] Updated `gam create|delete chatmember` to accept external (non-domain) email addresses. --- docs/GamUpdates.md | 4 +++ docs/How-to-Upgrade-Legacy-GAM-to-GAM7.md | 4 +-- docs/Users-Chat.md | 1 + docs/Version-and-Help.md | 12 ++++----- src/GamUpdate.txt | 4 +++ src/gam/__init__.py | 31 +++++++++++++---------- 6 files changed, 34 insertions(+), 22 deletions(-) diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index bb5bfcba0..b7f2ad6e4 100644 --- a/docs/GamUpdates.md +++ b/docs/GamUpdates.md @@ -10,6 +10,10 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation +### 7.00.23 + +Updated `gam create|delete chatmember` to accept external (non-domain) email addresses. + ### 7.00.22 Fixed bug in `gam create vaultmatter ... showdetails` that caused a trap. diff --git a/docs/How-to-Upgrade-Legacy-GAM-to-GAM7.md b/docs/How-to-Upgrade-Legacy-GAM-to-GAM7.md index 7f3315d79..343fe848e 100644 --- a/docs/How-to-Upgrade-Legacy-GAM-to-GAM7.md +++ b/docs/How-to-Upgrade-Legacy-GAM-to-GAM7.md @@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin$ gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAM 7.00.19 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.00.23 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.0 64-bit final MacOS Sonoma 14.5 x86_64 @@ -923,7 +923,7 @@ writes the credentials into the file oauth2.txt. C:\>del C:\GAMConfig\oauth2.txt C:\>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAM7 7.00.19 - https://github.com/GAM-team/GAM - pythonsource +GAM7 7.00.23 - https://github.com/GAM-team/GAM - pythonsource GAM Team Python 3.13.0 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/docs/Users-Chat.md b/docs/Users-Chat.md index dc2a86183..6f7d5922a 100644 --- a/docs/Users-Chat.md +++ b/docs/Users-Chat.md @@ -434,6 +434,7 @@ gam remove chatmember members ``` ### Add members to a chat space, asadmin +Creating memberships for users outside the administrator's Google Workspace organization isn't supported using asadmin. ``` gam create chatmember asadmin [type human|bot] [role member|manager] diff --git a/docs/Version-and-Help.md b/docs/Version-and-Help.md index fa4381cb5..5ebaa81fa 100644 --- a/docs/Version-and-Help.md +++ b/docs/Version-and-Help.md @@ -3,7 +3,7 @@ Print the current version of Gam with details ``` gam version -GAM 7.00.19 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.00.23 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.0 64-bit final MacOS Sonoma 14.5 x86_64 @@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAM 7.00.19 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.00.23 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.0 64-bit final MacOS Sonoma 14.5 x86_64 @@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second Print the current version of Gam with extended details and SSL information ``` gam version extended -GAM 7.00.19 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.00.23 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.0 64-bit final MacOS Sonoma 14.5 x86_64 @@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gam7 Version Check: Current: 5.35.08 - Latest: 7.00.19 + Latest: 7.00.23 echo $? 1 ``` @@ -72,7 +72,7 @@ echo $? Print the current version number without details ``` gam version simple -7.00.19 +7.00.23 ``` In Linux/MacOS you can do: ``` @@ -82,7 +82,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 7.00.19 - https://github.com/GAM-team/GAM +GAM 7.00.23 - https://github.com/GAM-team/GAM GAM Team Python 3.13.0 64-bit final MacOS Sonoma 14.5 x86_64 diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index 22f3927df..fcc5fe80d 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -1,3 +1,7 @@ +7.00.23 + +Updated `gam create|delete chatmember` to accept external (non-domain) email addresses. + 7.00.22 Fixed bug in `gam create vaultmatter ... showdetails` that caused a trap. diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 3ed250f27..e7d452359 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -25,7 +25,7 @@ """ __author__ = 'GAM Team ' -__version__ = '7.00.22' +__version__ = '7.00.23' __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)' #pylint: disable=wrong-import-position @@ -26115,10 +26115,13 @@ def _getChatMemberEmail(cd, member): _, memberUid = member['groupMember']['name'].split('/') member['groupMember']['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['group']) -def normalizeUserMember(cd, user, userList): +def normalizeUserMember(user, userList): + userList.append(normalizeEmailAddressOrUID(user)) + +def getUserMemberID(cd, user, userList): userList.append(convertEmailAddressToUID(user, cd, emailType='user')) -def normalizeGroupMember(cd, group, groupList): +def getGroupMemberID(cd, group, groupList): groupList.append(convertEmailAddressToUID(group, cd, emailType='group')) # gam create chatmember @@ -26181,16 +26184,16 @@ def addMembers(members, field, entityType, i, count): if myarg == 'space' or myarg.startswith('spaces/') or myarg.startswith('space/'): parent = getSpaceName(myarg) elif myarg == 'user': - normalizeUserMember(cd, getEmailAddress(returnUIDprefix='uid:'), userList) + normalizeUserMember(getEmailAddress(returnUIDprefix='uid:'), userList) elif myarg in {'member', 'members'}: _, members = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS) for user in members: - normalizeUserMember(cd, user, userList) + normalizeUserMember(user, userList) elif myarg == 'group': - normalizeGroupMember(cd, getEmailAddress(returnUIDprefix='uid:'), groupList) + getGroupMemberID(cd, getEmailAddress(returnUIDprefix='uid:'), groupList) elif myarg == 'groups': for group in getEntityList(Cmd.OB_GROUP_ENTITY): - normalizeGroupMember(cd, group, groupList) + getGroupMemberID(cd, group, groupList) elif myarg == 'role': role = getChoice(CHAT_MEMBER_ROLE_MAP, mapChoice=True) elif myarg == 'type': @@ -26288,16 +26291,16 @@ def deleteUpdateChatMember(users): if myarg == 'space' or myarg.startswith('spaces/') or myarg.startswith('space/'): parent = getSpaceName(myarg) elif myarg == 'user': - normalizeUserMember(cd, getEmailAddress(returnUIDprefix='uid:'), userList) + normalizeUserMember(getEmailAddress(returnUIDprefix='uid:'), userList) elif myarg in {'member', 'members'}: _, members = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS) for user in members: - normalizeUserMember(cd, user, userList) + normalizeUserMember(user, userList) elif deleteMode and myarg == 'group': - normalizeGroupMember(cd, getEmailAddress(returnUIDprefix='uid:'), groupList) + getGroupMemberID(cd, getEmailAddress(returnUIDprefix='uid:'), groupList) elif deleteMode and myarg == 'groups': for group in getEntityList(Cmd.OB_GROUP_ENTITY): - normalizeGroupMember(cd, group, groupList) + getGroupMemberID(cd, group, groupList) else: unknownArgumentExit() if not deleteMode and 'role' not in body: @@ -26441,16 +26444,16 @@ def deleteMembers(memberNames, entityType, i, count): csvPF = CSVPrintFile(CHAT_SYNC_PREVIEW_TITLES) elif myarg == 'users': for user in getEntityList(Cmd.OB_USER_ENTITY): - normalizeUserMember(cd, user, userList) + getUserMemberID(cd, user, userList) usersSpecified = True elif myarg in {'member', 'members'}: _, members = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS) for user in members: - normalizeUserMember(cd, user, userList) + getUserMemberID(cd, user, userList) usersSpecified = True elif myarg == 'groups': for group in getEntityList(Cmd.OB_GROUP_ENTITY): - normalizeGroupMember(cd, group, groupList) + getGroupMemberID(cd, group, groupList) groupsSpecified = True else: unknownArgumentExit()