gam7 7.27.4__py3-none-any.whl → 7.27.5__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.27.04'
28
+ __version__ = '7.27.05'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -35921,7 +35921,7 @@ def doPrintShowGroupTree():
35921
35921
  # gam create cigroup <EmailAddress>
35922
35922
  # [copyfrom <GroupItem>] <GroupAttribute>
35923
35923
  # [makeowner] [alias|aliases <CIGroupAliasList>]
35924
- # [security|makesecuritygroup]
35924
+ # [security|makesecuritygroup] [locked]
35925
35925
  # [dynamic <QueryDynamicGroup>]
35926
35926
  def doCreateCIGroup():
35927
35927
  doCreateGroup(ciGroupsAPI=True)
@@ -36105,7 +36105,6 @@ def doUpdateCIGroups():
36105
36105
 
36106
36106
  cd = buildGAPIObject(API.DIRECTORY)
36107
36107
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
36108
- cib = None
36109
36108
  entityType = Ent.CLOUD_IDENTITY_GROUP
36110
36109
  csvPF = None
36111
36110
  getBeforeUpdate = preview = False
@@ -36214,7 +36213,6 @@ def doUpdateCIGroups():
36214
36213
  _, name, _ = convertGroupEmailToCloudID(ci, group, i, count)
36215
36214
  if not name:
36216
36215
  continue
36217
- cipl = ci
36218
36216
  twoUpdates = False
36219
36217
  if 'labels' in ci_body or lockGroup is not None:
36220
36218
  try:
@@ -36243,20 +36241,16 @@ def doUpdateCIGroups():
36243
36241
  else:
36244
36242
  if CIGROUP_LOCKED_LABEL in ci_body['labels']:
36245
36243
  ci_body['labels'].pop(CIGROUP_LOCKED_LABEL)
36246
- if CIGROUP_LOCKED_LABEL in ci_body['labels']:
36247
- if cib is None:
36248
- cib = buildGAPIObject(API.CLOUDIDENTITY_GROUPS_BETA)
36249
- cipl = cib
36250
36244
  if ci_body:
36251
36245
  try:
36252
36246
  if twoUpdates:
36253
36247
  ci_body['labels'].pop(CIGROUP_LOCKED_LABEL)
