gam7 7.6.13__py3-none-any.whl → 7.7.0__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.06.13'
28
+ __version__ = '7.07.00'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -5655,8 +5655,8 @@ def getGDataUserCredentials(api, user, i, count):
5655
5655
  handleOAuthTokenError(e, True, True, i, count)
5656
5656
  return (userEmail, None)
5657
5657
 
5658
- def getContactsObject(contactFeed):
5659
- contactsObject = initGDataObject(gdata.apps.contacts.service.ContactsService(contactFeed=contactFeed),
5658
+ def getContactsObject():
5659
+ contactsObject = initGDataObject(gdata.apps.contacts.service.ContactsService(contactFeed=True),
5660
5660
  API.CONTACTS)
5661
5661
  return (GC.Values[GC.DOMAIN], contactsObject)
5662
5662
 
@@ -16497,8 +16497,10 @@ def getRoleId():
16497
16497
  invalidChoiceExit(role, GM.Globals[GM.MAP_ROLE_NAME_TO_ID], True)
16498
16498
  return (role, roleId)
16499
16499
 
16500
- # gam create adminrole <String> privileges all|all_ou|<PrivilegesList> [description <String>]
16501
- # gam update adminrole <RoleItem> [name <String>] [privileges all|all_ou|<PrivilegesList>] [description <String>]
16500
+ # gam create adminrole <String> [description <String>]
16501
+ # privileges all|all_ou|<PrivilegesList>|(select <FileSelector>|<CSVFileSelector>)
16502
+ # gam update adminrole <RoleItem> [name <String>] [description <String>]
16503
+ # [privileges all|all_ou|<PrivilegesList>|(select <FileSelector>|<CSVFileSelector>)]
16502
16504
  def doCreateUpdateAdminRoles():
16503
16505
  def expandChildPrivileges(privilege):
16504
16506
  for childPrivilege in privilege.get('childPrivileges', []):
@@ -16529,8 +16531,12 @@ def doCreateUpdateAdminRoles():
16529
16531
  elif privs == 'ALL_OU':
16530
16532
  body['rolePrivileges'] = [{'privilegeName': p, 'serviceId': v} for p, v in ouPrivileges.items()]
16531
16533
  else:
16534
+ if privs == 'SELECT':
16535
+ privsList = [p.upper() for p in getEntityList(Cmd.OB_PRIVILEGE_LIST)]
16536
+ else:
16537
+ privsList = privs.replace(',', ' ').split()
16532
16538
  body.setdefault('rolePrivileges', [])
16533
- for p in privs.split(','):
16539
+ for p in privsList:
16534
16540
  if p in allPrivileges:
16535
16541
  body['rolePrivileges'].append({'privilegeName': p, 'serviceId': allPrivileges[p]})
16536
16542
  elif p in ouPrivileges:
@@ -16540,6 +16546,8 @@ def doCreateUpdateAdminRoles():
16540
16546
  elif ':' in p:
16541
16547
  priv, serv = p.split(':')
16542
16548
  body['rolePrivileges'].append({'privilegeName': priv, 'serviceId': serv.lower()})
16549
+ elif p == 'SUPPORT':
16550
+ pass
16543
16551
  else:
16544
16552
  invalidChoiceExit(p, list(allPrivileges.keys())+list(ouPrivileges.keys())+list(childPrivileges.keys()), True)
16545
16553
  elif myarg == 'description':
@@ -16557,12 +16565,12 @@ def doCreateUpdateAdminRoles():
16557
16565
  customer=GC.Values[GC.CUSTOMER_ID], body=body, fields='roleId,roleName')
16558
16566
  else:
16559
16567
  result = callGAPI(cd.roles(), 'patch',
16560
- throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION],
16568
+ throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION, GAPI.CONFLICT],
16561
16569
  customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, body=body, fields='roleId,roleName')
16562
16570
  entityActionPerformed([Ent.ADMIN_ROLE, f"{result['roleName']}({result['roleId']})"])
16563
16571
  except GAPI.duplicate as e:
16564
16572
  entityActionFailedWarning([Ent.ADMIN_ROLE, f"{body['roleName']}"], str(e))
