gam7 7.14.2__py3-none-any.whl → 7.14.4__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.14.02'
28
+ __version__ = '7.14.04'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -6011,7 +6011,11 @@ def getCIGroupMemberRoleFixType(member):
6011
6011
  def getCIGroupTransitiveMemberRoleFixType(groupName, tmember):
6012
6012
  ''' map transitive member to normal member '''
6013
6013
  tid = tmember['preferredMemberKey'][0].get('id', GC.Values[GC.CUSTOMER_ID]) if tmember['preferredMemberKey'] else ''
6014
- ttype, tname = tmember['member'].split('/')
6014
+ if '/' in tmember['member']:
6015
+ ttype, tname = tmember['member'].split('/')
6016
+ else:
6017
+ ttype = ''
6018
+ tname = tmember['member']
6015
6019
  member = {'name': f'{groupName}/membershipd/{tname}', 'preferredMemberKey': {'id': tid}}
6016
6020
  if 'type' not in tmember:
6017
6021
  if tid == GC.Values[GC.CUSTOMER_ID]:
@@ -36828,11 +36832,11 @@ def doPrintCIGroups():
36828
36832
 
36829
36833
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
36830
36834
  setTrueCustomerId()
36835
+ parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
36831
36836
  delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
36832
36837
  memberRestrictions = sortHeaders = False
36833
36838
  memberDisplayOptions = initPGGroupMemberDisplayOptions()
36834
36839
  pageSize = 500
36835
- parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
36836
36840
  groupFieldsLists = {'ci': ['groupKey']}
36837
36841
  csvPF = CSVPrintFile(['email'])
36838
36842
  FJQC = FormatJSONQuoteChar(csvPF)
@@ -36850,7 +36854,7 @@ def doPrintCIGroups():
36850
36854
  showOwnedBy = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user'])
36851
36855
  elif myarg in {'cimember', 'enterprisemember', 'ciowner'}:
36852
36856
  emailAddress = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user', 'group'])
36853
- memberQuery = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels"
36857
+ memberQuery = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels && parent == '{parent}'"
36854
36858
  entitySelection = None
36855
36859
  if myarg == 'ciowner':
36856
36860
  showOwnedBy = emailAddress
@@ -37096,7 +37100,7 @@ def getCIGroupTransitiveMembers(ci, groupName, membersList, i, count):
37096
37100
  entityUnknownWarning(Ent.CLOUD_IDENTITY_GROUP, groupName, i, count)
37097
37101
  return False
37098
37102
  except GAPI.permissionDenied as e:
37099
- entityActionFailedExit([Ent.CLOUD_IDENTITY_GROUP, groupName], str(e))
37103
+ entityActionFailedWarning([Ent.CLOUD_IDENTITY_GROUP, groupName], str(e))
37100
37104
  return False
37101
37105
  for member in groupMembers:
37102
37106
  membersList.append(getCIGroupTransitiveMemberRoleFixType(groupName, member))
@@ -37252,6 +37256,7 @@ def _getCIListGroupMembersArgs(listView):
37252
37256
  def doPrintCIGroupMembers():
37253
37257
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
37254
37258
  setTrueCustomerId()
37259
+ parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
37255
37260
  memberOptions = initMemberOptions()
37256
37261
  memberDisplayOptions = initIPSGMGroupMemberDisplayOptions()
37257
37262
  groupColumn = True
@@ -37273,7 +37278,7 @@ def doPrintCIGroupMembers():
37273
37278
  showOwnedBy = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user'])
37274
37279
  elif myarg in {'cimember', 'enterprisemember', 'ciowner'}:
37275
37280
  emailAddress = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user', 'group'])
37276
- query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels"
37281
+ query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels && parent == '{parent}'"
37277
37282
  entityList = None
37278
37283
  if myarg == 'ciowner':
37279
37284
  showOwnedBy = emailAddress
@@ -37475,6 +37480,7 @@ def doShowCIGroupMembers():
37475
37480
 
37476
37481
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
37477
37482
  setTrueCustomerId()
37483
+ parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
37478
37484
  subTitle = f'{Msg.ALL} {Ent.Plural(Ent.CLOUD_IDENTITY_GROUP)}'
37479
37485
  groupFieldsLists = {'ci': ['groupKey', 'name']}
37480
37486
  entityList = query = showOwnedBy = None
@@ -37492,7 +37498,7 @@ def doShowCIGroupMembers():
37492
37498
  showOwnedBy = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user'])
