mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 18:01:36 +00:00
Add auth to discovery document uid allowed in create/delete as input is converted to primaryemail
97 lines
3.0 KiB
Python
97 lines
3.0 KiB
Python
"""Contact Delegation API calls"""
|
|
|
|
import sys
|
|
|
|
import gam
|
|
from gam.gapi.directory import users as gapi_directory_users
|
|
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])
|
|
delegate = gapi_directory_users.get_primary(delegate)
|
|
if not delegate:
|
|
controlflow.system_error_exit(5,
|
|
f'{sys.argv[5]} is not the primary address of a user.')
|
|
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)}'
|
|
)
|
|
gapi.call(condel.delegates(),
|
|
'create',
|
|
soft_errors=True,
|
|
user=user,
|
|
body=body)
|
|
|
|
|
|
def delete(users):
|
|
condel = build()
|
|
delegate = gam.normalizeEmailAddressOrUID(sys.argv[5])
|
|
delegate = gapi_directory_users.get_primary(delegate)
|
|
if not delegate:
|
|
controlflow.system_error_exit(5,
|
|
f'{sys.argv[5]} is not the primary address of a user.')
|
|
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, csvFormat):
|
|
condel = build()
|
|
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 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 contactdelegation')
|
|
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:
|
|
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)
|