16565
- except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e:
16573
+ except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition, GAPI.conflict) as e:
16566
16574
  entityActionFailedWarning([Ent.ADMIN_ROLE, roleId], str(e))
16567
16575
  except (GAPI.badRequest, GAPI.customerNotFound):
16568
16576
  accessErrorExit(cd)
@@ -16605,61 +16613,53 @@ def _showAdminRole(role, i=0, count=0):
16605
16613
  Ind.Decrement()
16606
16614
 
16607
16615
  # gam info adminrole <RoleItem> [privileges]
16608
- def doInfoAdminRole():
16609
- cd = buildGAPIObject(API.DIRECTORY)
16610
- fieldsList = PRINT_ADMIN_ROLES_FIELDS[:]
16611
- _, roleId = getRoleId()
16612
- while Cmd.ArgumentsRemaining():
16613
- myarg = getArgument()
16614
- if myarg == 'privileges':
16615
- fieldsList.append('rolePrivileges')
16616
- else:
16617
- unknownArgumentExit()
16618
- fields = getFieldsFromFieldsList(fieldsList)
16619
- try:
16620
- role = callGAPI(cd.roles(), 'get',
16621
- throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.FAILED_PRECONDITION,
16622
- GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND],
16623
- customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, fields=fields)
16624
- role.setdefault('isSuperAdminRole', False)
16625
- role.setdefault('isSystemRole', False)
16626
- _showAdminRole(role)
16627
- except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e:
16628
- entityActionFailedWarning([Ent.ADMIN_ROLE, roleId], str(e))
16629
- except (GAPI.badRequest, GAPI.customerNotFound):
16630
- accessErrorExit(cd)
16631
-
16632
16616
  # gam print adminroles|roles [todrive <ToDriveAttribute>*]
16633
- # [privileges] [oneitemperrow]
16634
- # gam show adminroles|roles [privileges]
16635
- def doPrintShowAdminRoles():
16617
+ # [role <RoleItem>] [privileges] [oneitemperrow]
16618
+ # gam show adminroles|roles
16619
+ # [role <RoleItem>] [privileges]
16620
+ def doInfoPrintShowAdminRoles():
16636
16621
  cd = buildGAPIObject(API.DIRECTORY)
16637
16622
  fieldsList = PRINT_ADMIN_ROLES_FIELDS[:]
16638
16623
  csvPF = CSVPrintFile(fieldsList, PRINT_ADMIN_ROLES_FIELDS) if Act.csvFormat() else None
16639
16624
  oneItemPerRow = False
16625
+ if Act.Get() != Act.INFO:
16626
+ roleId = None
16627
+ else:
16628
+ _, roleId = getRoleId()
16640
16629
  while Cmd.ArgumentsRemaining():
16641
16630
  myarg = getArgument()
16642
16631
  if csvPF and myarg == 'todrive':
16643
16632
  csvPF.GetTodriveParameters()
16633
+ elif roleId is None and myarg == 'role':
16634
+ _, roleId = getRoleId()
16644
16635
  elif myarg == 'privileges':
16645
16636
  fieldsList.append('rolePrivileges')
16646
16637
  elif myarg == 'oneitemperrow':
16647
16638
  oneItemPerRow = True
16648
16639
  else:
16649
16640
  unknownArgumentExit()
16650
- if csvPF:
16641
+ if csvPF and 'rolePrivileges' in fieldsList:
16651
16642
  if not oneItemPerRow:
16652
16643
  csvPF.AddTitles(['rolePrivileges'])
16653
16644
  else:
16654
16645
  csvPF.AddTitles(['privilegeName', 'serviceId'])
16655
- fields = getItemFieldsFromFieldsList('items', fieldsList)
16656
- printGettingAllAccountEntities(Ent.ADMIN_ROLE)
16657
16646
  try:
