diff --git a/src/GamCommands.txt b/src/GamCommands.txt index b65b630c..d97947e3 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -1437,6 +1437,11 @@ gam delete|del delegate|delegates gam show delegates|delegate [csv] gam print delegates [todrive] +gam create|add contactdelegate +gam delete|del contactdelegate +gam show contactdelegates [csv] +gam print contactdelegates [todrive] + gam [create|add] filter [from ] [to ] [subject ] [haswords|query ] [nowords|negatedquery ] [musthaveattachment|hasattachment] [excludechats] [size larger|smaller ] [label ] [important|notimportant] [star] [trash] [markread] [archive] [neverspam] [forward ] gam delete filters diff --git a/src/contactdelegation-v1.json b/src/contactdelegation-v1.json index 7f554ed6..44bd5182 100644 --- a/src/contactdelegation-v1.json +++ b/src/contactdelegation-v1.json @@ -1,4 +1,16 @@ { + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/admin.contact.delegation": { + "description": "View and manage your Contact Delegation" + }, + "https://www.googleapis.com/auth/admin.contact.delegation.readonly": { + "description": "View your Contact Delegation" + } + } + } + }, "basePath": "", "baseUrl": "https://admin.googleapis.com/admin/contacts/v1/", "batchPath": "batch", diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 9f383fb6..60bc66f9 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -11602,8 +11602,8 @@ def ProcessGAMCommand(args): printShowTeamDrives(users, False) elif showWhat in ['teamdriveinfo']: doGetTeamDriveInfo(users) - elif showWhat in ['contactdelegation']: - gapi_contactdelegation.print_(users) + elif showWhat in ['contactdelegate', 'contactdelegates']: + gapi_contactdelegation.print_(users, False) else: controlflow.invalid_argument_exit(showWhat, 'gam show') elif command == 'print': @@ -11632,8 +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) + elif printWhat in ['contactdelegate', 'contactdelegates']: + gapi_contactdelegation.print_(users, True) else: controlflow.invalid_argument_exit(printWhat, 'gam print') @@ -11748,7 +11748,7 @@ def ProcessGAMCommand(args): addSmime(users) elif addWhat == 'teamdrive': doCreateTeamDrive(users) - elif addWhat == 'contactdelegation': + elif addWhat == 'contactdelegate': gapi_contactdelegation.create(users) else: controlflow.invalid_argument_exit(addWhat, diff --git a/src/gam/gapi/contactdelegation.py b/src/gam/gapi/contactdelegation.py index ad19f4a4..ab29ff11 100644 --- a/src/gam/gapi/contactdelegation.py +++ b/src/gam/gapi/contactdelegation.py @@ -1,7 +1,5 @@ """Contact Delegation API calls""" -import csv -import os.path import sys import gam @@ -17,7 +15,7 @@ def build(): def create(users): condel = build() - delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True) + delegate = gam.normalizeEmailAddressOrUID(sys.argv[5]) delegate = gapi_directory_users.get_primary(delegate) if not delegate: controlflow.system_error_exit(5, @@ -39,7 +37,7 @@ def create(users): def delete(users): condel = build() - delegate = gam.normalizeEmailAddressOrUID(sys.argv[5], noUid=True) + delegate = gam.normalizeEmailAddressOrUID(sys.argv[5]) delegate = gapi_directory_users.get_primary(delegate) if not delegate: controlflow.system_error_exit(5, @@ -58,20 +56,26 @@ def delete(users): delegate=delegate) -def print_(users): +def print_(users, csvFormat): condel = build() - titles = ['user', 'delegate'] - csv_rows = [] - todrive = False - i = 5 + if csvFormat: + todrive = False + csv_rows = [] + titles = ['User', 'delegateAddress'] + else: + csvStyle = False + i = 5 while i < len(sys.argv): myarg = sys.argv[i].lower().replace('_', '') - if myarg == 'todrive': + if not csvFormat and myarg == 'csv': + csvStyle = True + i += 1 + elif csvFormat and myarg == 'todrive': todrive = True i += 1 else: controlflow.invalid_argument_exit(sys.argv[i], - 'gam print browsers') + 'gam print contactdelegation') page_message = gapi.got_total_items_msg('Contact Delegates', '...\n') for user in users: delegates = gapi.get_all_pages(condel.delegates(), 'list', @@ -79,5 +83,14 @@ def print_(users): 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) + if csvFormat: + csv_rows.append({'User': user, 'delegateAddress': delegate['email']}) + else: + if csvStyle: + print(f'{user},{delegate["email"]}') + else: + print( + f'Delegator: {user}\n Delegate Email: {delegate["email"]}\n' + ) + if csvFormat: + display.write_csv_file(csv_rows, titles, 'Contact Delegates', todrive)