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 +21 -15
- gam/gamlib/glskus.py +8 -0
- {gam7-7.5.9.dist-info → gam7-7.5.12.dist-info}/METADATA +1 -1
- {gam7-7.5.9.dist-info → gam7-7.5.12.dist-info}/RECORD +7 -7
- {gam7-7.5.9.dist-info → gam7-7.5.12.dist-info}/WHEEL +0 -0
- {gam7-7.5.9.dist-info → gam7-7.5.12.dist-info}/entry_points.txt +0 -0
- {gam7-7.5.9.dist-info → gam7-7.5.12.dist-info}/licenses/LICENSE +0 -0
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.
|
|
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
|
-
|
|
28208
|
-
|
|
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
|
|
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
|
-
|
|
42474
|
-
if notFoundBody[up].lower() in {'blocklogin'}:
|
|
42480
|
+
if password.lower() == 'blocklogin':
|
|
42475
42481
|
self.makeCleanPassword = False
|
|
42476
42482
|
notFoundBody[up] = self.CreateRandomPassword()
|
|
42477
|
-
|
|
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
|
-
|
|
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,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
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=
|
|
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.
|
|
69
|
-
gam7-7.5.
|
|
70
|
-
gam7-7.5.
|
|
71
|
-
gam7-7.5.
|
|
72
|
-
gam7-7.5.
|
|
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
|
|
File without changes
|
|
File without changes
|