gam7 7.5.9__py3-none-any.whl → 7.5.12__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.05.09'
28
+ __version__ = '7.05.12'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -26384,6 +26384,7 @@ def printShowChatSpaces(users):
26384
26384
  bailOnInternalError=True,
26385
26385
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
26386
26386
  GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
26387
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
26387
26388
  fields=fields, pageSize=CHAT_PAGE_SIZE, **kwargsCS)
26388
26389
  except (GAPI.notFound, GAPI.invalidArgument, GAPI.internalError, GAPI.permissionDenied) as e:
26389
26390
  exitIfChatNotConfigured(chat, kvList, str(e), i, count)
@@ -26802,6 +26803,7 @@ def syncChatMembers(users):
26802
26803
  members = callGAPIpages(chat.spaces().members(), 'list', 'memberships',
26803
26804
  pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, i, count, qfilter),
26804
26805
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
26806
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
26805
26807
  parent=parent, showGroups=groupsSpecified, pageSize=CHAT_PAGE_SIZE, **kwargs, **kwargsUAA)
26806
26808
  for member in members:
26807
26809
  if 'member' in member:
@@ -26999,6 +27001,7 @@ def printShowChatMembers(users):
26999
27001
  bailOnInternalError=True,
27000
27002
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
27001
27003
  GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
27004
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27002
27005
  fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=CHAT_PAGE_SIZE,
27003
27006
  **kwargsCS)
27004
27007
  for space in spaces:
@@ -27015,6 +27018,7 @@ def printShowChatMembers(users):
27015
27018
  bailOnInternalError=True,
27016
27019
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
27017
27020
  GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
27021
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27018
27022
  fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=CHAT_PAGE_SIZE,
27019
27023
  **kwargsCS)
27020
27024
  for space in spaces:
@@ -27359,6 +27363,7 @@ def printShowChatMessages(users):
27359
27363
  messages = callGAPIpages(chat.spaces().messages(), 'list', 'messages',
27360
27364
  pageMessage=_getChatPageMessage(Ent.CHAT_MESSAGE, user, i, count, qfilter),
27361
27365
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
27366
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27362
27367
  pageSize=CHAT_PAGE_SIZE, parent=parentName, filter=pfilter, showDeleted=showDeleted,
27363
27368
  fields=fields)
27364
27369
  for message in messages:
@@ -27476,6 +27481,7 @@ def printShowChatEvents(users):
27476
27481
  events = callGAPIpages(chat.spaces().spaceEvents(), 'list', 'spaceEvents',
27477
27482
  pageMessage=_getChatPageMessage(Ent.CHAT_EVENT, user, i, count, qfilter),
27478
27483
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
27484
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27479
27485
  pageSize=CHAT_PAGE_SIZE, parent=parentName, filter=pfilter)
27480
27486
  except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
27481
27487
  exitIfChatNotConfigured(chat, kvList, str(e), i, count)
@@ -28196,6 +28202,7 @@ def doUpdateChromePolicy():
28196
28202
  schemaName, schema = simplifyChromeSchema(_getChromePolicySchema(cp, Cmd.Previous(), '*'))
28197
28203
  body['requests'].append({'policyValue': {'policySchema': schemaName, 'value': {}},
28198
28204
  'updateMask': ''})
28205
+ schemaNameList.append(schemaName)
28199
28206
  while Cmd.ArgumentsRemaining():
28200
28207
  field = getArgumentEmptyAllowed()
28201
28208
  # Allow an empty field/value pair which makes processing an input CSV file with schemas with different numbers of fields easy
@@ -28204,8 +28211,9 @@ def doUpdateChromePolicy():
28204
28211
  Cmd.Advance()
28205
28212
  continue
28206
28213
  if field in {'ou', 'org', 'orgunit', 'group', 'printerid', 'appid'} or '.' in field:
28207
- Cmd.Backup()
28208
- break # field is actually a new policy name or orgunit
28214
+ if field != 'appid' or not schemaName.startswith('chrome.devices.kiosk'):
28215
+ Cmd.Backup()
28216
+ break # field is actually a new policy name or orgunit
28209
28217
  # JSON
28210
28218
  if field == 'json':
28211
28219
  jsonData = getJSON(['direct', 'name', 'orgUnitPath', 'parentOrgUnitPath', 'group'])
@@ -28216,7 +28224,7 @@ def doUpdateChromePolicy():
28216
28224
  body['requests'][-1]['policyTargetKey']['additionalTargetKeys'] = {atk['name']: atk['value']}
28217
28225
  if atk['name'] == 'app_id':