37493
37499
  elif myarg in {'cimember', 'enterprisemember', 'ciowner'}:
37494
37500
  emailAddress = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user', 'group'])
37495
- query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels"
37501
+ query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels parent == '{parent}'"
37496
37502
  entityList = None
37497
37503
  if myarg == 'ciowner':
37498
37504
  showOwnedBy = emailAddress
@@ -44421,7 +44427,7 @@ def updateUsers(entityList):
44421
44427
  try:
44422
44428
  result = callGAPI(cd.users(), 'update',
44423
44429
  throwReasons=[GAPI.CONDITION_NOT_MET, GAPI.USER_NOT_FOUND, GAPI.DOMAIN_NOT_FOUND,
44424
- GAPI.FORBIDDEN, GAPI.BAD_REQUEST,
44430
+ GAPI.FORBIDDEN, GAPI.BAD_REQUEST, GAPI.ADMIN_CANNOT_UNSUSPEND,
44425
44431
  GAPI.INVALID, GAPI.INVALID_INPUT, GAPI.INVALID_PARAMETER,
44426
44432
  GAPI.INVALID_ORGUNIT, GAPI.INVALID_SCHEMA_VALUE, GAPI.DUPLICATE,
44427
44433
  GAPI.INSUFFICIENT_ARCHIVED_USER_LICENSES, GAPI.CONFLICT],
@@ -44483,7 +44489,8 @@ def updateUsers(entityList):
44483
44489
  entityActionFailedWarning([Ent.USER, user, Ent.USER, body['primaryEmail']], str(e), i, count)
44484
44490
  except GAPI.invalidOrgunit:
44485
44491
  entityActionFailedWarning([Ent.USER, user], Msg.INVALID_ORGUNIT, i, count)
44486
- except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.forbidden, GAPI.badRequest,
44492
+ except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis,
44493
+ GAPI.forbidden, GAPI.badRequest, GAPI.adminCannotUnsuspend,
44487
44494
  GAPI.invalid, GAPI.invalidInput, GAPI.invalidParameter, GAPI.insufficientArchivedUserLicenses,
44488
44495
  GAPI.conflict, GAPI.badRequest, GAPI.backendError, GAPI.systemError, GAPI.conditionNotMet) as e:
44489
44496
  entityActionFailedWarning([Ent.USER, user], str(e), i, count)
@@ -44651,12 +44658,14 @@ def suspendUnsuspendUsers(entityList):
44651
44658
  try:
44652
44659
  callGAPI(cd.users(), 'update',
44653
44660
  throwReasons=[GAPI.USER_NOT_FOUND, GAPI.DOMAIN_NOT_FOUND,
44654
- GAPI.DOMAIN_CANNOT_USE_APIS, GAPI.FORBIDDEN, GAPI.BAD_REQUEST],
44661
+ GAPI.DOMAIN_CANNOT_USE_APIS, GAPI.FORBIDDEN, GAPI.BAD_REQUEST,
44662
+ GAPI.ADMIN_CANNOT_UNSUSPEND],
44655
44663
  userKey=user, body=body)
44656
44664
  entityActionPerformed([Ent.USER, user], i, count)
44657
44665
  except GAPI.userNotFound:
44658
44666
  entityUnknownWarning(Ent.USER, user, i, count)
44659
- except (GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.forbidden, GAPI.badRequest) as e:
44667
+ except (GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.forbidden,
44668
+ GAPI.badRequest, GAPI.adminCannotUnsuspend) as e:
44660
44669
  entityActionFailedWarning([Ent.USER, user], str(e), i, count)
44661
44670
 
44662
44671
  # gam suspend users <UserTypeEntity> [noactionifalias]
@@ -45040,6 +45049,7 @@ def infoUsers(entityList):
45040
45049
 
45041
45050
  cd = buildGAPIObject(API.DIRECTORY)
45042
45051
  ci = None
45052
+ setTrueCustomerId()
45043
45053
  getAliases = getBuildingNames = getCIGroupsTree = getGroups = getLicenses = getSchemas = not GC.Values[GC.QUICK_INFO_USER]
45044
45054
  getGroupsTree = False
45045
45055
  FJQC = FormatJSONQuoteChar()
@@ -49541,7 +49551,7 @@ def doCourseAddItems(courseIdList, getEntityListArg):
49541
49551
  addItems = getStringReturnInList(Cmd.OB_COURSE_ALIAS)