36254
- callGAPI(cipl.groups(), 'patch',
36248
+ callGAPI(ci.groups(), 'patch',
36255
36249
  throwReasons=GAPI.CIGROUP_UPDATE_THROW_REASONS,
36256
36250
  retryReasons=GAPI.CIGROUP_RETRY_REASONS,
36257
36251
  name=name, body=ci_body, updateMask=','.join(list(ci_body.keys())))
36258
36252
  ci_body['labels'][CIGROUP_LOCKED_LABEL] = ''
36259
- callGAPI(cipl.groups(), 'patch',
36253
+ callGAPI(ci.groups(), 'patch',
36260
36254
  throwReasons=GAPI.CIGROUP_UPDATE_THROW_REASONS,
36261
36255
  retryReasons=GAPI.CIGROUP_RETRY_REASONS,
36262
36256
  name=name, body=ci_body, updateMask=','.join(list(ci_body.keys())))
@@ -37240,20 +37234,17 @@ def doPrintCIGroups():
37240
37234
  else:
37241
37235
  getFullFieldsList = list(CIGROUP_FULL_FIELDS)
37242
37236
  getFullFields = ','.join(getFullFieldsList)#
37243
- cipl = ci
37244
37237
  if query:
37245
37238
  method = 'search'
37246
37239
  if 'parent' not in query:
37247
37240
  query += f" && parent == '{parent}'"
37248
37241
  kwargs = {'query': query}
37249
- if CIGROUP_LOCKED_LABEL in query:
37250
- cipl = buildGAPIObject(API.CLOUDIDENTITY_GROUPS_BETA)
37251
37242
  else:
37252
37243
  method = 'list'
37253
37244
  kwargs = {'parent': parent}
37254
37245
  printGettingAllAccountEntities(Ent.CLOUD_IDENTITY_GROUP, query)
37255
37246
  try:
37256
- entityList = callGAPIpages(cipl.groups(), method, 'groups',
37247
+ entityList = callGAPIpages(ci.groups(), method, 'groups',
37257
37248
  pageMessage=getPageMessage(showFirstLastItems=True), messageAttribute=['groupKey', 'id'],
37258
37249
  throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS,
37259
37250
  view='FULL', fields=fieldsnp, pageSize=pageSize, **kwargs)
@@ -49166,6 +49157,7 @@ def _getCoursesInfo(croom, courseSelectionParameters, courseShowProperties, getO
49166
49157
  # [show none|all|students|teachers] [countsonly]
49167
49158
  # [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>]
49168
49159
  # [timefilter creationtime|updatetime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
49160
+ # (addcsvdata <FieldName> <String>)*
49169
49161
  # [showitemcountonly] [formatjson [quotechar <Character>]]
49170
49162
  def doPrintCourses():
49171
49163
  def _saveParticipants(course, participants, role, rtitles):
@@ -49209,6 +49201,7 @@ def doPrintCourses():
49209
49201
  delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
49210
49202
  showItemCountOnly = False
49211
49203
  useOwnerAccess = GC.Values[GC.USE_COURSE_OWNER_ACCESS]
49204
+ addCSVData = {}
49212
49205
  while Cmd.ArgumentsRemaining():
49213
49206
  myarg = getArgument()
49214
49207
  if myarg == 'todrive':
@@ -49223,6 +49216,9 @@ def doPrintCourses():
49223
49216
  pass
49224
49217
  elif myarg == 'showitemcountonly':
49225
49218
  showItemCountOnly = True
49219
+ elif myarg == 'addcsvdata':
49220
+ k = getString(Cmd.OB_STRING)
49221
+ addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
49226
49222
  else:
49227
49223
  FJQC.GetFormatJSONQuoteChar(myarg, True)
49228
49224
  applyCourseItemFilter = _setApplyCourseItemFilter(courseItemFilter, None)
@@ -49234,6 +49230,11 @@ def doPrintCourses():
49234
49230
  if showItemCountOnly:
49235
49231
  writeStdout('0\n')
49236
49232
  return
49233
+ if addCSVData:
49234
+ csvPF.AddTitles(sorted(addCSVData.keys()))
49235
+ if FJQC.formatJSON:
49236
+ csvPF.AddJSONTitles(sorted(addCSVData.keys()))
49237
+ csvPF.MoveJSONTitlesToEnd(['JSON'])
49237
49238
  if courseShowProperties['aliases']:
49238
49239
  if FJQC.formatJSON:
49239
49240
  csvPF.AddJSONTitles('JSON-aliases')
@@ -49291,11 +49292,15 @@ def doPrintCourses():
49291
49292
  if courseShowProperties['members'] != 'teachers':
49292
49293
  _saveParticipants(course, students, 'students', stitles)
49293
49294
  row = flattenJSON(course, timeObjects=COURSE_TIME_OBJECTS, noLenObjects=COURSE_NOLEN_OBJECTS)
49295
+ if addCSVData:
49296
+ row.update(addCSVData)
49294
49297
  if not FJQC.formatJSON:
49295
49298
  csvPF.WriteRowTitles(row)
49296
49299
  elif csvPF.CheckRowTitles(row):
49297
49300
  row = {'id': courseId, 'JSON': json.dumps(cleanJSON(course, timeObjects=COURSE_TIME_OBJECTS),
49298
49301
  ensure_ascii=False, sort_keys=True)}
49302
+ if addCSVData:
49303
+ row.update(addCSVData)
49299
49304
  if courseShowProperties['aliases']:
49300
49305
  row['JSON-aliases'] = json.dumps(list(aliases))
49301
49306
  if courseShowProperties['members'] != 'none':
gam/gamlib/glapi.py CHANGED
@@ -46,7 +46,6 @@ CLASSROOM = 'classroom'
46
46
  CLOUDCHANNEL = 'cloudchannel'
47
47
  CLOUDIDENTITY_DEVICES = 'cloudidentitydevices'
48
48
  CLOUDIDENTITY_GROUPS = 'cloudidentitygroups'
49
- CLOUDIDENTITY_GROUPS_BETA = 'cloudidentitygroupsbeta'
50
49
  CLOUDIDENTITY_INBOUND_SSO = 'cloudidentityinboundsso'
51
50
  CLOUDIDENTITY_ORGUNITS = 'cloudidentityorgunits'
52
51
  CLOUDIDENTITY_ORGUNITS_BETA = 'cloudidentityorgunitsbeta'
@@ -242,7 +241,6 @@ _INFO = {
242
241
  CLOUDCHANNEL: {'name': 'Cloud Channel API', 'version': 'v1', 'v2discovery': True},
243
242
  CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity API - Devices', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
244
243
  CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity API - Groups', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
245
- CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity API - Groups Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
246
244
  CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity API - Inbound SSO Settings', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
247
245
  CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
248
246
  CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
@@ -387,10 +385,6 @@ _CLIENT_SCOPES = [
387
385
  'api': CLOUDIDENTITY_GROUPS,
388
386
  'subscopes': READONLY,
389
387
  'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
390
- {'name': 'Cloud Identity API - Groups Beta (Enables group locking/unlocking)',
391
- 'api': CLOUDIDENTITY_GROUPS_BETA,
392
- 'subscopes': [],
393
- 'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
394
388
  {'name': 'Cloud Identity API - Inbound SSO Settings',
395
389
  'api': CLOUDIDENTITY_INBOUND_SSO,
396
390
  'subscopes': READONLY,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.27.4
3
+ Version: 7.27.5
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=ezWRtUli0pIMM9dMgTN_FzHCzS5NalnUjOQRio_zJmo,3629588
1
+ gam/__init__.py,sha256=6PDXteFqxSWOxe1OFvcP0KN88cuEkZPVH6JmPM95r9M,3629732
2
2
  gam/__main__.py,sha256=VwEYS7a9vYQPbT6iLduMOoVUJ6p4R-HZgerZQmM1NpE,1307
3
3
  gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -22,7 +22,7 @@ gam/atom/token_store.py,sha256=7E6Ecvxa86WCvl1pJAhv78jg9OxQv8pMtIUcPhZCq04,3803
22
22
  gam/atom/url.py,sha256=pxO1TlORxyKQTQ1bkBE1unFzjnv9c8LjJkm-UEORShY,4276
23
23
  gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
24
24
  gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
25
- gam/gamlib/glapi.py,sha256=g49VStWE64nCdrpNIMl60U06m98d3AGO8-vUDxgcBog,37048
25
+ gam/gamlib/glapi.py,sha256=t2ivDXJg4kH0SbdUJNdJH7IZG0uGEUz9gFuU3ri8CpQ,36638
26
26
  gam/gamlib/glcfg.py,sha256=do_FR9m9m7Bmh2SgjLPk2pysU-wPHt7PlqPPjX90tpw,28684
27
27
  gam/gamlib/glclargs.py,sha256=LlTtwJJHqU48l7SQT4bcZCWlw3Y46g42Bn1ACGW8gIk,53307
28
28
  gam/gamlib/glentity.py,sha256=KWFomkoNE6lLE83zVqVIlJ2rkzfLkhEasW1M0TWGieA,35373
@@ -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.27.4.dist-info/METADATA,sha256=xxXl0dxVoU3Qr_D_k38_AeeyLfP0smoiVPSFbIcSpzs,3093
51
- gam7-7.27.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
- gam7-7.27.4.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
- gam7-7.27.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
- gam7-7.27.4.dist-info/RECORD,,
50
+ gam7-7.27.5.dist-info/METADATA,sha256=iZoJeKU1yqmMJyPCY7_mGJ1B_5C-usNASAEvyqRS4d0,3093
51
+ gam7-7.27.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
+ gam7-7.27.5.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
+ gam7-7.27.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
+ gam7-7.27.5.dist-info/RECORD,,
File without changes