28218
28226
  schemaNameAppId += f"({atk['value']})"
28219
- schemaNameList.append(schemaNameAppId)
28227
+ schemaNameList[-1] = schemaNameAppId
28220
28228
  for field in jsonData.get('fields', []):
28221
28229
  casedField = field['name']
28222
28230
  lowerField = casedField.lower()
@@ -28257,7 +28265,6 @@ def doUpdateChromePolicy():
28257
28265
  body['requests'][-1]['policyValue']['value'][casedField] = value
28258
28266
  body['requests'][-1]['updateMask'] += f'{casedField},'
28259
28267
  break
28260
- schemaNameList.append(schemaName)
28261
28268
  # Handle TYPE_MESSAGE fields with durations, values, counts and timeOfDay as special cases
28262
28269
  tmschema = CHROME_SCHEMA_TYPE_MESSAGE.get(schemaName, {}).get(field)
28263
28270
  if tmschema:
@@ -42470,16 +42477,16 @@ class PasswordOptions():
42470
42477
  up = 'password'
42471
42478
  password = self.GetPassword()
42472
42479
  if password:
42473
- notFoundBody[up] = password
42474
- if notFoundBody[up].lower() in {'blocklogin'}:
42480
+ if password.lower() == 'blocklogin':
42475
42481
  self.makeCleanPassword = False
42476
42482
  notFoundBody[up] = self.CreateRandomPassword()
42477
- self.notFoundPassword = notFoundBody[up]
42478
- elif notFoundBody[up].lower() in {'random', 'uniquerandom'}:
42483
+ elif password.lower() in {'random', 'uniquerandom'}:
42479
42484
  self.SetCleanPasswordLen()
42480
42485
  self.makeCleanPassword = True
42481
42486
  notFoundBody[up] = self.CreateRandomPassword()
42482
- self.notFoundPassword = notFoundBody[up]
42487
+ else:
42488
+ notFoundBody[up] = password
42489
+ self.notFoundPassword = notFoundBody[up]
42483
42490
  elif myarg in {'lograndompassword', 'logpassword'}:
42484
42491
  self.filename = getString(Cmd.OB_FILE_NAME)
42485
42492
  else:
@@ -42522,6 +42529,8 @@ class PasswordOptions():
42522
42529
  self.promptForUniquePassword = True
42523
42530
  else:
42524
42531
  self.promptForPassword = True
42532
+ else:
42533
+ self.password = password
42525
42534
  elif up == 'hashFunction':
42526
42535
  body[up] = self.HASH_FUNCTION_MAP[myarg]
42527
42536
  self.clearPassword = self.hashPassword = False
@@ -43234,9 +43243,7 @@ def doCreateUser():
43234
43243
  cd = buildGAPIObject(API.DIRECTORY)
43235
43244
  body, notify, tagReplacements, addGroups, addAliases, PwdOpts, \
43236
43245
  _, _, _, \
43237
- parameters, resolveConflictAccount = getUserAttributes(cd,
43238
- False,
43239
- noUid=True)
43246
+ parameters, resolveConflictAccount = getUserAttributes(cd, False, noUid=True)
43240
43247
  suffix = 0
43241
43248
  originalEmail = body['primaryEmail']
43242
43249
  atLoc = originalEmail.find('@')
@@ -43344,8 +43351,7 @@ def updateUsers(entityList):
43344
43351
  updateRetryDelay = 5
43345
43352
  body, notify, tagReplacements, addGroups, addAliases, PwdOpts, \
43346
43353
  updatePrimaryEmail, notFoundBody, groupOrgUnitMap, \
43347
- parameters, resolveConflictAccount = getUserAttributes(cd,
43348
- True)
43354
+ parameters, resolveConflictAccount = getUserAttributes(cd, True)
43349
43355
  vfe = 'primaryEmail' in body and body['primaryEmail'][:4].lower() == 'vfe@'
43350
43356
  if body.get('orgUnitPath', '') and parameters['immutableOUs']:
43351
43357
  ubody = body.copy()
gam/gamlib/glskus.py CHANGED
@@ -47,6 +47,10 @@ _SKUS = {
47
47
  'product': '101001', 'aliases': ['identity', 'cloudidentity'], 'displayName': 'Cloud Identity'},
48
48
  '1010050001': {
49
49
  'product': '101005', 'aliases': ['identitypremium', 'cloudidentitypremium'], 'displayName': 'Cloud Identity Premium'},