16658
- roles = callGAPIpages(cd.roles(), 'list', 'items',
16659
- pageMessage=getPageMessage(),
16660
- throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN],
16661
- customer=GC.Values[GC.CUSTOMER_ID], fields=fields)
16662
- except (GAPI.badRequest, GAPI.customerNotFound, GAPI.forbidden):
16647
+ if roleId is None:
16648
+ fields = getItemFieldsFromFieldsList('items', fieldsList)
16649
+ printGettingAllAccountEntities(Ent.ADMIN_ROLE)
16650
+ roles = callGAPIpages(cd.roles(), 'list', 'items',
16651
+ pageMessage=getPageMessage(),
16652
+ throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND, GAPI.FORBIDDEN],
16653
+ customer=GC.Values[GC.CUSTOMER_ID], fields=fields)
16654
+ else:
16655
+ fields = getFieldsFromFieldsList(fieldsList)
16656
+ roles = [callGAPI(cd.roles(), 'get',
16657
+ throwReasons=[GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.FAILED_PRECONDITION,
16658
+ GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND],
16659
+ customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, fields=fields)]
16660
+ except (GAPI.notFound, GAPI.forbidden, GAPI.failedPrecondition) as e:
16661
+ entityActionFailedWarning([Ent.ADMIN_ROLE, roleId], str(e))
16662
+ except (GAPI.badRequest, GAPI.customerNotFound):
16663
16663
  accessErrorExit(cd)
16664
16664
  for role in roles:
16665
16665
  role.setdefault('isSuperAdminRole', False)
@@ -19996,7 +19996,9 @@ def dedupEmailAddressMatches(contactsManager, emailMatchType, fields):
19996
19996
  fields[CONTACT_EMAILS] = savedAddresses
19997
19997
  return updateRequired
19998
19998
 
19999
- def _createContact():
19999
+ # gam create contact <ContactAttribute>+
20000
+ # [(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*))| returnidonly]
20001
+ def doCreateDomainContact():
20000
20002
  entityType = Ent.DOMAIN
20001
20003
  contactsManager = ContactsManager()
20002
20004
  parameters = {'csvPF': None, 'titles': ['Domain', CONTACT_ID], 'addCSVData': {}, 'returnIdOnly': False}
@@ -20007,7 +20009,7 @@ def _createContact():
20007
20009
  csvPF.AddTitles(sorted(addCSVData.keys()))
20008
20010
  returnIdOnly = parameters['returnIdOnly']
20009
20011
  contactEntry = contactsManager.FieldsToContact(fields)
20010
- user, contactsObject = getContactsObject(True)
20012
+ user, contactsObject = getContactsObject()
20011
20013
  try:
