diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index f82ced12..d4daf24c 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](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation. +### 6.61.19 + +Fixed bug in `gam print|show chatmembers ` that caused a trap. + ### 6.61.18 Added the following options to `gam [] create shareddrive` to allow better control diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index 5cc33023..46bee705 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -2,6 +2,10 @@ Merged GAM-Team version +6.61.19 + +Fixed bug in `gam print|show chatmembers ` that caused a trap. + 6.61.18 Added the following options to `gam [] create shareddrive` to allow better control diff --git a/src/gam/__init__.py b/src/gam/__init__.py index b19e1788..e05bafe8 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -8389,7 +8389,7 @@ class CSVPrintFile(): except (GAPI.badRequest, GAPI.invalid, GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError, GAPI.insufficientFilePermissions, GAPI.insufficientParentPermissions, GAPI.unknownError, GAPI.ownershipChangeAcrossDomainNotPermitted, GAPI.teamDriveDomainUsersOnlyRestriction, GAPI.teamDriveTeamMembersOnlyRestriction, - GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, + GAPI.targetUserRoleLimitedByLicenseRestriction, GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, GAPI.publishOutNotPermitted, GAPI.shareInNotPermitted, GAPI.shareOutNotPermitted, GAPI.shareOutNotPermittedToUser, GAPI.cannotShareTeamDriveTopFolderWithAnyoneOrDomains, GAPI.cannotShareTeamDriveWithNonGoogleAccounts, GAPI.ownerOnTeamDriveItemNotSupported, @@ -24751,10 +24751,10 @@ def doInfoChatMember(): infoChatMember([None]) # gam [] show chatmembers -# [showinvited []] [filter ] +# [showinvited []] [showgroups []] [filter ] # [formatjson] # gam [] print chatmembers [todrive *] -# [showinvited []] [filter ] +# [showinvited []] [showgroups []] [filter ] # [formatjson [quotechar ]] def printShowChatMembers(users): def _printChatMember(user, member): @@ -24773,8 +24773,8 @@ def printShowChatMembers(users): cd = buildGAPIObject(API.DIRECTORY) csvPF = CSVPrintFile(['User', 'name'] if not isinstance(users, list) else ['name']) if Act.csvFormat() else None FJQC = FormatJSONQuoteChar(csvPF) - parent = pfilter = None - showInvited = False + kwargs = {} + parent = None while Cmd.ArgumentsRemaining(): myarg = getArgument() if csvPF and myarg == 'todrive': @@ -24782,16 +24782,18 @@ def printShowChatMembers(users): elif myarg == 'space' or myarg.startswith('spaces/'): parent = getChatSpace(myarg) elif myarg == 'showinvited': - showInvited = getBoolean() + kwargs['showInvited'] = getBoolean() + elif myarg == 'showgroups': + kwargs['showGroups'] = getBoolean() elif myarg =='filter': - pfilter = getString(Cmd.OB_STRING) + kwargs['filter'] = getString(Cmd.OB_STRING) else: FJQC.GetFormatJSONQuoteChar(myarg, True) if not parent: missingArgumentExit('space') qfilter = f'{Ent.Singular(Ent.CHAT_SPACE)}: {parent}' - if pfilter: - qfilter += f', {pfilter}' + if 'filter' in kwargs: + qfilter += f', {kwargs["filter"]}' i, count, users = getEntityArgument(users) for user in users: i += 1 @@ -24802,7 +24804,7 @@ def printShowChatMembers(users): members = callGAPIpages(chat.spaces().members(), 'list', 'memberships', pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, i, count, qfilter), throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED], - pageSize=CHAT_PAGE_SIZE, parent=parent, filter=pfilter, showInvited=showInvited) + pageSize=CHAT_PAGE_SIZE, parent=parent, **kwargs) for member in members: _getChatMemberEmail(cd, member) except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e: @@ -53924,7 +53926,7 @@ def _copyPermissions(drive, user, i, count, j, jcount, except (GAPI.badRequest, GAPI.invalid, GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError, GAPI.insufficientFilePermissions, GAPI.unknownError, GAPI.ownershipChangeAcrossDomainNotPermitted, GAPI.teamDriveDomainUsersOnlyRestriction, GAPI.teamDriveTeamMembersOnlyRestriction, - GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, + GAPI.targetUserRoleLimitedByLicenseRestriction, GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, GAPI.publishOutNotPermitted, GAPI.shareInNotPermitted, GAPI.shareOutNotPermitted, GAPI.shareOutNotPermittedToUser, GAPI.cannotShareTeamDriveTopFolderWithAnyoneOrDomains, GAPI.cannotShareTeamDriveWithNonGoogleAccounts, GAPI.ownerOnTeamDriveItemNotSupported, @@ -54977,7 +54979,7 @@ def _updateMoveFilePermissions(drive, user, i, count, except (GAPI.badRequest, GAPI.invalid, GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError, GAPI.insufficientFilePermissions, GAPI.unknownError, GAPI.ownershipChangeAcrossDomainNotPermitted, GAPI.teamDriveDomainUsersOnlyRestriction, GAPI.teamDriveTeamMembersOnlyRestriction, - GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, + GAPI.targetUserRoleLimitedByLicenseRestriction, GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, GAPI.publishOutNotPermitted, GAPI.shareInNotPermitted, GAPI.shareOutNotPermitted, GAPI.shareOutNotPermittedToUser, GAPI.cannotShareTeamDriveTopFolderWithAnyoneOrDomains, GAPI.cannotShareTeamDriveWithNonGoogleAccounts, GAPI.ownerOnTeamDriveItemNotSupported, @@ -57961,7 +57963,7 @@ def createDriveFileACL(users, useDomainAdminAccess=False): GAPI.cannotSetExpiration, GAPI.insufficientFilePermissions, GAPI.unknownError, GAPI.ownershipChangeAcrossDomainNotPermitted, GAPI.teamDriveDomainUsersOnlyRestriction, GAPI.teamDriveTeamMembersOnlyRestriction, - GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, + GAPI.targetUserRoleLimitedByLicenseRestriction, GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, GAPI.publishOutNotPermitted, GAPI.shareInNotPermitted, GAPI.shareOutNotPermitted, GAPI.shareOutNotPermittedToUser, GAPI.cannotShareTeamDriveTopFolderWithAnyoneOrDomains, GAPI.cannotShareTeamDriveWithNonGoogleAccounts, GAPI.ownerOnTeamDriveItemNotSupported, @@ -58090,7 +58092,7 @@ def updateDriveFileACLs(users, useDomainAdminAccess=False): GAPI.cannotSetExpiration, GAPI.badRequest, GAPI.invalidOwnershipTransfer, GAPI.cannotRemoveOwner, GAPI.fileNeverWritable, GAPI.ownershipChangeAcrossDomainNotPermitted, GAPI.sharingRateLimitExceeded, - GAPI.insufficientAdministratorPrivileges, + GAPI.targetUserRoleLimitedByLicenseRestriction, GAPI.insufficientAdministratorPrivileges, GAPI.publishOutNotPermitted, GAPI.shareInNotPermitted, GAPI.shareOutNotPermitted, GAPI.shareOutNotPermittedToUser, GAPI.organizerOnNonTeamDriveItemNotSupported, GAPI.fileOrganizerOnNonTeamDriveNotSupported, GAPI.cannotUpdatePermission, GAPI.cannotModifyInheritedTeamDrivePermission, GAPI.fieldNotWritable) as e: @@ -58189,7 +58191,7 @@ def createDriveFilePermissions(users, useDomainAdminAccess=False): except (GAPI.badRequest, GAPI.invalid, GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError, GAPI.insufficientFilePermissions, GAPI.unknownError, GAPI.ownershipChangeAcrossDomainNotPermitted, GAPI.teamDriveDomainUsersOnlyRestriction, GAPI.teamDriveTeamMembersOnlyRestriction, - GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, + GAPI.targetUserRoleLimitedByLicenseRestriction, GAPI.insufficientAdministratorPrivileges, GAPI.sharingRateLimitExceeded, GAPI.publishOutNotPermitted, GAPI.shareInNotPermitted, GAPI.shareOutNotPermitted, GAPI.shareOutNotPermittedToUser, GAPI.cannotShareTeamDriveTopFolderWithAnyoneOrDomains, GAPI.cannotShareTeamDriveWithNonGoogleAccounts, GAPI.ownerOnTeamDriveItemNotSupported, diff --git a/src/gam/gamlib/glgapi.py b/src/gam/gamlib/glgapi.py index 3da3b1fd..eedf06b4 100644 --- a/src/gam/gamlib/glgapi.py +++ b/src/gam/gamlib/glgapi.py @@ -111,6 +111,7 @@ LABEL_MUTATION_ILLEGAL_SELECTION = 'labelMutationIllegalSelection' LABEL_MUTATION_UNKNOWN_FIELD = 'labelMutationUnknownField' LIMIT_EXCEEDED = 'limitExceeded' LOGIN_REQUIRED = 'loginRequired' +MALFORMED_WORKING_LOCATION_EVENT = 'malformedWorkingLocationEvent' MEMBER_NOT_FOUND = 'memberNotFound' NO_LIST_TEAMDRIVES_ADMINISTRATOR_PRIVILEGE = 'noListTeamDrivesAdministratorPrivilege' NO_MANAGE_TEAMDRIVE_ADMINISTRATOR_PRIVILEGE = 'noManageTeamDriveAdministratorPrivilege' @@ -149,6 +150,7 @@ SHARING_RATE_LIMIT_EXCEEDED = 'sharingRateLimitExceeded' SHORTCUT_TARGET_INVALID = 'shortcutTargetInvalid' STORAGE_QUOTA_EXCEEDED = 'storageQuotaExceeded' SYSTEM_ERROR = 'systemError' +TARGET_USER_ROLE_LIMITED_BY_LICENSE_RESTRICTION = 'targetUserRoleLimitedByLicenseRestriction' TEAMDRIVE_ALREADY_EXISTS = 'teamDriveAlreadyExists' TEAMDRIVE_DOMAIN_USERS_ONLY_RESTRICTION = 'teamDriveDomainUsersOnlyRestriction' TEAMDRIVE_TEAM_MEMBERS_ONLY_RESTRICTION = 'teamDriveTeamMembersOnlyRestriction' @@ -196,7 +198,7 @@ DRIVE_COPY_THROW_REASONS = DRIVE_ACCESS_THROW_REASONS+[CANNOT_COPY_FILE, BAD_REQ DRIVE_GET_THROW_REASONS = DRIVE_USER_THROW_REASONS+[FILE_NOT_FOUND] DRIVE3_CREATE_ACL_THROW_REASONS = [BAD_REQUEST, INVALID, INVALID_SHARING_REQUEST, OWNERSHIP_CHANGE_ACROSS_DOMAIN_NOT_PERMITTED, CANNOT_SET_EXPIRATION, NOT_FOUND, TEAMDRIVE_DOMAIN_USERS_ONLY_RESTRICTION, TEAMDRIVE_TEAM_MEMBERS_ONLY_RESTRICTION, - INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, SHARING_RATE_LIMIT_EXCEEDED, + TARGET_USER_ROLE_LIMITED_BY_LICENSE_RESTRICTION, INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, SHARING_RATE_LIMIT_EXCEEDED, PUBLISH_OUT_NOT_PERMITTED, SHARE_IN_NOT_PERMITTED, SHARE_OUT_NOT_PERMITTED, SHARE_OUT_NOT_PERMITTED_TO_USER, CANNOT_SHARE_TEAMDRIVE_TOPFOLDER_WITH_ANYONEORDOMAINS, CANNOT_SHARE_TEAMDRIVE_WITH_NONGOOGLE_ACCOUNTS, @@ -213,7 +215,7 @@ DRIVE3_GET_ACL_REASONS = DRIVE_USER_THROW_REASONS+[FILE_NOT_FOUND, FORBIDDEN, IN DRIVE3_UPDATE_ACL_THROW_REASONS = [BAD_REQUEST, INVALID_OWNERSHIP_TRANSFER, CANNOT_REMOVE_OWNER, CANNOT_SET_EXPIRATION, OWNERSHIP_CHANGE_ACROSS_DOMAIN_NOT_PERMITTED, NOT_FOUND, TEAMDRIVE_DOMAIN_USERS_ONLY_RESTRICTION, TEAMDRIVE_TEAM_MEMBERS_ONLY_RESTRICTION, - INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, SHARING_RATE_LIMIT_EXCEEDED, + TARGET_USER_ROLE_LIMITED_BY_LICENSE_RESTRICTION, INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, SHARING_RATE_LIMIT_EXCEEDED, PUBLISH_OUT_NOT_PERMITTED, SHARE_IN_NOT_PERMITTED, SHARE_OUT_NOT_PERMITTED, SHARE_OUT_NOT_PERMITTED_TO_USER, CANNOT_SHARE_TEAMDRIVE_TOPFOLDER_WITH_ANYONEORDOMAINS, CANNOT_SHARE_TEAMDRIVE_WITH_NONGOOGLE_ACCOUNTS, @@ -501,6 +503,8 @@ class limitExceeded(Exception): pass class loginRequired(Exception): pass +class malformedWorkingLocationEvent(Exception): + pass class memberNotFound(Exception): pass class noListTeamDrivesAdministratorPrivilege(Exception): @@ -577,6 +581,8 @@ class storageQuotaExceeded(Exception): pass class systemError(Exception): pass +class targetUserRoleLimitedByLicenseRestriction(Exception): + pass class teamDriveAlreadyExists(Exception): pass class teamDriveDomainUsersOnlyRestriction(Exception): @@ -701,6 +707,7 @@ REASON_EXCEPTION_MAP = { LABEL_MUTATION_UNKNOWN_FIELD: labelMutationUnknownField, LIMIT_EXCEEDED: limitExceeded, LOGIN_REQUIRED: loginRequired, + MALFORMED_WORKING_LOCATION_EVENT: malformedWorkingLocationEvent, MEMBER_NOT_FOUND: memberNotFound, NO_LIST_TEAMDRIVES_ADMINISTRATOR_PRIVILEGE: noListTeamDrivesAdministratorPrivilege, NO_MANAGE_TEAMDRIVE_ADMINISTRATOR_PRIVILEGE: noManageTeamDriveAdministratorPrivilege, @@ -739,6 +746,7 @@ REASON_EXCEPTION_MAP = { SHORTCUT_TARGET_INVALID: shortcutTargetInvalid, STORAGE_QUOTA_EXCEEDED: storageQuotaExceeded, SYSTEM_ERROR: systemError, + TARGET_USER_ROLE_LIMITED_BY_LICENSE_RESTRICTION: targetUserRoleLimitedByLicenseRestriction, TEAMDRIVE_ALREADY_EXISTS: teamDriveAlreadyExists, TEAMDRIVE_DOMAIN_USERS_ONLY_RESTRICTION: teamDriveDomainUsersOnlyRestriction, TEAMDRIVE_TEAM_MEMBERS_ONLY_RESTRICTION: teamDriveTeamMembersOnlyRestriction,