49542
49552
  elif addType == Ent.COURSE_TOPIC:
49543
49553
  addItems = getStringReturnInList(Cmd.OB_COURSE_TOPIC)
49544
- else: # addType == Ent.COURSE_ANNOUNCEMENT:
49554
+ else: #elif addType == Ent.COURSE_ANNOUNCEMENT:
49545
49555
  addItems = [getCourseAnnouncement(True)]
49546
49556
  courseParticipantLists = None
49547
49557
  else:
gam/gamlib/glgapi.py CHANGED
@@ -23,6 +23,7 @@
23
23
  ABORTED = 'aborted'
24
24
  ABUSIVE_CONTENT_RESTRICTION = 'abusiveContentRestriction'
25
25
  ACCESS_NOT_CONFIGURED = 'accessNotConfigured'
26
+ ADMIN_CANNOT_UNSUSPEND = 'adminCannotUnsuspend'
26
27
  ALREADY_EXISTS = 'alreadyExists'
27
28
  APPLY_LABEL_FORBIDDEN = 'applyLabelForbidden'
28
29
  AUTH_ERROR = 'authError'
@@ -368,6 +369,8 @@ class abusiveContentRestriction(Exception):
368
369
  pass
369
370
  class accessNotConfigured(Exception):
370
371
  pass
372
+ class adminCannotUnsuspend(Exception):
373
+ pass
371
374
  class alreadyExists(Exception):
372
375
  pass
373
376
  class applyLabelForbidden(Exception):
@@ -689,6 +692,7 @@ REASON_EXCEPTION_MAP = {
689
692
  ABORTED: aborted,
690
693
  ABUSIVE_CONTENT_RESTRICTION: abusiveContentRestriction,
691
694
  ACCESS_NOT_CONFIGURED: accessNotConfigured,
695
+ ADMIN_CANNOT_UNSUSPEND: adminCannotUnsuspend,
692
696
  ALREADY_EXISTS: alreadyExists,
693
697
  APPLY_LABEL_FORBIDDEN: applyLabelForbidden,
694
698
  AUTH_ERROR: authError,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.14.2
3
+ Version: 7.14.4
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=xzvdzrAKQU-Gckhm4f1wGlObwS2b2DDcvoCgb_UHVsc,3571444
1
+ gam/__init__.py,sha256=4LIC4zoUw8PEfVYsBf69tu5d1lKHuK89Ft-7sFwPBVw,3571897
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=82Ak7btW_2XvocLUvAwPmpx8Chi0oqtZUG1gseLK_t4,50235
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -27,7 +27,7 @@ gam/gamlib/glapi.py,sha256=2syc4jmTV2cNLdSjvOKA5usatnnLOlOSNxqnj1iXhNs,36056
27
27
  gam/gamlib/glcfg.py,sha256=bNTckxzIM_HruxO2DfYsDbEgqOIz1RX6CbU6XOQQQyg,28296
28
28
  gam/gamlib/glclargs.py,sha256=zCfq3-XRiaEF58o5lmQVnxgV3AqMWMIs4Ra42iHExPQ,43538
29
29
  gam/gamlib/glentity.py,sha256=bFVeXqJ4VLIpFgc9y083oeBn8JzbwPYVJeuJF0yrnk8,34405
30
- gam/gamlib/glgapi.py,sha256=99W9Ng6KlSjSgELO2pmVNnm1dGa7XLFGLX8kkeDYHU0,40284
30
+ gam/gamlib/glgapi.py,sha256=pdBbwNtnCwFWxJGaP-_3hdTjSNoOCJF2yo76WdQOi1k,40426
31
31
  gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
32
32
  gam/gamlib/glglobals.py,sha256=J0xcHggVrUBzHJ5GruenKV-qV1zPKcK2qWgAgN3i5Jw,9608
33
33
  gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
@@ -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.14.2.dist-info/METADATA,sha256=9leESs5z35Ed3C3Y5Qv55MXtwBqIYNUoj9iwXAHO4FM,2940
69
- gam7-7.14.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.14.2.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.14.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.14.2.dist-info/RECORD,,
68
+ gam7-7.14.4.dist-info/METADATA,sha256=9Uz4EsMMfP2FLDMvPn4rcOjNaXVd72vlh00c_uFAOrY,2940
69
+ gam7-7.14.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.14.4.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.14.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.14.4.dist-info/RECORD,,
File without changes