gam7 7.6.12__py3-none-any.whl → 7.6.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gam7 might be problematic. Click here for more details.

gam/__init__.py CHANGED
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
25
25
  """
26
26
 
27
27
  __author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
28
- __version__ = '7.06.12'
28
+ __version__ = '7.06.13'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -5981,7 +5981,7 @@ def getCIGroupMemberRoleFixType(member):
5981
5981
  else:
5982
5982
  member['type'] = Ent.TYPE_OTHER
5983
5983
  roles = {}
5984
- memberRoles = member.get('roles', [{'name': Ent.MEMBER}])
5984
+ memberRoles = member.get('roles', [{'name': Ent.ROLE_MEMBER}])
5985
5985
  for role in memberRoles:
5986
5986
  roles[role['name']] = role
5987
5987
  for a_role in [Ent.ROLE_OWNER, Ent.ROLE_MANAGER, Ent.ROLE_MEMBER]:
@@ -6019,7 +6019,7 @@ def getCIGroupTransitiveMemberRoleFixType(groupName, tmember):
6019
6019
  trole['name'] = Ent.ROLE_MANAGER
6020
6020
  memberRoles.append(trole)
6021
6021
  else:
6022
- memberRoles = [{'name': Ent.MEMBER}]
6022
+ memberRoles = [{'name': Ent.ROLE_MEMBER}]
6023
6023
  roles = {}
6024
6024
  for role in memberRoles:
6025
6025
  roles[role['name']] = role
@@ -26478,6 +26478,64 @@ def _getChatMemberEmail(cd, member):
26478
26478
  _, memberUid = member['groupMember']['name'].split('/')
26479
26479
  member['groupMember']['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['group'])
26480
26480
 
26481
+ def _getChatSpaceMembers(cd, chatSpace, ciGroupName):
26482
+ if chatSpace.startswith('space/'):
26483
+ _, chatSpace = chatSpace.split('/', 1)
26484
+ chatSpace = 'spaces/'+chatSpace
26485
+ kwargsUAA = {'useAdminAccess': True, 'filter': 'member.type != "BOT"'}
26486
+ user, chat, kvList = buildChatServiceObject(API.CHAT_MEMBERSHIPS_ADMIN, _getAdminEmail(), 0, 0, [Ent.CHAT_SPACE, chatSpace], True)
26487
+ memberList = []
26488
+ if not chat:
26489
+ return memberList
26490
+ fields = getItemFieldsFromFieldsList('memberships', [])
26491
+ qfilter = f'{Ent.Singular(Ent.CHAT_SPACE)}: {chatSpace}, {kwargsUAA["filter"]}'
26492
+ try:
26493
+ members = callGAPIpages(chat.spaces().members(), 'list', 'memberships',
26494
+ pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, 0, 0, qfilter),
26495
+ throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
26496
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
26497
+ parent=chatSpace, fields=fields, pageSize=CHAT_PAGE_SIZE, **kwargsUAA)
26498
+ for member in members:
26499
+ _getChatMemberEmail(cd, member)
26500
+ gmember = {}
26501
+ if 'member' in member:
26502
+ if member['member']['type'] == 'HUMAN':
26503
+ _, memberUid = member['member']['name'].split('/')
26504
+ gmember['type'] = Ent.TYPE_USER
26505
+ email, _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['user'])
26506
+ role = Ent.ROLE_MANAGER if member['role'] == 'ROLE_MANAGER' else Ent.ROLE_MEMBER
26507
+ if not ciGroupName:
26508
+ gmember['id'] = memberUid
26509
+ gmember['email'] = email
26510
+ gmember['role'] = role
26511
+ gmember['status'] = member['state']
26512
+ else:
26513
+ gmember['name'] = f'{ciGroupName}/memberships/{memberUid}'
26514
+ gmember['preferredMemberKey'] = {'id': email}
26515
+ gmember['roles'] = [{'name': role}]
26516
+ gmember['createTime'] = member['createTime']
26517
+ memberList.append(gmember)
26518
+ elif 'groupMember' in member:
26519
+ _, memberUid = member['groupMember']['name'].split('/')
26520
+ gmember['type'] = Ent.TYPE_GROUP
26521
+ role = Ent.ROLE_MANAGER if member['role'] == 'ROLE_MANAGER' else Ent.ROLE_MEMBER
26522
+ email, _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['group'])
26523
+ if not ciGroupName:
26524
+ gmember['id'] = memberUid
26525
+ gmember['email'] = email
26526
+ gmember['role'] = role
26527
+ gmember['status'] = member['state']
26528
+ else:
26529
+ gmember['name'] = f'{ciGroupName}/memberships/{memberUid}'
26530
+ gmember['preferredMemberKey'] = {'id': email}
26531
+ gmember['roles'] = [{'name': role}]
26532
+ gmember['createTime'] = member['createTime']
26533
+ memberList.append(gmember)
26534
+ return memberList
26535
+ except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
26536
+ exitIfChatNotConfigured(chat, kvList, str(e), 0, 0)
26537
+ return memberList
26538
+
26481
26539
  def normalizeUserMember(user, userList):
26482
26540
  userList.append(normalizeEmailAddressOrUID(user))
26483
26541
 
@@ -34138,15 +34196,18 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34138
34196
 
34139
34197
  printGettingAllEntityItemsForWhom(memberRoles if memberRoles else Ent.ROLE_MANAGER_MEMBER_OWNER, groupEmail, i, count)
34140
34198
  validRoles, listRoles, listFields = _getRoleVerification(memberRoles, 'nextPageToken,members(email,id,role,status,type,delivery_settings)')
34141
- try:
34142
- groupMembers = callGAPIpages(cd.members(), 'list', 'members',
34143
- pageMessage=getPageMessageForWhom(),
34144
- throwReasons=GAPI.MEMBERS_THROW_REASONS, retryReasons=GAPI.MEMBERS_RETRY_REASONS,
34145
- includeDerivedMembership=memberOptions[MEMBEROPTION_INCLUDEDERIVEDMEMBERSHIP],
34146
- groupKey=groupEmail, roles=listRoles, fields=listFields, maxResults=GC.Values[GC.MEMBER_MAX_RESULTS])
34147
- except (GAPI.groupNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.invalid, GAPI.forbidden, GAPI.serviceNotAvailable):
34148
- entityUnknownWarning(Ent.GROUP, groupEmail, i, count)
34149
- return
34199
+ if not groupEmail.startswith('space/'):
34200
+ try:
34201
+ groupMembers = callGAPIpages(cd.members(), 'list', 'members',
34202
+ pageMessage=getPageMessageForWhom(),
34203
+ throwReasons=GAPI.MEMBERS_THROW_REASONS, retryReasons=GAPI.MEMBERS_RETRY_REASONS,
34204
+ includeDerivedMembership=memberOptions[MEMBEROPTION_INCLUDEDERIVEDMEMBERSHIP],
34205
+ groupKey=groupEmail, roles=listRoles, fields=listFields, maxResults=GC.Values[GC.MEMBER_MAX_RESULTS])
34206
+ except (GAPI.groupNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.invalid, GAPI.forbidden, GAPI.serviceNotAvailable):
34207
+ entityUnknownWarning(Ent.GROUP, groupEmail, i, count)
34208
+ return
34209
+ else:
34210
+ groupMembers = _getChatSpaceMembers(cd, groupEmail, '')
34150
34211
  checkCategory = memberDisplayOptions['showCategory']
34151
34212
  if not memberOptions[MEMBEROPTION_RECURSIVE]:
34152
34213
  if memberOptions[MEMBEROPTION_NODUPLICATES]:
@@ -34170,8 +34231,7 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34170
34231
  elif memberOptions[MEMBEROPTION_NODUPLICATES]:
34171
34232
  groupMemberList = []
34172
34233
  for member in groupMembers:
34173
- namespace = member['email'].find('@') == -1
34174
- if member['type'] != Ent.TYPE_GROUP or namespace:
34234
+ if member['type'] != Ent.TYPE_GROUP:
34175
34235
  if ((member['type'] in typesSet and
34176
34236
  checkMemberMatch(member, memberOptions) and
34177
34237
  _checkMemberRoleIsSuspendedIsArchived(member, validRoles, memberOptions[MEMBEROPTION_ISSUSPENDED], memberOptions[MEMBEROPTION_ISARCHIVED]) and
@@ -34200,8 +34260,7 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34200
34260
  memberOptions, memberDisplayOptions, level+1, typesSet)
34201
34261
  else:
34202
34262
  for member in groupMembers:
34203
- namespace = member['email'].find('@') == -1
34204
- if member['type'] != Ent.TYPE_GROUP or namespace:
34263
+ if member['type'] != Ent.TYPE_GROUP:
34205
34264
  if ((member['type'] in typesSet) and
34206
34265
  checkMemberMatch(member, memberOptions) and
34207
34266
  _checkMemberRoleIsSuspendedIsArchived(member, validRoles,
@@ -36253,7 +36312,7 @@ def getCIGroupTransitiveMembers(ci, groupName, membersList, i, count):
36253
36312
  return True
36254
36313
 
36255
36314
  def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, count,
36256
- memberOptions, memberDisplayOptions, level, typesSet, groupEmail, kwargs):
36315
+ memberOptions, memberDisplayOptions, level, typesSet, groupEmail, kwargs, cd):
36257
36316
  nameToPrint = groupEmail if groupEmail else groupName
36258
36317
  printGettingAllEntityItemsForWhom(memberRoles if memberRoles else Ent.ROLE_MANAGER_MEMBER_OWNER, nameToPrint, i, count)
36259
36318
  validRoles = _getCIRoleVerification(memberRoles)
@@ -36266,16 +36325,21 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36266
36325
  if member['type'] in typesSet and checkCIMemberMatch(member, memberOptions):
36267
36326
  membersList.append(member)
36268
36327
  return
36269
- try:
36270
- groupMembers = callGAPIpages(ci.groups().memberships(), 'list', 'memberships',
36271
- pageMessage=getPageMessageForWhom(),
36272
- throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS,
36273
- parent=groupName, **kwargs)
36274
- except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis,
36275
- GAPI.forbidden, GAPI.badRequest, GAPI.invalid, GAPI.invalidArgument, GAPI.systemError,
36276
- GAPI.permissionDenied, GAPI.serviceNotAvailable):
36277
- entityUnknownWarning(Ent.CLOUD_IDENTITY_GROUP, nameToPrint, i, count)
36278
- return
36328
+ if not groupEmail.startswith('space/'):
36329
+ try:
36330
+ groupMembers = callGAPIpages(ci.groups().memberships(), 'list', 'memberships',
36331
+ pageMessage=getPageMessageForWhom(),
36332
+ throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS,
36333
+ parent=groupName, **kwargs)
36334
+ except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis,
36335
+ GAPI.forbidden, GAPI.badRequest, GAPI.invalid, GAPI.invalidArgument, GAPI.systemError,
36336
+ GAPI.permissionDenied, GAPI.serviceNotAvailable):
36337
+ entityUnknownWarning(Ent.CLOUD_IDENTITY_GROUP, nameToPrint, i, count)
36338
+ return
36339
+ else:
36340
+ if cd is None:
36341
+ cd = buildGAPIObject(API.DIRECTORY)
36342
+ groupMembers = _getChatSpaceMembers(cd, groupEmail, groupName)
36279
36343
  checkCategory = memberDisplayOptions['showCategory']
36280
36344
  if not memberOptions[MEMBEROPTION_RECURSIVE]:
36281
36345
  if memberOptions[MEMBEROPTION_NODUPLICATES]:
@@ -36300,8 +36364,7 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36300
36364
  for member in groupMembers:
36301
36365
  getCIGroupMemberRoleFixType(member)
36302
36366
  memberName = member.get('preferredMemberKey', {}).get('id', '')
36303
- namespace = member.get('preferredMemberKey', {}).get('namespace', '')
36304
- if member['type'] != Ent.TYPE_GROUP or namespace:
36367
+ if member['type'] != Ent.TYPE_GROUP:
36305
36368
  if (member['type'] in typesSet and
36306
36369
  checkCIMemberMatch(member, memberOptions) and
36307
36370
  _checkMemberRole(member, validRoles) and
@@ -36324,13 +36387,12 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36324
36387
  groupMemberList.append((f'groups/{gname}', memberName))
36325
36388
  for member in groupMemberList:
36326
36389
  getCIGroupMembers(ci, member[0], memberRoles, membersList, membersSet, i, count,
36327
- memberOptions, memberDisplayOptions, level+1, typesSet, member[1], kwargs)
36390
+ memberOptions, memberDisplayOptions, level+1, typesSet, member[1], kwargs, cd)
36328
36391
  else:
36329
36392
  for member in groupMembers:
36330
36393
  getCIGroupMemberRoleFixType(member)
36331
36394
  memberName = member.get('preferredMemberKey', {}).get('id', '')
36332
- namespace = member.get('preferredMemberKey', {}).get('namespace', '')
36333
- if member['type'] != Ent.TYPE_GROUP or namespace:
36395
+ if member['type'] != Ent.TYPE_GROUP:
36334
36396
  if (member['type'] in typesSet and
36335
36397
  checkCIMemberMatch(member, memberOptions) and
36336
36398
  _checkMemberRole(member, validRoles) and
@@ -36347,7 +36409,7 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36347
36409
  membersList.append(member)
36348
36410
  _, gname = member['name'].rsplit('/', 1)
36349
36411
  getCIGroupMembers(ci, f'groups/{gname}', memberRoles, membersList, membersSet, i, count,
36350
- memberOptions, memberDisplayOptions, level+1, typesSet, memberName, kwargs)
36412
+ memberOptions, memberDisplayOptions, level+1, typesSet, memberName, kwargs, cd)
36351
36413
 
36352
36414
  CIGROUPMEMBERS_FIELDS_CHOICE_MAP = {
36353
36415
  'createtime': 'createTime',
@@ -36511,7 +36573,7 @@ def doPrintCIGroupMembers():
36511
36573
  membersList = []
36512
36574
  membersSet = set()
36513
36575
  getCIGroupMembers(ci, groupEntity['name'], getRoles, membersList, membersSet, i, count,
36514
- memberOptions, memberDisplayOptions, level, typesSet, groupEmail, kwargs)
36576
+ memberOptions, memberDisplayOptions, level, typesSet, groupEmail, kwargs, None)
36515
36577
  if showOwnedBy and not checkCIGroupShowOwnedBy(showOwnedBy, membersList):
36516
36578
  continue
36517
36579
  for member in membersList:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.6.12
3
+ Version: 7.6.13
4
4
  Summary: CLI tool to manage Google Workspace
5
5
  Project-URL: Homepage, https://github.com/GAM-team/GAM
6
6
  Project-URL: Issues, https://github.com/GAM-team/GAM/issues
@@ -1,4 +1,4 @@
1
- gam/__init__.py,sha256=s4okaQ_92Eml4EHKJJxlbpYggCz8UK750Ds-_gZxk38,3492639
1
+ gam/__init__.py,sha256=9BYxt6VD3fM_xeLSK35L8qC6rnWqzXnm0usjkcM2k9k,3495630
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=nJuWha0xm5dHw_5ptGphwRoO-r36Ccpqiww9pCEDbSc,67484
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -65,8 +65,8 @@ gam/googleapiclient/discovery_cache/base.py,sha256=yCDPtxnbNN-p5_9fzBacC6P3wcUPl
65
65
  gam/googleapiclient/discovery_cache/file_cache.py,sha256=sim3Mg4HgRYo3vX75jvcKy_aV568EvIrtBfvfbw-044,4774
66
66
  gam/iso8601/__init__.py,sha256=Z2PsYbXgAH5a5xzUvgczCboPzqWpm65kRcIngCnhViU,1218
67
67
  gam/iso8601/iso8601.py,sha256=Li2FHZ4sBTWuthuQhyCvmvj0j6At8JbGzkSv2fc2RHU,4384
68
- gam7-7.6.12.dist-info/METADATA,sha256=Gm8h23k_mO_J3Fk_Wxcxg6PwNgojPfcZSnBpniWVddg,2970
69
- gam7-7.6.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.6.12.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.6.12.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.6.12.dist-info/RECORD,,
68
+ gam7-7.6.13.dist-info/METADATA,sha256=WAAMsjZ6LoZr8nK8dI97DicsY9ETVdK1y1eAMow1YHg,2970
69
+ gam7-7.6.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.6.13.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.6.13.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.6.13.dist-info/RECORD,,
File without changes