gam7 7.23.5__py3-none-any.whl → 7.23.6__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.23.05'
28
+ __version__ = '7.23.06'
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,21 +16990,37 @@ def doDeleteAdmin():
16990
16990
  except (GAPI.forbidden, GAPI.permissionDenied) as e:
16991
16991
  ClientAPIAccessDeniedExit(str(e))
16992
16992
 
16993
- ASSIGNEE_EMAILTYPE_TOFIELD_MAP = {
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
  }
16999
+ ALL_ASSIGNEE_TYPES = ['user', 'group', 'serviceaccount']
17000
+
16998
17001
  PRINT_ADMIN_FIELDS = ['roleAssignmentId', 'roleId', 'assignedTo', 'scopeType', 'orgUnitId', 'assigneeType']
16999
17002
  PRINT_ADMIN_TITLES = ['roleAssignmentId', 'roleId', 'role',
17000
17003
  'assignedTo', 'assignedToUser', 'assignedToGroup', 'assignedToServiceAccount', 'assignedToUnknown',
17001
17004
  'scopeType', 'orgUnitId', 'orgUnit']
17002
17005
 
17006
+ def getAssigneeTypes(myarg, typesSet):
17007
+ if myarg in {'type', 'types'}:
17008
+ for gtype in getString(Cmd.OB_ADMIN_ASSIGNEE_TYPE_LIST).lower().replace(',', ' ').split():
17009
+ if gtype in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
17010
+ typesSet.add(ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[gtype])
17011
+ else:
17012
+ invalidChoiceExit(gtype, ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP, True)
17013
+ else:
17014
+ return False
17015
+ return True
17016
+
17003
17017
  # gam print admins [todrive <ToDriveAttribute>*]
17004
17018
  # [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
17019
+ # [types <AdminAssigneeTypeList>]
17005
17020
  # [recursive] [condition] [privileges] [oneitemperrow]
17006
17021
  # gam show admins
17007
17022
  # [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
17023
+ # [types <AdminAssigneeTypeList>]
17008
17024
  # [recursive] [condition] [privileges]
17009
17025
  def doPrintShowAdmins():
17010
17026
  def _getPrivileges(admin):
@@ -17034,14 +17050,16 @@ def doPrintShowAdmins():
17034
17050
  assignedTo = admin['assignedTo']
17035
17051
  if assignedTo not in assignedToIdEmailMap:
17036
17052
  assigneeEmail, assigneeType = convertUIDtoEmailAddressWithType(f'uid:{assignedTo}', cd, sal,
17037
- emailTypes=allAssigneeTypes if admin.get('assigneeType') != 'group' else ['group'])
17038
- if assigneeType in ASSIGNEE_EMAILTYPE_TOFIELD_MAP:
17039
- assignedToField = ASSIGNEE_EMAILTYPE_TOFIELD_MAP[assigneeType]
17053
+ emailTypes=ALL_ASSIGNEE_TYPES if admin.get('assigneeType') != 'group' else ['group'])
17054
+ if assigneeType in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
17055
+ assignedToField = ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[assigneeType]
17040
17056
  else:
17041
17057
  assignedToField = 'assignedToUnknown'
17058
+ if assignedToField == 'assignedToUnknown':
17042
17059
  assigneeEmail = True
17043
17060
  assignedToIdEmailMap[assignedTo] = {'assignedToField': assignedToField, 'assigneeEmail': assigneeEmail}
17044
17061
  admin[assignedToIdEmailMap[assignedTo]['assignedToField']] = assignedToIdEmailMap[assignedTo]['assigneeEmail']
17062
+ admin['assignedToField'] = assignedToIdEmailMap[assignedTo]['assignedToField']
17045
17063
  if privileges is not None:
17046
17064
  admin.update(privileges)
17047
17065
  if 'orgUnitId' in admin:
@@ -17058,11 +17076,11 @@ def doPrintShowAdmins():
17058
17076
  roleId = None
17059
17077
  userKey = None
17060
17078
  oneItemPerRow = recursive = showPrivileges = False
17079
+ typesSet = set()
17061
17080
  kwargs = {}
17062
17081
  rolePrivileges = {}
17063
17082
  fieldsList = PRINT_ADMIN_FIELDS
17064
17083
  assignedToIdEmailMap = {}
