gam7 7.5.11__tar.gz → 7.5.12__tar.gz

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.

Files changed (108) hide show
  1. {gam7-7.5.11 → gam7-7.5.12}/PKG-INFO +1 -1
  2. {gam7-7.5.11 → gam7-7.5.12}/src/GamUpdate.txt +9 -1
  3. {gam7-7.5.11 → gam7-7.5.12}/src/gam/__init__.py +15 -15
  4. {gam7-7.5.11 → gam7-7.5.12}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  5. {gam7-7.5.11 → gam7-7.5.12}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  6. {gam7-7.5.11 → gam7-7.5.12}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  7. {gam7-7.5.11 → gam7-7.5.12}/.github/ISSUE_TEMPLATE.txt +0 -0
  8. {gam7-7.5.11 → gam7-7.5.12}/.github/actions/creds.tar.xz.gpg +0 -0
  9. {gam7-7.5.11 → gam7-7.5.12}/.github/actions/decrypt.sh +0 -0
  10. {gam7-7.5.11 → gam7-7.5.12}/.github/actions/entitlements.plist +0 -0
  11. {gam7-7.5.11 → gam7-7.5.12}/.github/actions/package_exclusions.txt +0 -0
  12. {gam7-7.5.11 → gam7-7.5.12}/.github/stale.yml +0 -0
  13. {gam7-7.5.11 → gam7-7.5.12}/.github/workflows/build.yml +0 -0
  14. {gam7-7.5.11 → gam7-7.5.12}/.github/workflows/codeql-analysis.yml +0 -0
  15. {gam7-7.5.11 → gam7-7.5.12}/.github/workflows/get-cacerts.yml +0 -0
  16. {gam7-7.5.11 → gam7-7.5.12}/.github/workflows/pypi.yml +0 -0
  17. {gam7-7.5.11 → gam7-7.5.12}/.pre-commit-config.yaml +0 -0
  18. {gam7-7.5.11 → gam7-7.5.12}/LICENSE +0 -0
  19. {gam7-7.5.11 → gam7-7.5.12}/README.md +0 -0
  20. {gam7-7.5.11 → gam7-7.5.12}/pyproject.toml +0 -0
  21. {gam7-7.5.11 → gam7-7.5.12}/src/.gitignore +0 -0
  22. {gam7-7.5.11 → gam7-7.5.12}/src/GamCommands.txt +0 -0
  23. {gam7-7.5.11 → gam7-7.5.12}/src/LICENSE +0 -0
  24. {gam7-7.5.11 → gam7-7.5.12}/src/cacerts.pem +0 -0
  25. {gam7-7.5.11 → gam7-7.5.12}/src/callgam.py +0 -0
  26. {gam7-7.5.11 → gam7-7.5.12}/src/gam/__main__.py +0 -0
  27. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/__init__.py +0 -0
  28. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/auth.py +0 -0
  29. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/client.py +0 -0
  30. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/core.py +0 -0
  31. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/data.py +0 -0
  32. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/http.py +0 -0
  33. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/http_core.py +0 -0
  34. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/http_interface.py +0 -0
  35. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/mock_http.py +0 -0
  36. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/mock_http_core.py +0 -0
  37. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/mock_service.py +0 -0
  38. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/service.py +0 -0
  39. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/token_store.py +0 -0
  40. {gam7-7.5.11 → gam7-7.5.12}/src/gam/atom/url.py +0 -0
  41. {gam7-7.5.11 → gam7-7.5.12}/src/gam/cacerts.pem +0 -0
  42. {gam7-7.5.11 → gam7-7.5.12}/src/gam/cbcm-v1.1beta1.json +0 -0
  43. {gam7-7.5.11 → gam7-7.5.12}/src/gam/contactdelegation-v1.json +0 -0
  44. {gam7-7.5.11 → gam7-7.5.12}/src/gam/datastudio-v1.json +0 -0
  45. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/__init__.py +0 -0
  46. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glaction.py +0 -0
  47. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glapi.py +0 -0
  48. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glcfg.py +0 -0
  49. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glclargs.py +0 -0
  50. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glentity.py +0 -0
  51. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glgapi.py +0 -0
  52. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glgdata.py +0 -0
  53. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glglobals.py +0 -0
  54. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glindent.py +0 -0
  55. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glmsgs.py +0 -0
  56. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glskus.py +0 -0
  57. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/gluprop.py +0 -0
  58. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/glverlibs.py +0 -0
  59. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gamlib/yubikey.py +0 -0
  60. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/__init__.py +0 -0
  61. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/alt/__init__.py +0 -0
  62. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/alt/app_engine.py +0 -0
  63. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/alt/appengine.py +0 -0
  64. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/apps/__init__.py +0 -0
  65. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/apps/audit/__init__.py +0 -0
  66. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/apps/audit/service.py +0 -0
  67. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  68. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/apps/contacts/service.py +0 -0
  69. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/apps/service.py +0 -0
  70. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/service.py +0 -0
  71. {gam7-7.5.11 → gam7-7.5.12}/src/gam/gdata/urlfetch.py +0 -0
  72. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/__init__.py +0 -0
  73. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/_auth.py +0 -0
  74. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/_helpers.py +0 -0
  75. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/channel.py +0 -0
  76. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/discovery.py +0 -0
  77. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  78. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  79. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  80. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  81. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/errors.py +0 -0
  82. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/http.py +0 -0
  83. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/mimeparse.py +0 -0
  84. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/model.py +0 -0
  85. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/schema.py +0 -0
  86. {gam7-7.5.11 → gam7-7.5.12}/src/gam/googleapiclient/version.py +0 -0
  87. {gam7-7.5.11 → gam7-7.5.12}/src/gam/iso8601/__init__.py +0 -0
  88. {gam7-7.5.11 → gam7-7.5.12}/src/gam/iso8601/iso8601.py +0 -0
  89. {gam7-7.5.11 → gam7-7.5.12}/src/gam/meet-v2beta.json +0 -0
  90. {gam7-7.5.11 → gam7-7.5.12}/src/gam/serviceaccountlookup-v1.json +0 -0
  91. {gam7-7.5.11 → gam7-7.5.12}/src/gam/six.py +0 -0
  92. {gam7-7.5.11 → gam7-7.5.12}/src/gam-install.sh +0 -0
  93. {gam7-7.5.11 → gam7-7.5.12}/src/gam-setup.bat +0 -0
  94. {gam7-7.5.11 → gam7-7.5.12}/src/gam.exe.manifest +0 -0
  95. {gam7-7.5.11 → gam7-7.5.12}/src/gam.py +0 -0
  96. {gam7-7.5.11 → gam7-7.5.12}/src/gam.spec +0 -0
  97. {gam7-7.5.11 → gam7-7.5.12}/src/gam.wxs +0 -0
  98. {gam7-7.5.11 → gam7-7.5.12}/src/license.rtf +0 -0
  99. {gam7-7.5.11 → gam7-7.5.12}/src/project-apis.txt +0 -0
  100. {gam7-7.5.11 → gam7-7.5.12}/src/requirements-dev.txt +0 -0
  101. {gam7-7.5.11 → gam7-7.5.12}/src/requirements.txt +0 -0
  102. {gam7-7.5.11 → gam7-7.5.12}/src/setup.cfg +0 -0
  103. {gam7-7.5.11 → gam7-7.5.12}/src/setup.py +0 -0
  104. {gam7-7.5.11 → gam7-7.5.12}/src/tools/a_atleast_b.py +0 -0
  105. {gam7-7.5.11 → gam7-7.5.12}/src/tools/gen-wix-xml-filelist.py +0 -0
  106. {gam7-7.5.11 → gam7-7.5.12}/src/tools/mkGamRef.py +0 -0
  107. {gam7-7.5.11 → gam7-7.5.12}/src/tools/openssl.props +0 -0
  108. {gam7-7.5.11 → gam7-7.5.12}/src/version_info.txt.in +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.5.11
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,12 @@
1
- 7.05.11
1
+ 7.05.12
2
+
3
+ Fixed bug in `gam update chromepolicy` where `appid` was misinterpreted for `chrome.devices.kiosk` policies
4
+ and an error was generated.
5
+ ```
6
+ ERROR: Chrome Policy Schema: customers/C123abc456/policySchemas/<Field>, Does not exist
7
+ ```
8
+
9
+ !7.05.11
2
10
 