50
+ '1010070001': {
51
+ 'product': 'Google-Apps', 'aliases': ['gwef', 'workspaceeducationfundamentals'], 'displayName': 'Google Workspace for Education Fundamentals'},
52
+ '1010070004': {
53
+ 'product': 'Google-Apps', 'aliases': ['gwegmo', 'workspaceeducationgmailonly'], 'displayName': 'Google Workspace for Education Gmail Only'},
50
54
  '1010310002': {
51
55
  'product': '101031', 'aliases': ['gsefe', 'e4e', 'gsuiteenterpriseeducation'], 'displayName': 'Google Workspace for Education Plus - Legacy'},
52
56
  '1010310003': {
@@ -111,6 +115,8 @@ _SKUS = {
111
115
  'product': 'Google-Apps', 'aliases': ['standard', 'free'], 'displayName': 'G Suite Legacy'},
112
116
  'Google-Apps-For-Business': {
113
117
  'product': 'Google-Apps', 'aliases': ['gafb', 'gafw', 'basic', 'gsuitebasic'], 'displayName': 'G Suite Basic'},
118
+ 'Google-Apps-For-Education': {
119
+ 'product': 'Google-Apps', 'aliases': ['gafe', 'gsuiteeducation', 'gsuiteedu'], 'displayName': 'Google Workspace for Education - Fundamentals'},
114
120
  'Google-Apps-For-Government': {
115
121
  'product': 'Google-Apps', 'aliases': ['gafg', 'gsuitegovernment', 'gsuitegov'], 'displayName': 'Google Workspace Government'},
116
122
  'Google-Apps-For-Postini': {
@@ -148,6 +154,8 @@ _SKUS = {
148
154
  'product': '101034', 'aliases': ['wsbizstarterarchived', 'workspacebusinessstarterarchived'], 'displayName': 'Google Workspace Business Starter - Archived User'},
149
155
  '1010340006': {
150
156
  'product': '101034', 'aliases': ['wsbizstanarchived', 'workspacebusinessstanarchived'], 'displayName': 'Google Workspace Business Standard - Archived User'},
157
+ '1010340007': {
158
+ 'product': '101034', 'aliases': ['gwefau', 'gwefarchived', 'workspaceeducationfundamentalsarchived'], 'displayName': 'Google Workspace for Education Fundamentals - Archived User'},
151
159
  '1010060001': {
152
160
  'product': '101006', 'aliases': ['gsuiteessentials', 'essentials',
153
161
  'd4e', 'driveenterprise', 'drive4enterprise',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.5.9
3
+ Version: 7.5.12
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=5hf3PtcK9dntBIKEy91yqb1Uogrbti7P4k82wlO9eWU,3481445
1
+ gam/__init__.py,sha256=_cRAiwvxNCX3XEMBfvhoqoGgDW_rQAtNEzzhu9GLe7Q,3481865
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
@@ -32,7 +32,7 @@ gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
32
32
  gam/gamlib/glglobals.py,sha256=B0kCz4K6PO1-n3eZI_lvdRG99Ane1-dH4zS4J4aymlI,9566
33
33
  gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
34
34
  gam/gamlib/glmsgs.py,sha256=HSMxHRLbafIv7qByS1XJYbshu-B_xMrNzWXVakEmrME,33278
35
- gam/gamlib/glskus.py,sha256=S-OasG1SteZSV0cG8JM74L3wFp9sozoZd39fTXajQWc,14159
35
+ gam/gamlib/glskus.py,sha256=43JykBXQsB54sm8GZMbSLaOBTXqIOfNYIoGPvwvJeUE,14872
36
36
  gam/gamlib/gluprop.py,sha256=IyPLCyvn7-NHTUenM71YPQPXRZXx6CB5q-GtJ-FYd1c,11461
37
37
  gam/gamlib/glverlibs.py,sha256=XXYhmjOVti78JTy7NNr4ShIwiOX7LrfrmFSlqSWixrE,1077
38
38
  gam/gamlib/yubikey.py,sha256=-UC-3oue9qarYK3LT7YL6Gmqs7TMK8oz9_AoxdaG2FA,7925
@@ -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.5.9.dist-info/METADATA,sha256=5g-nZw9iIC0QtEfMWCKEneBbFlnP5YSqu4lEB_XoKhM,2888
69
- gam7-7.5.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.5.9.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.5.9.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.5.9.dist-info/RECORD,,
68
+ gam7-7.5.12.dist-info/METADATA,sha256=DVAK1UDfxM6yp1YXBpFWiiNISvTSfdc4lm28UJDYxVA,2889
69
+ gam7-7.5.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.5.12.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.5.12.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.5.12.dist-info/RECORD,,
File without changes