mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 09:51:36 +00:00
Support for Contact Delegation API
This commit is contained in:
@@ -53,6 +53,7 @@ from gam.gapi import cloudidentity as gapi_cloudidentity
|
||||
from gam.gapi import cbcm as gapi_cbcm
|
||||
from gam.gapi.cloudidentity import devices as gapi_cloudidentity_devices
|
||||
from gam.gapi.cloudidentity import groups as gapi_cloudidentity_groups
|
||||
from gam.gapi import contactdelegation as gapi_contactdelegation
|
||||
from gam.gapi.directory import asps as gapi_directory_asps
|
||||
from gam.gapi.directory import cros as gapi_directory_cros
|
||||
from gam.gapi.directory import customer as gapi_directory_customer
|
||||
@@ -10215,14 +10216,18 @@ OAUTH2_SCOPES = [
|
||||
'subscopes': ['readonly'],
|
||||
'scopes': 'https://www.googleapis.com/auth/cloud-identity.groups'
|
||||
},
|
||||
{
|
||||
'name': 'Contact Delegation',
|
||||
'subscopes': ['readonly'],
|
||||
'scopes': 'https://www.googleapis.com/auth/admin.contact.delegation'
|
||||
},
|
||||
{
|
||||
'name': 'Data Transfer API',
|
||||
'subscopes': ['readonly'],
|
||||
'scopes': 'https://www.googleapis.com/auth/admin.datatransfer'
|
||||
},
|
||||
{
|
||||
'name':
|
||||
'Directory API - Chrome OS Devices',
|
||||
'name': 'Directory API - Chrome OS Devices',
|
||||
'subscopes': ['readonly'],
|
||||
'scopes':
|
||||
'https://www.googleapis.com/auth/admin.directory.device.chromeos'
|
||||
@@ -11597,6 +11602,8 @@ def ProcessGAMCommand(args):
|
||||
printShowTeamDrives(users, False)
|
||||
elif showWhat in ['teamdriveinfo']:
|
||||
doGetTeamDriveInfo(users)
|
||||
elif showWhat in ['contactdelegation']:
|
||||
gapi_contactdelegation.print_(users)
|
||||
else:
|
||||
controlflow.invalid_argument_exit(showWhat, 'gam <users> show')
|
||||
elif command == 'print':
|
||||
@@ -11625,6 +11632,8 @@ def ProcessGAMCommand(args):
|
||||
printShowTokens(5, 'users', users, True)
|
||||
elif printWhat in ['teamdrive', 'teamdrives']:
|
||||
printShowTeamDrives(users, True)
|
||||
elif printWhat in ['contactdelegation']:
|
||||
gapi_contactdelegation.print_(users)
|
||||
else:
|
||||
controlflow.invalid_argument_exit(printWhat,
|
||||
'gam <users> print')
|
||||
@@ -11705,6 +11714,8 @@ def ProcessGAMCommand(args):
|
||||
deleteSmime(users)
|
||||
elif delWhat == 'teamdrive':
|
||||
doDeleteTeamDrive(users)
|
||||
elif delWhat == 'contactdelegate':
|
||||
gapi_contactdelegation.delete(users)
|
||||
else:
|
||||
controlflow.invalid_argument_exit(delWhat, 'gam <users> delete')
|
||||
elif command in ['add', 'create']:
|
||||
@@ -11737,6 +11748,8 @@ def ProcessGAMCommand(args):
|
||||
addSmime(users)
|
||||
elif addWhat == 'teamdrive':
|
||||
doCreateTeamDrive(users)
|
||||
elif addWhat == 'contactdelegation':
|
||||
gapi_contactdelegation.create(users)
|
||||
else:
|
||||
controlflow.invalid_argument_exit(addWhat,
|
||||
f'gam <users> {command}')
|
||||
|
||||
75
src/gam/gapi/contactdelegation.py
Normal file
75
src/gam/gapi/contactdelegation.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""Contact Delegation API calls"""
|
||||
|
||||
import csv
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
import gam
|
||||
from gam import controlflow
|
||||
from gam import display
|
||||
from gam import gapi
|
||||
|
||||
|
||||
def build():
|
||||
return gam.buildGAPIObject('contactdelegation')
|
||||
|
||||
|
||||
def create(users):
|
||||
condel = build()
|
||||
delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True)
|
||||
body = {'email': delegate}
|
||||
i = 0
|
||||
count = len(users)
|
||||
for user in users:
|
||||
i += 1
|
||||
print(
|
||||
f'Granting {delegate} contact delegate access to {user}{gam.currentCount(i, count)}'
|
||||
)
|
||||
body
|
||||
gapi.call(condel.delegates(),
|
||||
'create',
|
||||
soft_errors=True,
|
||||
user=user,
|
||||
body=body)
|
||||
|
||||
|
||||
def delete(users):
|
||||
condel = build()
|
||||
delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True)
|
||||
i = 0
|
||||
count = len(users)
|
||||
for user in users:
|
||||
i += 1
|
||||
print(
|
||||
f'Deleting {delegate} contact delegate access to {user}{gam.currentCount(i, count)}'
|
||||
)
|
||||
gapi.call(condel.delegates(),
|
||||
'delete',
|
||||
soft_errors=True,
|
||||
user=user,
|
||||
delegate=delegate)
|
||||
|
||||
|
||||
def print_(users):
|
||||
condel = build()
|
||||
titles = ['user', 'delegate']
|
||||
csv_rows = []
|
||||
todrive = False
|
||||
i = 5
|
||||
while i < len(sys.argv):
|
||||
myarg = sys.argv[i].lower().replace('_', '')
|
||||
if myarg == 'todrive':
|
||||
todrive = True
|
||||
i += 1
|
||||
else:
|
||||
controlflow.invalid_argument_exit(sys.argv[i],
|
||||
'gam print browsers')
|
||||
page_message = gapi.got_total_items_msg('Contact Delegates', '...\n')
|
||||
for user in users:
|
||||
delegates = gapi.get_all_pages(condel.delegates(), 'list',
|
||||
'delegates',
|
||||
page_message=page_message,
|
||||
user=user)
|
||||
for delegate in delegates:
|
||||
csv_rows.append({'user': user, 'delegate': delegate.get('email')})
|
||||
display.write_csv_file(csv_rows, titles, 'Contact Delegates', todrive)
|
||||
@@ -266,6 +266,7 @@ API_VER_MAPPING = {
|
||||
'cloudidentity_beta': 'v1beta1',
|
||||
'cloudresourcemanager': 'v2',
|
||||
'cloudresourcemanagerv1': 'v1',
|
||||
'contactdelegation': 'v1',
|
||||
'datatransfer': 'datatransfer_v1',
|
||||
'directory': 'directory_v1',
|
||||
'drive': 'v2',
|
||||
|
||||
Reference in New Issue
Block a user