3
11
  Added the following License SKUs:
4
12
  ```
@@ -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.11'
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
@@ -28202,6 +28202,7 @@ def doUpdateChromePolicy():
28202
28202
  schemaName, schema = simplifyChromeSchema(_getChromePolicySchema(cp, Cmd.Previous(), '*'))
28203
28203
  body['requests'].append({'policyValue': {'policySchema': schemaName, 'value': {}},
28204
28204
  'updateMask': ''})
28205
+ schemaNameList.append(schemaName)
28205
28206
  while Cmd.ArgumentsRemaining():
28206
28207
  field = getArgumentEmptyAllowed()
28207
28208
  # Allow an empty field/value pair which makes processing an input CSV file with schemas with different numbers of fields easy
@@ -28210,8 +28211,9 @@ def doUpdateChromePolicy():
28210
28211
  Cmd.Advance()
28211
28212
  continue
28212
28213
  if field in {'ou', 'org', 'orgunit', 'group', 'printerid', 'appid'} or '.' in field:
28213
- Cmd.Backup()
28214
- 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
28215
28217
  # JSON
28216
28218
  if field == 'json':
28217
28219
  jsonData = getJSON(['direct', 'name', 'orgUnitPath', 'parentOrgUnitPath', 'group'])
@@ -28222,7 +28224,7 @@ def doUpdateChromePolicy():
28222
28224
  body['requests'][-1]['policyTargetKey']['additionalTargetKeys'] = {atk['name']: atk['value']}
28223
28225
  if atk['name'] == 'app_id':
28224
28226
  schemaNameAppId += f"({atk['value']})"
28225
- schemaNameList.append(schemaNameAppId)
28227
+ schemaNameList[-1] = schemaNameAppId
28226
28228
  for field in jsonData.get('fields', []):
28227
28229
  casedField = field['name']
28228
28230
  lowerField = casedField.lower()
@@ -28263,7 +28265,6 @@ def doUpdateChromePolicy():
28263
28265
  body['requests'][-1]['policyValue']['value'][casedField] = value
28264
28266
  body['requests'][-1]['updateMask'] += f'{casedField},'
28265
28267
  break
28266
- schemaNameList.append(schemaName)
28267
28268
  # Handle TYPE_MESSAGE fields with durations, values, counts and timeOfDay as special cases
28268
28269
  tmschema = CHROME_SCHEMA_TYPE_MESSAGE.get(schemaName, {}).get(field)
28269
28270
  if tmschema:
@@ -42476,16 +42477,16 @@ class PasswordOptions():
42476
42477
  up = 'password'
42477
42478
  password = self.GetPassword()
42478
42479
  if password:
42479
- notFoundBody[up] = password
42480
- if notFoundBody[up].lower() in {'blocklogin'}:
42480
+ if password.lower() == 'blocklogin':
42481
42481
  self.makeCleanPassword = False
42482
42482
  notFoundBody[up] = self.CreateRandomPassword()
42483
- self.notFoundPassword = notFoundBody[up]
42484
- elif notFoundBody[up].lower() in {'random', 'uniquerandom'}:
42483
+ elif password.lower() in {'random', 'uniquerandom'}:
42485
42484
  self.SetCleanPasswordLen()
42486
42485
  self.makeCleanPassword = True
42487
42486
  notFoundBody[up] = self.CreateRandomPassword()
42488
- self.notFoundPassword = notFoundBody[up]
42487
+ else:
42488
+ notFoundBody[up] = password
42489
+ self.notFoundPassword = notFoundBody[up]
42489
42490
  elif myarg in {'lograndompassword', 'logpassword'}:
42490
42491
  self.filename = getString(Cmd.OB_FILE_NAME)
42491
42492
  else:
@@ -42528,6 +42529,8 @@ class PasswordOptions():
42528
42529
  self.promptForUniquePassword = True
42529
42530
  else:
42530
42531
  self.promptForPassword = True
42532
+ else:
42533
+ self.password = password
42531
42534
  elif up == 'hashFunction':
42532
42535
  body[up] = self.HASH_FUNCTION_MAP[myarg]
42533
42536
  self.clearPassword = self.hashPassword = False
@@ -43240,9 +43243,7 @@ def doCreateUser():
43240
43243
  cd = buildGAPIObject(API.DIRECTORY)
43241
43244
  body, notify, tagReplacements, addGroups, addAliases, PwdOpts, \
43242
43245
  _, _, _, \
43243
- parameters, resolveConflictAccount = getUserAttributes(cd,
43244
- False,
43245
- noUid=True)
43246
+ parameters, resolveConflictAccount = getUserAttributes(cd, False, noUid=True)
43246
43247
  suffix = 0
43247
43248
  originalEmail = body['primaryEmail']
43248
43249
  atLoc = originalEmail.find('@')
@@ -43350,8 +43351,7 @@ def updateUsers(entityList):
43350
43351
  updateRetryDelay = 5
43351
43352
  body, notify, tagReplacements, addGroups, addAliases, PwdOpts, \
43352
43353
  updatePrimaryEmail, notFoundBody, groupOrgUnitMap, \
43353
- parameters, resolveConflictAccount = getUserAttributes(cd,
43354
- True)
43354
+ parameters, resolveConflictAccount = getUserAttributes(cd, True)
43355
43355
  vfe = 'primaryEmail' in body and body['primaryEmail'][:4].lower() == 'vfe@'
43356
43356
  if body.get('orgUnitPath', '') and parameters['immutableOUs']:
43357
43357
  ubody = body.copy()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes