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 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.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
- 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
  }
16998
- PRINT_ADMIN_FIELDS = ['roleAssignmentId', 'roleId', 'assignedTo', 'scopeType', 'orgUnitId', 'assigneeType']
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
- 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
+ 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
- expandedAdmins.append(admin)
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.23.5
3
+ Version: 7.23.7
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=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=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.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