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 +22 -12
- gam/gamlib/glgapi.py +4 -0
- {gam7-7.14.2.dist-info → gam7-7.14.4.dist-info}/METADATA +1 -1
- {gam7-7.14.2.dist-info → gam7-7.14.4.dist-info}/RECORD +7 -7
- {gam7-7.14.2.dist-info → gam7-7.14.4.dist-info}/WHEEL +0 -0
- {gam7-7.14.2.dist-info → gam7-7.14.4.dist-info}/entry_points.txt +0 -0
- {gam7-7.14.2.dist-info → gam7-7.14.4.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.14.
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
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=
|
|
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.
|
|
69
|
-
gam7-7.14.
|
|
70
|
-
gam7-7.14.
|
|
71
|
-
gam7-7.14.
|
|
72
|
-
gam7-7.14.
|
|
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
|
|
File without changes
|
|
File without changes
|