20012
20014
  contact = callGData(contactsObject, 'CreateContact',
20013
20015
  throwErrors=[GDATA.BAD_REQUEST, GDATA.SERVICE_NOT_APPLICABLE, GDATA.FORBIDDEN],
@@ -20032,11 +20034,6 @@ def _createContact():
20032
20034
  if csvPF:
20033
20035
  csvPF.writeCSVfile('Contacts')
20034
20036
 
20035
- # gam create contact <ContactAttribute>+
20036
- # [(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*))| returnidonly]
20037
- def doCreateDomainContact():
20038
- _createContact()
20039
-
20040
20037
  def _clearUpdateContacts(updateContacts):
20041
20038
  entityType = Ent.DOMAIN
20042
20039
  contactsManager = ContactsManager()
@@ -20058,7 +20055,7 @@ def _clearUpdateContacts(updateContacts):
20058
20055
  unknownArgumentExit()
20059
20056
  if not contactClear['emailClearPattern']:
20060
20057
  missingArgumentExit('emailclearpattern')
20061
- user, contactsObject = getContactsObject(True)
20058
+ user, contactsObject = getContactsObject()
20062
20059
  if queriedContacts:
20063
20060
  entityList = queryContacts(contactsObject, contactQuery)
20064
20061
  if entityList is None:
@@ -20129,7 +20126,8 @@ def doClearDomainContacts():
20129
20126
  def doUpdateDomainContacts():
20130
20127
  _clearUpdateContacts(True)
20131
20128
 
20132
- def _dedupContacts():
20129
+ # gam dedup contacts <ContactEntity>|<ContactSelection> [matchType [<Boolean>]]
20130
+ def doDedupDomainContacts():
20133
20131
  entityType = Ent.DOMAIN
20134
20132
  contactsManager = ContactsManager()
20135
20133
  contactQuery = _initContactQueryAttributes()
@@ -20140,7 +20138,7 @@ def _dedupContacts():
20140
20138
  emailMatchType = getBoolean()
20141
20139
  else:
20142
20140
  _getContactQueryAttributes(contactQuery, myarg, -1, False)
20143
- user, contactsObject = getContactsObject(True)
20141
+ user, contactsObject = getContactsObject()
20144
20142
  contacts = queryContacts(contactsObject, contactQuery)
20145
20143
  if contacts is None:
20146
20144
  return
@@ -20180,15 +20178,12 @@ def _dedupContacts():
20180
20178
  break
20181
20179
  Ind.Decrement()
20182
20180
 
20183
- # gam dedup contacts <ContactEntity>|<ContactSelection> [matchType [<Boolean>]]
20184
- def doDedupDomainContacts():
20185
- _dedupContacts()
20186
-
20187
- def _deleteContacts():
20181
+ # gam delete contacts <ContactEntity>|<ContactSelection>
20182
+ def doDeleteDomainContacts():
20188
20183
  entityType = Ent.DOMAIN
20189
20184
  contactsManager = ContactsManager()
20190
20185
  entityList, contactQuery, queriedContacts = _getContactEntityList(-1, False)
20191
- user, contactsObject = getContactsObject(True)
20186
+ user, contactsObject = getContactsObject()
20192
20187
  if queriedContacts:
20193
20188
  entityList = queryContacts(contactsObject, contactQuery)
20194
20189
  if entityList is None:
@@ -20228,10 +20223,6 @@ def _deleteContacts():
20228
20223
  break
20229
20224
  Ind.Decrement()
20230
20225
 
20231
- # gam delete contacts <ContactEntity>|<ContactSelection>
20232
- def doDeleteDomainContacts():
20233
- _deleteContacts()
20234
-
20235
20226
  CONTACT_TIME_OBJECTS = {CONTACT_UPDATED}
20236
20227
  CONTACT_FIELDS_WITH_CRS_NLS = {CONTACT_NOTES, CONTACT_BILLING_INFORMATION}
20237
20228
 
@@ -20299,7 +20290,10 @@ def _getContactFieldsList(contactsManager, displayFieldsList):
20299
20290
  else:
20300
20291
  invalidChoiceExit(field, contactsManager.CONTACT_ARGUMENT_TO_PROPERTY_MAP, True)
20301
20292
 
20302
- def _infoContacts(contactFeed):
20293
+ # gam info contacts <ContactEntity>
20294
+ # [basic|full]
20295
+ # [fields <ContactFieldNameList>] [formatjson]
20296
+ def doInfoDomainContacts():
20303
20297
  entityType = Ent.DOMAIN
20304
20298
  contactsManager = ContactsManager()
20305
20299
  entityList = getEntityList(Cmd.OB_CONTACT_ENTITY)
@@ -20314,7 +20308,7 @@ def _infoContacts(contactFeed):
20314
20308
  _getContactFieldsList(contactsManager, displayFieldsList)
20315
20309
  else:
20316
20310
  FJQC.GetFormatJSON(myarg)
20317
- user, contactsObject = getContactsObject(contactFeed)
20311
+ user, contactsObject = getContactsObject()
20318
20312
  j = 0
20319
20313
  jcount = len(entityList)
20320
20314
  if not FJQC.formatJSON:
@@ -20342,19 +20336,13 @@ def _infoContacts(contactFeed):
20342
20336
  break
20343
20337
  Ind.Decrement()
20344
20338
 
20345
- # gam info contacts <ContactEntity>
20346
- # [basic|full]
20347
- # [fields <ContactFieldNameList>] [formatjson]
20348
- def doInfoDomainContacts():
20349
- _infoContacts(True)
20350
-
20351
- # gam info gal <ContactEntity>
20352
- # [basic|full]
20339
+ # gam print contacts [todrive <ToDriveAttribute>*] <ContactSelection>
20340
+ # [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
20341
+ # [fields <ContactFieldNameList>] [formatjson [quotechar <Character>]]
20342
+ # gam show contacts <ContactSelection>
20343
+ # [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
20353
20344
  # [fields <ContactFieldNameList>] [formatjson]
20354
- def doInfoGAL():
20355
- _infoContacts(False)
20356
-
20357
- def _printShowContacts(contactFeed):
20345
+ def doPrintShowDomainContacts():
20358
20346
  entityType = Ent.DOMAIN
20359
20347
  entityTypeName = Ent.Singular(entityType)
20360
20348
  contactsManager = ContactsManager()
@@ -20380,7 +20368,7 @@ def _printShowContacts(contactFeed):
20380
20368
  pass
20381
20369
  else:
20382
20370
  FJQC.GetFormatJSONQuoteChar(myarg, True)
20383
- user, contactsObject = getContactsObject(contactFeed)
20371
+ user, contactsObject = getContactsObject()
20384
20372
  contacts = queryContacts(contactsObject, contactQuery)
20385
20373
  if countsOnly:
20386
20374
  jcount = countLocalContactSelects(contactsManager, contacts, contactQuery)
@@ -20466,24 +20454,6 @@ def _printShowContacts(contactFeed):
20466
20454
  if csvPF:
20467
20455
  csvPF.writeCSVfile(CSVTitle)
20468
20456
 
20469
- # gam print contacts [todrive <ToDriveAttribute>*] <ContactSelection>
20470
- # [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
20471
- # [fields <ContactFieldNameList>] [formatjson [quotechar <Character>]]
20472
- # gam show contacts <ContactSelection>
20473
- # [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
20474
- # [fields <ContactFieldNameList>] [formatjson]
20475
- def doPrintShowDomainContacts():
20476
- _printShowContacts(True)
20477
-
20478
- # gam print gal [todrive <ToDriveAttribute>*] <ContactSelection>
20479
- # [basic|full] [orderby <ContactOrderByFieldName> [ascending|descending]]
20480
- # [fields <ContactFieldNameList>] [formatjson [quotechar <Character>]]
20481
- # gam show gal <ContactSelection>
20482
- # [basic|full|countsonly] [orderby <ContactOrderByFieldName> [ascending|descending]]
20483
- # [fields <ContactFieldNameList>] [formatjson]
20484
- def doPrintShowGAL():
20485
- _printShowContacts(False)
20486
-
20487
20457
  # Prople commands utilities
20488
20458
  #
20489
20459
  def normalizePeopleResourceName(resourceName):
@@ -75613,7 +75583,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75613
75583
  ),
