gam7 7.23.5__py3-none-any.whl → 7.23.7__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 +46 -15
- gam/gamlib/glclargs.py +1 -0
- {gam7-7.23.5.dist-info → gam7-7.23.7.dist-info}/METADATA +1 -1
- {gam7-7.23.5.dist-info → gam7-7.23.7.dist-info}/RECORD +7 -7
- {gam7-7.23.5.dist-info → gam7-7.23.7.dist-info}/WHEEL +0 -0
- {gam7-7.23.5.dist-info → gam7-7.23.7.dist-info}/entry_points.txt +0 -0
- {gam7-7.23.5.dist-info → gam7-7.23.7.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.23.
|
|
28
|
+
__version__ = '7.23.07'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -16990,23 +16990,39 @@ def doDeleteAdmin():
|
|
|
16990
16990
|
except (GAPI.forbidden, GAPI.permissionDenied) as e:
|
|
16991
16991
|
ClientAPIAccessDeniedExit(str(e))
|
|
16992
16992
|
|
|
16993
|
-
|
|
16993
|
+
ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP = {
|
|
16994
16994
|
'user': 'assignedToUser',
|
|
16995
16995
|
'group': 'assignedToGroup',
|
|
16996
16996
|
'serviceaccount': 'assignedToServiceAccount',
|
|
16997
|
+
'unknown': 'assignedToUnknown',
|
|
16997
16998
|
}
|
|
16998
|
-
|
|
16999
|
+
ALL_ASSIGNEE_TYPES = ['user', 'group', 'serviceaccount']
|
|
17000
|
+
|
|
17001
|
+
PRINT_ADMIN_FIELDS = ['roleAssignmentId', 'roleId', 'assignedTo', 'scopeType', 'orgUnitId']
|
|
16999
17002
|
PRINT_ADMIN_TITLES = ['roleAssignmentId', 'roleId', 'role',
|
|
17000
17003
|
'assignedTo', 'assignedToUser', 'assignedToGroup', 'assignedToServiceAccount', 'assignedToUnknown',
|
|
17001
17004
|
'scopeType', 'orgUnitId', 'orgUnit']
|
|
17002
17005
|
|
|
17003
17006
|
# gam print admins [todrive <ToDriveAttribute>*]
|
|
17004
17007
|
# [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
17008
|
+
# [types <AdminAssigneeTypeList>]
|
|
17005
17009
|
# [recursive] [condition] [privileges] [oneitemperrow]
|
|
17006
17010
|
# gam show admins
|
|
17007
17011
|
# [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
17012
|
+
# [types <AdminAssigneeTypeList>]
|
|
17008
17013
|
# [recursive] [condition] [privileges]
|
|
17009
17014
|
def doPrintShowAdmins():
|
|
17015
|
+
def _getAssigneeTypes(myarg):
|
|
17016
|
+
if myarg in {'type', 'types'}:
|
|
17017
|
+
for gtype in getString(Cmd.OB_ADMIN_ASSIGNEE_TYPE_LIST).lower().replace(',', ' ').split():
|
|
17018
|
+
if gtype in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
|
|
17019
|
+
typesSet.add(ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[gtype])
|
|
17020
|
+
else:
|
|
17021
|
+
invalidChoiceExit(gtype, ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP, True)
|
|
17022
|
+
else:
|
|
17023
|
+
return False
|
|
17024
|
+
return True
|
|
17025
|
+
|
|
17010
17026
|
def _getPrivileges(admin):
|
|
17011
17027
|
if showPrivileges:
|
|
17012
17028
|
roleId = admin['roleId']
|
|
@@ -17032,16 +17048,19 @@ def doPrintShowAdmins():
|
|
|
17032
17048
|
def _setNamesFromIds(admin, privileges):
|
|
17033
17049
|
admin['role'] = role_from_roleid(admin['roleId'])
|
|
17034
17050
|
assignedTo = admin['assignedTo']
|
|
17051
|
+
admin['assignedToUnknown'] = False
|
|
17035
17052
|
if assignedTo not in assignedToIdEmailMap:
|
|
17036
|
-
|
|
17037
|
-
|
|
17038
|
-
if assigneeType in
|
|
17039
|
-
assignedToField =
|
|
17053
|
+
emailTypes = ALL_ASSIGNEE_TYPES if admin.get('assigneeType', '') != 'group' else ['group']
|
|
17054
|
+
assigneeEmail, assigneeType = convertUIDtoEmailAddressWithType(f'uid:{assignedTo}', cd, sal, emailTypes=emailTypes)
|
|
17055
|
+
if assigneeType in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
|
|
17056
|
+
assignedToField = ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[assigneeType]
|
|
17040
17057
|
else:
|
|
17041
17058
|
assignedToField = 'assignedToUnknown'
|
|
17059
|
+
if assignedToField == 'assignedToUnknown':
|
|
17042
17060
|
assigneeEmail = True
|
|
17043
17061
|
assignedToIdEmailMap[assignedTo] = {'assignedToField': assignedToField, 'assigneeEmail': assigneeEmail}
|
|
17044
17062
|
admin[assignedToIdEmailMap[assignedTo]['assignedToField']] = assignedToIdEmailMap[assignedTo]['assigneeEmail']
|
|
17063
|
+
admin['assignedToField'] = assignedToIdEmailMap[assignedTo]['assignedToField']
|
|
17045
17064
|
if privileges is not None:
|
|
17046
17065
|
admin.update(privileges)
|
|
17047
17066
|
if 'orgUnitId' in admin:
|
|
@@ -17051,18 +17070,22 @@ def doPrintShowAdmins():
|
|
|
17051
17070
|
admin['condition'] = 'securitygroup'
|
|
17052
17071
|
elif admin['condition'] == NONSECURITY_GROUP_CONDITION:
|
|
17053
17072
|
admin['condition'] = 'nonsecuritygroup'
|
|
17073
|
+
if debug:
|
|
17074
|
+
print('******', admin['assignedTo'], admin.get('assigneeType', 'no type'),
|
|
17075
|
+
admin['assignedToField'], not typesSet or admin['assignedToField'] in typesSet)
|
|
17076
|
+
return not typesSet or admin['assignedToField'] in typesSet
|
|
17054
17077
|
|
|
17055
17078
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
17056
17079
|
sal = buildGAPIObject(API.SERVICEACCOUNTLOOKUP)
|
|
17057
17080
|
csvPF = CSVPrintFile(PRINT_ADMIN_TITLES) if Act.csvFormat() else None
|
|
17058
17081
|
roleId = None
|
|
17059
17082
|
userKey = None
|
|
17060
|
-
oneItemPerRow = recursive = showPrivileges = False
|
|
17083
|
+
debug = oneItemPerRow = recursive = showPrivileges = False
|
|
17084
|
+
typesSet = set()
|
|
17061
17085
|
kwargs = {}
|
|
17062
17086
|
rolePrivileges = {}
|
|
17063
|
-
fieldsList = PRINT_ADMIN_FIELDS
|
|
17087
|
+
fieldsList = PRINT_ADMIN_FIELDS+['assigneeType']
|
|
17064
17088
|
assignedToIdEmailMap = {}
|
|
17065
|
-
allAssigneeTypes = list(ASSIGNEE_EMAILTYPE_TOFIELD_MAP.keys())
|
|
17066
17089
|
while Cmd.ArgumentsRemaining():
|
|
17067
17090
|
myarg = getArgument()
|
|
17068
17091
|
if csvPF and myarg == 'todrive':
|
|
@@ -17071,6 +17094,8 @@ def doPrintShowAdmins():
|
|
|
17071
17094
|
userKey = kwargs['userKey'] = getEmailAddress()
|
|
17072
17095
|
elif myarg == 'role':
|
|
17073
17096
|
_, roleId = getRoleId()
|
|
17097
|
+
elif _getAssigneeTypes(myarg):
|
|
17098
|
+
pass
|
|
17074
17099
|
elif myarg == 'recursive':
|
|
17075
17100
|
recursive = True
|
|
17076
17101
|
allGroupRoles = ','.join(sorted(ALL_GROUP_ROLES))
|
|
@@ -17088,6 +17113,8 @@ def doPrintShowAdmins():
|
|
|
17088
17113
|
showPrivileges = True
|
|
17089
17114
|
elif myarg == 'oneitemperrow':
|
|
17090
17115
|
oneItemPerRow = True
|
|
17116
|
+
elif myarg == 'debug':
|
|
17117
|
+
debug = True
|
|
17091
17118
|
else:
|
|
17092
17119
|
unknownArgumentExit()
|
|
17093
17120
|
if roleId and not kwargs:
|
|
@@ -17123,11 +17150,11 @@ def doPrintShowAdmins():
|
|
|
17123
17150
|
i += 1
|
|
17124
17151
|
if roleId and roleId != admin['roleId']:
|
|
17125
17152
|
continue
|
|
17153
|
+
assignedTo = admin['assignedTo']
|
|
17126
17154
|
if admin['assigneeType'] != 'group' or not recursive:
|
|
17127
|
-
_setNamesFromIds(admin, _getPrivileges(admin))
|
|
17128
|
-
|
|
17155
|
+
if _setNamesFromIds(admin, _getPrivileges(admin)):
|
|
17156
|
+
expandedAdmins.append(admin)
|
|
17129
17157
|
continue
|
|
17130
|
-
assignedTo = admin['assignedTo']
|
|
17131
17158
|
if assignedTo not in groupMembers:
|
|
17132
17159
|
membersList = []
|
|
17133
17160
|
membersSet = set()
|
|
@@ -17135,7 +17162,9 @@ def doPrintShowAdmins():
|
|
|
17135
17162
|
getGroupMembers(cd, assignedTo, allGroupRoles, membersList, membersSet, i, count,
|
|
17136
17163
|
memberOptions, memberDisplayOptions, level, {Ent.TYPE_USER})
|
|
17137
17164
|
groupMembers[assignedTo] = membersList[:]
|
|
17138
|
-
_setNamesFromIds(admin, _getPrivileges(admin))
|
|
17165
|
+
if not _setNamesFromIds(admin, _getPrivileges(admin)):
|
|
17166
|
+
continue
|
|
17167
|
+
expandedAdmins.append(admin)
|
|
17139
17168
|
if not groupMembers[assignedTo]:
|
|
17140
17169
|
expandedAdmins.append(admin)
|
|
17141
17170
|
continue
|
|
@@ -17158,7 +17187,7 @@ def doPrintShowAdmins():
|
|
|
17158
17187
|
Ind.Increment()
|
|
17159
17188
|
for field in PRINT_ADMIN_TITLES:
|
|
17160
17189
|
if field in admin:
|
|
17161
|
-
if field == 'roleAssignmentId':
|
|
17190
|
+
if (field == 'roleAssignmentId') or (field == 'assignedToUnknown' and not admin[field]):
|
|
17162
17191
|
continue
|
|
17163
17192
|
printKeyValueList([field, admin[field]])
|
|
17164
17193
|
if showPrivileges:
|
|
@@ -17173,6 +17202,8 @@ def doPrintShowAdmins():
|
|
|
17173
17202
|
Ind.Decrement()
|
|
17174
17203
|
else:
|
|
17175
17204
|
for admin in expandedAdmins:
|
|
17205
|
+
admin.pop('assigneeType', None)
|
|
17206
|
+
admin.pop('assignedToField')
|
|
17176
17207
|
if not oneItemPerRow or 'rolePrivileges' not in admin:
|
|
17177
17208
|
csvPF.WriteRowTitles(flattenJSON(admin))
|
|
17178
17209
|
else:
|
gam/gamlib/glclargs.py
CHANGED
|
@@ -1138,6 +1138,7 @@ class GamCLArgs():
|
|
|
1138
1138
|
OB_ARGUMENT = 'argument'
|
|
1139
1139
|
OB_ASP_ID_LIST = 'ASPIDList'
|
|
1140
1140
|
OB_ASSET_ID = 'AssetID'
|
|
1141
|
+
OB_ADMIN_ASSIGNEE_TYPE_LIST = 'AdminAssigneeTypeList'
|
|
1141
1142
|
OB_BROWSER_ENROLLEMNT_TOKEN_ID = 'BrowserEnrollmentTokenID'
|
|
1142
1143
|
OB_BROWSER_ENTITY = 'BrowserEntity'
|
|
1143
1144
|
OB_BUILDING_ID = 'BuildingID'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=4YrLoMJgKhbcDviaShnbuPe-BAk8K_GZF8H-TtlObxM,3623580
|
|
2
2
|
gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
|
|
3
3
|
gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
|
|
4
4
|
gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
|
|
@@ -24,7 +24,7 @@ gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
|
|
|
24
24
|
gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
|
|
25
25
|
gam/gamlib/glapi.py,sha256=u97M7Y2BeP3tYEEGYEz-9kY4fdV0fYkeqC3YN-sRwNc,36028
|
|
26
26
|
gam/gamlib/glcfg.py,sha256=jX9IIrqSa8CPZ-UdnMDs2RuGo8vPh3jpgvRhI9VRbII,28325
|
|
27
|
-
gam/gamlib/glclargs.py,sha256=
|
|
27
|
+
gam/gamlib/glclargs.py,sha256=LlTtwJJHqU48l7SQT4bcZCWlw3Y46g42Bn1ACGW8gIk,53307
|
|
28
28
|
gam/gamlib/glentity.py,sha256=KWFomkoNE6lLE83zVqVIlJ2rkzfLkhEasW1M0TWGieA,35373
|
|
29
29
|
gam/gamlib/glgapi.py,sha256=pdBbwNtnCwFWxJGaP-_3hdTjSNoOCJF2yo76WdQOi1k,40426
|
|
30
30
|
gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
|
|
@@ -47,8 +47,8 @@ gam/gdata/apps/audit/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrK
|
|
|
47
47
|
gam/gdata/apps/audit/service.py,sha256=Z1eueThcNeVUMWP1DRWc_DGHrJCiJI8W_xj6L-cqu-Q,9658
|
|
48
48
|
gam/gdata/apps/contacts/__init__.py,sha256=Um6zgIkiahZns7yAEuC3pxHSMD8iciZ_EoynSLoYPfU,30463
|
|
49
49
|
gam/gdata/apps/contacts/service.py,sha256=5lNb-Ii1Gyek6ePFji3kyoYtCBc8CuJTwagx2BL2o14,15684
|
|
50
|
-
gam7-7.23.
|
|
51
|
-
gam7-7.23.
|
|
52
|
-
gam7-7.23.
|
|
53
|
-
gam7-7.23.
|
|
54
|
-
gam7-7.23.
|
|
50
|
+
gam7-7.23.7.dist-info/METADATA,sha256=2BHtjvFhi6hIfTYI-IaSHB8pv4Omsqb3l1zJ0C9qBK8,3092
|
|
51
|
+
gam7-7.23.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
gam7-7.23.7.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
53
|
+
gam7-7.23.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
54
|
+
gam7-7.23.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|