17065
- allAssigneeTypes = list(ASSIGNEE_EMAILTYPE_TOFIELD_MAP.keys())
17066
17084
  while Cmd.ArgumentsRemaining():
17067
17085
  myarg = getArgument()
17068
17086
  if csvPF and myarg == 'todrive':
@@ -17071,6 +17089,8 @@ def doPrintShowAdmins():
17071
17089
  userKey = kwargs['userKey'] = getEmailAddress()
17072
17090
  elif myarg == 'role':
17073
17091
  _, roleId = getRoleId()
17092
+ elif getAssigneeTypes(myarg, typesSet):
17093
+ pass
17074
17094
  elif myarg == 'recursive':
17075
17095
  recursive = True
17076
17096
  allGroupRoles = ','.join(sorted(ALL_GROUP_ROLES))
@@ -17093,6 +17113,8 @@ def doPrintShowAdmins():
17093
17113
  if roleId and not kwargs:
17094
17114
  kwargs['roleId'] = roleId
17095
17115
  roleId = None
17116
+ if not typesSet:
17117
+ typesSet = set(ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP.values())
17096
17118
  fields = getItemFieldsFromFieldsList('items', fieldsList)
17097
17119
  printGettingAllAccountEntities(Ent.ADMIN_ROLE_ASSIGNMENT)
17098
17120
  try:
@@ -17123,11 +17145,12 @@ def doPrintShowAdmins():
17123
17145
  i += 1
17124
17146
  if roleId and roleId != admin['roleId']:
17125
17147
  continue
17148
+ assignedTo = admin['assignedTo']
17126
17149
  if admin['assigneeType'] != 'group' or not recursive:
17127
17150
  _setNamesFromIds(admin, _getPrivileges(admin))
17128
- expandedAdmins.append(admin)
17151
+ if admin['assignedToField'] in typesSet:
17152
+ expandedAdmins.append(admin)
17129
17153
  continue
17130
- assignedTo = admin['assignedTo']
17131
17154
  if assignedTo not in groupMembers:
17132
17155
  membersList = []
17133
17156
  membersSet = set()
@@ -17136,6 +17159,9 @@ def doPrintShowAdmins():
17136
17159
  memberOptions, memberDisplayOptions, level, {Ent.TYPE_USER})
17137
17160
  groupMembers[assignedTo] = membersList[:]
17138
17161
  _setNamesFromIds(admin, _getPrivileges(admin))
17162
+ if admin[assignedToIdEmailMap[assignedTo]['assignedToField']] not in typesSet:
17163
+ continue
17164
+ expandedAdmins.append(admin)
17139
17165
  if not groupMembers[assignedTo]:
17140
17166
  expandedAdmins.append(admin)
17141
17167
  continue
@@ -17173,6 +17199,7 @@ def doPrintShowAdmins():
17173
17199
  Ind.Decrement()
17174
17200
  else:
17175
17201
  for admin in expandedAdmins:
17202
+ admin.pop('assignedToField')
17176
17203
  if not oneItemPerRow or 'rolePrivileges' not in admin:
17177
17204
  csvPF.WriteRowTitles(flattenJSON(admin))
17178
17205
  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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.23.5
3
+ Version: 7.23.6
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=azObku-kchg7drgmBFc3imztILTag7nTTt2PSx-l-Cs,3622295
1
+ gam/__init__.py,sha256=hT_6mB1-IGqw6dWjKeo0W3EQF73Ve2_NjiX_xB7INIc,3623383
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=rGcAoRLaCv5L9cBxI56MrPXr0JcImO45bLQNaYahoUY,53251
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.5.dist-info/METADATA,sha256=4fCdZBo8CEvLYKB3C5MxtUIMeqGHc4DZCPHUN3oPdh8,3092
51
- gam7-7.23.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
- gam7-7.23.5.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
- gam7-7.23.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
- gam7-7.23.5.dist-info/RECORD,,
50
+ gam7-7.23.6.dist-info/METADATA,sha256=BEAOLvBw21I1PEiIFYzkqJhHRdWQeu1_BzMSM6LDzrU,3092
51
+ gam7-7.23.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
+ gam7-7.23.6.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
+ gam7-7.23.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
+ gam7-7.23.6.dist-info/RECORD,,
File without changes