gam7 7.18.2__py3-none-any.whl → 7.18.4__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.18.02'
28
+ __version__ = '7.18.04'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -10672,9 +10672,6 @@ Select all default scopes by entering an 's'; yields [*] for default scopes, [ ]
10672
10672
  Unselect all scopes by entering a 'u'; yields [ ] for all scopes
10673
10673
  Exit without changes/authorization by entering an 'e'
10674
10674
  Continue to authorization by entering a 'c'
10675
- '''
10676
- if clientAccess:
10677
- oauth2_menu += ''' Note, if all scopes are selected, Google will probably generate an authorization error
10678
10675
  '''
10679
10676
  menu = oauth2_menu % tuple(range(numScopes))
10680
10677
  selectedScopes = ['*'] * numScopes
@@ -10776,7 +10773,25 @@ Continue to authorization by entering a 'c'
10776
10773
  break
10777
10774
  sys.stdout.write(f'{ERROR_PREFIX}Invalid input "{choice}"\n')
10778
10775
  if selection == 'c':
10779
- break
10776
+ if clientAccess:
10777
+ numSelectedScopes = 0
10778
+ i = 0
10779
+ for a_scope in scopesList:
10780
+ if selectedScopes[i] == '*':
10781
+ if a_scope['scope']:
10782
+ numSelectedScopes += 1
10783
+ elif selectedScopes[i] != ' ':
10784
+ numSelectedScopes += 1
10785
+ i += 1
10786
+ if numSelectedScopes <= API.NUM_CLIENT_SCOPES_ERROR_LIMIT:
10787
+ break
10788
+ # If number of scopes is > 48 we'll probably get an error
10789
+ writeStdout(Msg.NUM_SELECTED_CLIENT_SCOPES.format(numSelectedScopes, API.NUM_CLIENT_SCOPES_ERROR_LIMIT))
10790
+ choice = readStdin('\nPlease enter c to continue to authorization or any other key to amend selection: ')
10791
+ if choice and choice.lower() == 'c':
10792
+ break
10793
+ else:
10794
+ break
10780
10795
  return selectedScopes
10781
10796
 
10782
10797
  def _localhost_to_ip():
@@ -27066,6 +27081,8 @@ def _getChatMemberEmail(cd, member):
27066
27081
  if member['member']['type'] == 'HUMAN':
27067
27082
  _, memberUid = member['member']['name'].split('/')
27068
27083
  member['member']['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['user'])
27084
+ if member['member']['email'].find('@') == -1:
27085
+ member['member']['email'] = 'id:'+member['member']['email']
27069
27086
  elif 'groupMember' in member:
27070
27087
  _, memberUid = member['groupMember']['name'].split('/')
27071
27088
  member['groupMember']['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['group'])
@@ -37783,6 +37800,54 @@ def doDeleteOrUndeleteAlert():
37783
37800
  except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.permissionDenied):
37784
37801
  userAlertsServiceNotEnabledWarning(user)
37785
37802
 
37803
+ def _showAlertSettings(settings):
37804
+ notifications = settings.get('notifications', [])
37805
+ count = len(notifications)
37806
+ entityPerformAction([Ent.ALERT_SETTINGS, None])
37807
+ i = 0
37808
+ for notification in notifications:
37809
+ i += 1
37810
+ printEntity([Ent.NOTIFICATION, None], i, count)
37811
+ Ind.Increment()
37812
+ showJSON(None, notification)
37813
+ Ind.Decrement()
37814
+
37815
+ # gam show alertsettings
37816
+ def doShowAlertSettings():
37817
+ checkForExtraneousArguments()
37818
+ user, ac = buildGAPIServiceObject(API.ALERTCENTER, _getAdminEmail())
37819
+ if not ac:
37820
+ return
37821
+ try:
37822
+ settings = callGAPI(ac.v1beta1(), 'getSettings',
37823
+ throwReasons=GAPI.ALERT_THROW_REASONS)
37824
+ _showAlertSettings(settings)
37825
+ except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.permissionDenied):
37826
+ userAlertsServiceNotEnabledWarning(user)
37827
+
37828
+ # gam update alertsettings <PubsubTopicName>
37829
+ def doUpdateAlertSettings(clear=False):
37830
+ if not clear:
37831
+ body = {'notifications':
37832
+ [{'cloudPubsubTopic': {'topicName': getString(Cmd.OB_PUBSUB_TOPIC_NAME)}}]}
37833
+ else:
37834
+ body = {'notifications': []}
37835
+ checkForExtraneousArguments()
37836
+ user, ac = buildGAPIServiceObject(API.ALERTCENTER, _getAdminEmail())
37837
+ if not ac:
37838
+ return
37839
+ try:
37840
+ settings = callGAPI(ac.v1beta1(), 'updateSettings',
37841
+ throwReasons=GAPI.ALERT_THROW_REASONS,
37842
+ body=body)
37843
+ _showAlertSettings(settings)
37844
+ except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.permissionDenied):
37845
+ userAlertsServiceNotEnabledWarning(user)
37846
+
37847
+ # gam clear alertsettings
37848
+ def doClearAlertSettings():
37849
+ doUpdateAlertSettings(clear=True)
37850
+
37786
37851
  ALERT_TIME_OBJECTS = {'createTime', 'startTime', 'endTime'}
37787
37852
 
37788
37853
  def _showAlert(alert, FJQC, i=0, count=0):
@@ -77170,7 +77235,8 @@ MAIN_COMMANDS_WITH_OBJECTS = {
77170
77235
  ),
77171
77236
  'clear':
77172
77237
  (Act.CLEAR,
77173
- {Cmd.ARG_CONTACT: doClearDomainContacts,
77238
+ {Cmd.ARG_ALERTSETTINGS: doClearAlertSettings,
77239
+ Cmd.ARG_CONTACT: doClearDomainContacts,
77174
77240
  }
77175
77241
  ),
77176
77242
  'close':
@@ -77491,6 +77557,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
77491
77557
  Cmd.ARG_ADMIN: doPrintShowAdmins,
77492
77558
  Cmd.ARG_ALERT: doPrintShowAlerts,
77493
77559
  Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
77560
+ Cmd.ARG_ALERTSETTINGS: doShowAlertSettings,
77494
77561
  Cmd.ARG_BROWSER: doPrintShowBrowsers,
77495
77562
  Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
77496
77563
  Cmd.ARG_BUILDING: doPrintShowBuildings,
@@ -77583,6 +77650,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
77583
77650
  'update':
77584
77651
  (Act.UPDATE,
77585
77652
  {Cmd.ARG_ADMINROLE: doCreateUpdateAdminRoles,
77653
+ Cmd.ARG_ALERTSETTINGS: doUpdateAlertSettings,
77586
77654
  Cmd.ARG_ALIAS: doCreateUpdateAliases,
77587
77655
  Cmd.ARG_BROWSER: doUpdateBrowsers,
77588
77656
  Cmd.ARG_BUILDING: doUpdateBuilding,
gam/gamlib/glapi.py CHANGED
@@ -119,6 +119,7 @@ USERINFO_PROFILE_SCOPE = 'https://www.googleapis.com/auth/userinfo.profile' # pr
119
119
  VAULT_SCOPES = ['https://www.googleapis.com/auth/ediscovery', 'https://www.googleapis.com/auth/ediscovery.readonly']
120
120
  REQUIRED_SCOPES = [USERINFO_EMAIL_SCOPE, USERINFO_PROFILE_SCOPE]
121
121
  REQUIRED_SCOPES_SET = set(REQUIRED_SCOPES)
122
+ NUM_CLIENT_SCOPES_ERROR_LIMIT = 48
122
123
  #
123
124
  JWT_APIS = {
124
125
  ACCESSCONTEXTMANAGER: [CLOUD_PLATFORM_SCOPE],
gam/gamlib/glclargs.py CHANGED
@@ -411,6 +411,7 @@ class GamCLArgs():
411
411
  ARG_ALERTFEEDBACK = 'alertfeedback'
412
412
  ARG_ALERTFEEDBACKS = 'alertfeedbacks'
413
413
  ARG_ALERTSFEEDBACK = 'alertsfeedback'
414
+ ARG_ALERTSETTINGS = 'alertsettings'
414
415
  ARG_ALIAS = 'alias'
415
416
  ARG_ALIASES = 'aliases'
416
417
  ARG_ALIASDOMAIN = 'aliasdomain'
@@ -1013,6 +1014,7 @@ class GamCLArgs():
1013
1014
  OB_PROJECT_ID_ENTITY = 'ProjectIDEntity'
1014
1015
  OB_PROPERTY_KEY = 'PropertyKey'
1015
1016
  OB_PROPERTY_VALUE = 'PropertyValue'
1017
+ OB_PUBSUB_TOPIC_NAME = 'PubSubTopicName'
1016
1018
  OB_QUERY = 'Query'
1017
1019
  OB_QUERY_ITEM = 'QueryItem'
1018
1020
  OB_QUERY_LIST = 'QueryList'
gam/gamlib/glentity.py CHANGED
@@ -54,6 +54,7 @@ class GamEntity():
54
54
  ALERT_ID = 'alri'
55
55
  ALERT_FEEDBACK = 'alfb'
56
56
  ALERT_FEEDBACK_ID = 'alfi'
57
+ ALERT_SETTINGS = 'alrs'
57
58
  ALIAS = 'alia'
58
59
  ALIAS_EMAIL = 'alie'
59
60
  ALIAS_TARGET = 'alit'
@@ -285,10 +286,11 @@ class GamEntity():
285
286
  MIMETYPE = 'mime'
286
287
  MOBILE_DEVICE = 'mobi'
287
288
  NAME = 'name'
289
+ NONEDITABLE_ALIAS = 'neal'
288
290
  NOTE = 'note'
289
291
  NOTE_ACL = 'nota'
290
292
  NOTES_ACLS = 'naac'
291
- NONEDITABLE_ALIAS = 'neal'
293
+ NOTIFICATION = 'noti'
292
294
  OAUTH2_TXT_FILE = 'oaut'
293
295
  OAUTH2SERVICE_JSON_FILE = 'oau2'
294
296
  ORGANIZATIONAL_UNIT = 'orgu'
@@ -414,6 +416,7 @@ class GamEntity():
414
416
  ALERT_ID: ['Alert IDs', 'Alert ID'],
415
417
  ALERT_FEEDBACK: ['Alert Feedbacks', 'Alert Feedback'],
416
418
  ALERT_FEEDBACK_ID: ['Alert Feedback IDs', 'Alert Feedback ID'],
419
+ ALERT_SETTINGS: ['Alert Settings', 'Alert Settings'],
417
420
  ALIAS: ['Aliases', 'Alias'],
418
421
  ALIAS_EMAIL: ['Alias Emails', 'Alias Email'],
419
422
  ALIAS_TARGET: ['Alias Targets', 'Alias Target'],
@@ -645,10 +648,11 @@ class GamEntity():
645
648
  MIMETYPE: ['MIME Types', 'MIME Type'],
646
649
  MOBILE_DEVICE: ['Mobile Devices', 'Mobile Device'],
647
650
  NAME: ['Names', 'Name'],
651
+ NONEDITABLE_ALIAS: ['Non-Editable Aliases', 'Non-Editable Alias'],
648
652
  NOTE: ['Notes', 'Note'],
649
653
  NOTE_ACL: ['Note ACLs', 'Note ACL'],
650
654
  NOTES_ACLS: ["'Note's ACLs", "Note's ACLs"],
651
- NONEDITABLE_ALIAS: ['Non-Editable Aliases', 'Non-Editable Alias'],
655
+ NOTIFICATION: ['Notifications', 'Notification'],
652
656
  OAUTH2_TXT_FILE: ['Client OAuth2 File', 'Client OAuth2 File'],
653
657
  OAUTH2SERVICE_JSON_FILE: ['Service Account OAuth2 File', 'Service Account OAuth2 File'],
654
658
  ORGANIZATIONAL_UNIT: ['Organizational Units', 'Organizational Unit'],
gam/gamlib/glmsgs.py CHANGED
@@ -433,6 +433,7 @@ NO_SVCACCT_ACCESS_ALLOWED = 'No Service Account Access allowed'
433
433
  NO_TRANSFER_LACK_OF_DISK_SPACE = 'Transfer not performed due to lack of target drive space.'
434
434
  NO_USAGE_PARAMETERS_DATA_AVAILABLE = 'No usage parameters data available.'
435
435
  NO_USER_COUNTS_DATA_AVAILABLE = 'No User counts data available.'
436
+ NUM_SELECTED_CLIENT_SCOPES = '\n{0} scopes are selected, if more than {1} scopes are selected, Google will probably generate a "Something went wrong" error\n'
436
437
  OAUTH2_GO_TO_LINK_MESSAGE = """
437
438
  Go to the following link in a browser on this computer or on another computer:
438
439
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.18.2
3
+ Version: 7.18.4
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=vXfPbTHnKpCNR1zxTp2KHE0dTYJkYmaXxO-btdej4X0,3574736
1
+ gam/__init__.py,sha256=lSFipSI6fSlg0J9H08IWN05Mo_kIh61EeR86LIEGQ-c,3577219
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=82Ak7btW_2XvocLUvAwPmpx8Chi0oqtZUG1gseLK_t4,50235
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -23,15 +23,15 @@ gam/atom/token_store.py,sha256=7E6Ecvxa86WCvl1pJAhv78jg9OxQv8pMtIUcPhZCq04,3803
23
23
  gam/atom/url.py,sha256=pxO1TlORxyKQTQ1bkBE1unFzjnv9c8LjJkm-UEORShY,4276
24
24
  gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
25
25
  gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
26
- gam/gamlib/glapi.py,sha256=kjiB-6k4B7l1XIHdWZzW5woBtrViwfvE6cjwQVjijVw,35725
26
+ gam/gamlib/glapi.py,sha256=YPa_XvdoltFLSSrZOZ9thAwrAB_PU9BzJAIO6cUOSWI,35760
27
27
  gam/gamlib/glcfg.py,sha256=J4w16Nfk282S7iuSmk3601GHgt_MJ4qWeSzF5y7ZzX0,28139
28
- gam/gamlib/glclargs.py,sha256=u4OFdkNogXVBV7K7oH4pXTc8TmAEJPvnqy3r0NblD60,43800
29
- gam/gamlib/glentity.py,sha256=WsSwlzwgp3uwYLDu8t5seFNKoZ9Bj0bTGRjTXcC56Ro,34694
28
+ gam/gamlib/glclargs.py,sha256=pgomQOKbiKOI5TfdC0hTT5BqGbQcikDMRfkUk6DEXrM,43881
29
+ gam/gamlib/glentity.py,sha256=ZQTdjVtGe8soMlgcSHJIpLHjQ_UtUL9qfw8ux-C4kik,34855
30
30
  gam/gamlib/glgapi.py,sha256=pdBbwNtnCwFWxJGaP-_3hdTjSNoOCJF2yo76WdQOi1k,40426
31
31
  gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
32
32
  gam/gamlib/glglobals.py,sha256=J0xcHggVrUBzHJ5GruenKV-qV1zPKcK2qWgAgN3i5Jw,9608
33
33
  gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
34
- gam/gamlib/glmsgs.py,sha256=c6ff4fetFjcMtOA37-jdkNNdQVgmFgbkzoUPt99vcpI,33804
34
+ gam/gamlib/glmsgs.py,sha256=Acd7kdtYcBJwTxQIosXR3cEc4ze8yeMQvFMlFb9e9Qs,33963
35
35
  gam/gamlib/glskus.py,sha256=e1u3zw1MGQjBgAFXqjrGWQl2d7eYpVlMYGpIKNwjskQ,15360
36
36
  gam/gamlib/gluprop.py,sha256=IyPLCyvn7-NHTUenM71YPQPXRZXx6CB5q-GtJ-FYd1c,11461
37
37
  gam/gamlib/glverlibs.py,sha256=xoQXiwcE_-HVYKv-VYA8O0mazRsc9mN-_ysj1dAlMyc,992
@@ -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.18.2.dist-info/METADATA,sha256=48G8Uh2h_DM1q1CAXIIrlzOrD_k3ZqLPz_jX70gFtEc,2940
69
- gam7-7.18.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.18.2.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.18.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.18.2.dist-info/RECORD,,
68
+ gam7-7.18.4.dist-info/METADATA,sha256=9Jont_975UdHfv5JG2oX6m9QUjoCE-wMBIpGS_UR6xg,2940
69
+ gam7-7.18.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.18.4.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.18.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.18.4.dist-info/RECORD,,
File without changes