75614
75584
  'info':
75615
75585
  (Act.INFO,
75616
- {Cmd.ARG_ADMINROLE: doInfoAdminRole,
75586
+ {Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
75617
75587
  Cmd.ARG_ALERT: doInfoAlert,
75618
75588
  Cmd.ARG_ALIAS: doInfoAliases,
75619
75589
  Cmd.ARG_BUILDING: doInfoBuilding,
@@ -75645,7 +75615,6 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75645
75615
  Cmd.ARG_DRIVEFILEACL: doInfoDriveFileACLs,
75646
75616
  Cmd.ARG_DRIVELABEL: doInfoDriveLabels,
75647
75617
  Cmd.ARG_INSTANCE: doInfoInstance,
75648
- Cmd.ARG_GAL: doInfoGAL,
75649
75618
  Cmd.ARG_GROUP: doInfoGroups,
75650
75619
  Cmd.ARG_GROUPMEMBERS: doInfoGroupMembers,
75651
75620
  Cmd.ARG_INBOUNDSSOASSIGNMENT: doInfoInboundSSOAssignment,
@@ -75688,7 +75657,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75688
75657
  'print':
75689
75658
  (Act.PRINT,
75690
75659
  {Cmd.ARG_ADDRESSES: doPrintAddresses,
75691
- Cmd.ARG_ADMINROLE: doPrintShowAdminRoles,
75660
+ Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
75692
75661
  Cmd.ARG_ADMIN: doPrintShowAdmins,
75693
75662
  Cmd.ARG_ALERT: doPrintShowAlerts,
75694
75663
  Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
@@ -75740,7 +75709,6 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75740
75709
  Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
75741
75710
  Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
75742
75711
  Cmd.ARG_FEATURE: doPrintShowFeatures,
75743
- Cmd.ARG_GAL: doPrintShowGAL,
75744
75712
  Cmd.ARG_GROUP: doPrintGroups,
75745
75713
  Cmd.ARG_GROUPMEMBERS: doPrintGroupMembers,
75746
75714
  Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
@@ -75821,7 +75789,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75821
75789
  ),
75822
75790
  'show':
75823
75791
  (Act.SHOW,
75824
- {Cmd.ARG_ADMINROLE: doPrintShowAdminRoles,
75792
+ {Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
75825
75793
  Cmd.ARG_ADMIN: doPrintShowAdmins,
75826
75794
  Cmd.ARG_ALERT: doPrintShowAlerts,
75827
75795
  Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
@@ -75858,7 +75826,6 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75858
75826
  Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
75859
75827
  Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
75860
75828
  Cmd.ARG_FEATURE: doPrintShowFeatures,
75861
- Cmd.ARG_GAL: doPrintShowGAL,
75862
75829
  Cmd.ARG_GROUPMEMBERS: doShowGroupMembers,
75863
75830
  Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
75864
75831
  Cmd.ARG_GUARDIAN: doPrintShowGuardians,
gam/gamlib/glclargs.py CHANGED
@@ -616,7 +616,6 @@ class GamCLArgs():
616
616
  ARG_FORWARDS = 'forwards'
617
617
  ARG_FORWARDINGADDRESS = 'forwardingaddress'
618
618
  ARG_FORWARDINGADDRESSES = 'forwardingaddresses'
619
- ARG_GAL = 'gal'
620
619
  ARG_GCPFOLDER = 'gcpfolder'
621
620
  ARG_GCPSERVICEACCOUNT = 'gcpserviceaccount'
622
621
  ARG_GMAIL = 'gmail'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.6.13
3
+ Version: 7.7.0
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=9BYxt6VD3fM_xeLSK35L8qC6rnWqzXnm0usjkcM2k9k,3495630
1
+ gam/__init__.py,sha256=WZoLfil7JdhIYFdy5VijYGf0x_mUzURBAWAwqLkLgkc,3494807
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=nJuWha0xm5dHw_5ptGphwRoO-r36Ccpqiww9pCEDbSc,67484
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -25,7 +25,7 @@ gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
25
25
  gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
26
26
  gam/gamlib/glapi.py,sha256=85YwZ5LhBoVd9kU3m-gwLRq8FwTWCaRIwARuQvH8Mjc,34022
27
27
  gam/gamlib/glcfg.py,sha256=cV011FpIWge4oi5_dJrdof66vUqX6UCvTGWWTNVmYEg,28055
28
- gam/gamlib/glclargs.py,sha256=6irl5ZEu-pd4cGimc0PHZtJS8Ui6QHHgNzFO93beEcc,42206
28
+ gam/gamlib/glclargs.py,sha256=y10uzxjUeDX4YqbFnJJhWLL2D6pqW6Aqx17GA1-5X4c,42188
29
29
  gam/gamlib/glentity.py,sha256=fqWUlxQqPKlfFrkuPjCK2lZhhFBIZboCuO0qCxuEwqA,33691
30
30
  gam/gamlib/glgapi.py,sha256=xk3pEaIE-zHrTNCn5rJYERqqpbN55E1wXlKoqvWP44E,39232
31
31
  gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
@@ -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.6.13.dist-info/METADATA,sha256=WAAMsjZ6LoZr8nK8dI97DicsY9ETVdK1y1eAMow1YHg,2970
69
- gam7-7.6.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.6.13.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.6.13.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.6.13.dist-info/RECORD,,
68
+ gam7-7.7.0.dist-info/METADATA,sha256=jeufu2vV_fW7CSQMkK0iLMjSk3gk1xvYzwZd6IM2Im8,2969
69
+ gam7-7.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.7.0.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.7.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.7.0.dist-info/RECORD,,
File without changes