mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 20:31:35 +00:00
Standardize callGAPIpages calls; cleanup new Vault code (#539)
* Standardize callGAPIpages calls; cleanup new Vault code All calls to callGAPIpages include the items parameter; none of them omit it and take the default value u'items'; thus items can be a positional parameter and the items= in each of the calls can be omitted. Previously, some calls had item= and others didn't. Cleaned up Vault argument processing. Clean up some pylint complaints. * Correct convertUserUIDtoEmail calls in doGetVaultxxxInfo
This commit is contained in:
50
src/gam.py
50
src/gam.py
@@ -714,7 +714,7 @@ def callGAPI(service, function,
|
|||||||
except TypeError as e:
|
except TypeError as e:
|
||||||
systemErrorExit(4, str(e))
|
systemErrorExit(4, str(e))
|
||||||
|
|
||||||
def callGAPIpages(service, function, items=u'items',
|
def callGAPIpages(service, function, items,
|
||||||
page_message=None, message_attribute=None,
|
page_message=None, message_attribute=None,
|
||||||
soft_errors=False, throw_reasons=None, retry_reasons=None,
|
soft_errors=False, throw_reasons=None, retry_reasons=None,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
@@ -2019,7 +2019,7 @@ def doPrintShowGuardians(csvFormat):
|
|||||||
sys.stderr.write('\r')
|
sys.stderr.write('\r')
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
sys.stderr.write(u'Getting %s for %s%s%s' % (itemName, studentId, currentCount(i, count), u' ' * 40))
|
sys.stderr.write(u'Getting %s for %s%s%s' % (itemName, studentId, currentCount(i, count), u' ' * 40))
|
||||||
guardians = callGAPIpages(service, u'list', items=items, soft_errors=True, **kwargs)
|
guardians = callGAPIpages(service, u'list', items, soft_errors=True, **kwargs)
|
||||||
if not csvFormat:
|
if not csvFormat:
|
||||||
print u'Student: {0}, {1}:{2}'.format(studentId, itemName, currentCount(i, count))
|
print u'Student: {0}, {1}:{2}'.format(studentId, itemName, currentCount(i, count))
|
||||||
for guardian in guardians:
|
for guardian in guardians:
|
||||||
@@ -2090,7 +2090,7 @@ def doDeleteGuardian():
|
|||||||
pass
|
pass
|
||||||
# See if there's a pending invitation
|
# See if there's a pending invitation
|
||||||
try:
|
try:
|
||||||
results = callGAPIpages(croom.userProfiles().guardianInvitations(), u'list', items=u'guardianInvitations',
|
results = callGAPIpages(croom.userProfiles().guardianInvitations(), u'list', u'guardianInvitations',
|
||||||
throw_reasons=[GAPI_FORBIDDEN],
|
throw_reasons=[GAPI_FORBIDDEN],
|
||||||
studentId=studentId, invitedEmailAddress=guardianId, states=[u'PENDING',])
|
studentId=studentId, invitedEmailAddress=guardianId, states=[u'PENDING',])
|
||||||
if len(results) > 0:
|
if len(results) > 0:
|
||||||
@@ -3252,7 +3252,7 @@ def doCalendarDeleteEvent():
|
|||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() in [u'query', u'eventquery']:
|
elif sys.argv[i].lower() in [u'query', u'eventquery']:
|
||||||
query = sys.argv[i+1]
|
query = sys.argv[i+1]
|
||||||
result = callGAPIpages(cal.events(), u'list', items=u'items', calendarId=calendarId, q=query)
|
result = callGAPIpages(cal.events(), u'list', u'items', calendarId=calendarId, q=query)
|
||||||
for event in result:
|
for event in result:
|
||||||
if u'id' in event and event[u'id'] not in events:
|
if u'id' in event and event[u'id'] not in events:
|
||||||
events.append(event[u'id'])
|
events.append(event[u'id'])
|
||||||
@@ -3703,7 +3703,7 @@ def showDriveFileACL(users):
|
|||||||
user, drive = buildDrive3GAPIObject(user)
|
user, drive = buildDrive3GAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
continue
|
continue
|
||||||
feed = callGAPIpages(drive.permissions(), u'list', items=u'permissions', fileId=fileId, fields=u'*', supportsTeamDrives=True)
|
feed = callGAPIpages(drive.permissions(), u'list', u'permissions', fileId=fileId, fields=u'*', supportsTeamDrives=True)
|
||||||
for permission in feed:
|
for permission in feed:
|
||||||
printPermission(permission)
|
printPermission(permission)
|
||||||
print u''
|
print u''
|
||||||
@@ -6785,7 +6785,7 @@ def doDelProjects(login_hint=None):
|
|||||||
# Deletes all projects with ID gam-project-*
|
# Deletes all projects with ID gam-project-*
|
||||||
login_hint = getValidateLoginHint(login_hint)
|
login_hint = getValidateLoginHint(login_hint)
|
||||||
crm, _ = getCRMService(login_hint)
|
crm, _ = getCRMService(login_hint)
|
||||||
projects = callGAPIpages(crm.projects(), u'list', items=u'projects')
|
projects = callGAPIpages(crm.projects(), u'list', u'projects')
|
||||||
for project in projects:
|
for project in projects:
|
||||||
pid = project[u'projectId']
|
pid = project[u'projectId']
|
||||||
if pid.startswith(u'gam-project-'):
|
if pid.startswith(u'gam-project-'):
|
||||||
@@ -6800,7 +6800,7 @@ def enableProjectAPIs(simplehttp, httpObj, project_name, checkEnabled):
|
|||||||
apis = c.splitlines()
|
apis = c.splitlines()
|
||||||
serveman = googleapiclient.discovery.build(u'servicemanagement', u'v1', http=httpObj, cache_discovery=False)
|
serveman = googleapiclient.discovery.build(u'servicemanagement', u'v1', http=httpObj, cache_discovery=False)
|
||||||
if checkEnabled:
|
if checkEnabled:
|
||||||
enabledServices = callGAPIpages(serveman.services(), u'list', items=u'services',
|
enabledServices = callGAPIpages(serveman.services(), u'list', u'services',
|
||||||
consumerId=project_name, fields=u'nextPageToken,services(serviceName)')
|
consumerId=project_name, fields=u'nextPageToken,services(serviceName)')
|
||||||
for enabled in enabledServices:
|
for enabled in enabledServices:
|
||||||
if u'serviceName' in enabled:
|
if u'serviceName' in enabled:
|
||||||
@@ -7060,7 +7060,7 @@ def printShowTeamDrives(users, csvFormat):
|
|||||||
user, drive = buildDrive3GAPIObject(user)
|
user, drive = buildDrive3GAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
continue
|
continue
|
||||||
results = callGAPIpages(drive.teamdrives(), u'list', items=u'teamDrives', fields=u'*', soft_errors=True)
|
results = callGAPIpages(drive.teamdrives(), u'list', u'teamDrives', fields=u'*', soft_errors=True)
|
||||||
if not results:
|
if not results:
|
||||||
continue
|
continue
|
||||||
for td in results:
|
for td in results:
|
||||||
@@ -7095,13 +7095,14 @@ def doCreateVaultMatter():
|
|||||||
collaborators_map = []
|
collaborators_map = []
|
||||||
i = 3
|
i = 3
|
||||||
while i < len(sys.argv):
|
while i < len(sys.argv):
|
||||||
if sys.argv[i].lower() == u'name':
|
myarg = sys.argv[i].lower().replace(u'_', u'')
|
||||||
|
if myarg == u'name':
|
||||||
body[u'name'] = sys.argv[i+1]
|
body[u'name'] = sys.argv[i+1]
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() == u'description':
|
elif myarg == u'description':
|
||||||
body[u'description'] = sys.argv[i+1]
|
body[u'description'] = sys.argv[i+1]
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() in [u'collaborator', u'collaborators']:
|
elif myarg in [u'collaborator', u'collaborators']:
|
||||||
collaborators = sys.argv[i+1].split(u',')
|
collaborators = sys.argv[i+1].split(u',')
|
||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
for collaborator in collaborators:
|
for collaborator in collaborators:
|
||||||
@@ -7253,7 +7254,7 @@ def doGetVaultHoldInfo():
|
|||||||
if u'accounts' in results:
|
if u'accounts' in results:
|
||||||
for i in range(0, len(results[u'accounts'])):
|
for i in range(0, len(results[u'accounts'])):
|
||||||
uid = u'uid:%s' % results[u'accounts'][i][u'accountId']
|
uid = u'uid:%s' % results[u'accounts'][i][u'accountId']
|
||||||
user_email = convertUserUIDtoEmailAddress(uid, cd=None)
|
user_email = convertUserUIDtoEmailAddress(uid, cd)
|
||||||
results[u'accounts'][i][u'email'] = user_email
|
results[u'accounts'][i][u'email'] = user_email
|
||||||
if u'orgUnit' in results:
|
if u'orgUnit' in results:
|
||||||
results[u'orgUnit'][u'orgUnitPath'] = doGetOrgInfo(results[u'orgUnit'][u'orgUnitId'], return_attrib=u'orgUnitPath')
|
results[u'orgUnit'][u'orgUnitPath'] = doGetOrgInfo(results[u'orgUnit'][u'orgUnitId'], return_attrib=u'orgUnitPath')
|
||||||
@@ -7263,7 +7264,7 @@ def convertHoldNameToID(v, nameOrID, matterId):
|
|||||||
nameOrID = nameOrID.lower()
|
nameOrID = nameOrID.lower()
|
||||||
if nameOrID[:4] == u'uid:':
|
if nameOrID[:4] == u'uid:':
|
||||||
return nameOrID[4:]
|
return nameOrID[4:]
|
||||||
holds = callGAPIpages(v.matters().holds(), u'list', items=u'holds', matterId=matterId, fields=u'holds(holdId,name),nextPageToken')
|
holds = callGAPIpages(v.matters().holds(), u'list', u'holds', matterId=matterId, fields=u'holds(holdId,name),nextPageToken')
|
||||||
for hold in holds:
|
for hold in holds:
|
||||||
if hold[u'name'].lower() == nameOrID:
|
if hold[u'name'].lower() == nameOrID:
|
||||||
return hold[u'holdId']
|
return hold[u'holdId']
|
||||||
@@ -7273,7 +7274,7 @@ def convertMatterNameToID(v, nameOrID):
|
|||||||
nameOrID = nameOrID.lower()
|
nameOrID = nameOrID.lower()
|
||||||
if nameOrID[:4] == u'uid:':
|
if nameOrID[:4] == u'uid:':
|
||||||
return nameOrID[4:]
|
return nameOrID[4:]
|
||||||
matters = callGAPIpages(v.matters(), u'list', items=u'matters', view=u'BASIC', fields=u'matters(matterId,name),nextPageToken')
|
matters = callGAPIpages(v.matters(), u'list', u'matters', view=u'BASIC', fields=u'matters(matterId,name),nextPageToken')
|
||||||
for matter in matters:
|
for matter in matters:
|
||||||
if matter[u'name'].lower() == nameOrID:
|
if matter[u'name'].lower() == nameOrID:
|
||||||
return matter[u'matterId']
|
return matter[u'matterId']
|
||||||
@@ -7336,7 +7337,7 @@ def doUpdateVaultHold():
|
|||||||
old_body = callGAPI(v.matters().holds(), u'get', matterId=matterId, holdId=holdId, fields=u'corpus,query,orgUnit')
|
old_body = callGAPI(v.matters().holds(), u'get', matterId=matterId, holdId=holdId, fields=u'corpus,query,orgUnit')
|
||||||
body[u'query'] = old_body[u'query']
|
body[u'query'] = old_body[u'query']
|
||||||
body[u'corpus'] = old_body[u'corpus']
|
body[u'corpus'] = old_body[u'corpus']
|
||||||
if u'orgUnit' in old_body and not u'orgUnit' in body:
|
if u'orgUnit' in old_body and u'orgUnit' not in body:
|
||||||
# bah, API requires this to be sent on update even when it's not changing
|
# bah, API requires this to be sent on update even when it's not changing
|
||||||
body[u'orgUnit'] = old_body[u'orgUnit']
|
body[u'orgUnit'] = old_body[u'orgUnit']
|
||||||
query_type = '%sQuery' % body[u'corpus'].lower()
|
query_type = '%sQuery' % body[u'corpus'].lower()
|
||||||
@@ -7375,19 +7376,20 @@ def doUpdateVaultMatter(action=None):
|
|||||||
cd = None
|
cd = None
|
||||||
i = 4
|
i = 4
|
||||||
while i < len(sys.argv):
|
while i < len(sys.argv):
|
||||||
if sys.argv[i].lower() == u'action':
|
myarg = sys.argv[i].lower().replace(u'_', u'')
|
||||||
|
if myarg == u'action':
|
||||||
action = sys.argv[i+1].lower()
|
action = sys.argv[i+1].lower()
|
||||||
if action not in VAULT_MATTER_ACTIONS:
|
if action not in VAULT_MATTER_ACTIONS:
|
||||||
print u'ERROR: allowed actions are %s, got %s' % (u', '.join(VAULT_MATTER_ACTIONS), sys.argv[i])
|
print u'ERROR: allowed actions are %s, got %s' % (u', '.join(VAULT_MATTER_ACTIONS), sys.argv[i])
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() == u'name':
|
elif myarg == u'name':
|
||||||
body[u'name'] = sys.argv[i+1]
|
body[u'name'] = sys.argv[i+1]
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() == u'description':
|
elif myarg == u'description':
|
||||||
body[u'description'] = sys.argv[i+1]
|
body[u'description'] = sys.argv[i+1]
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower().replace(u'_', '') in [u'addcollaborator', u'addcollaborators']:
|
elif myarg in [u'addcollaborator', u'addcollaborators']:
|
||||||
for collaborator in sys.argv[i+1].split(u','):
|
for collaborator in sys.argv[i+1].split(u','):
|
||||||
if not cd:
|
if not cd:
|
||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
@@ -7397,7 +7399,7 @@ def doUpdateVaultMatter(action=None):
|
|||||||
sys.exit(4)
|
sys.exit(4)
|
||||||
add_collaborators.append({u'email': collaborator, u'id': collaborator_id})
|
add_collaborators.append({u'email': collaborator, u'id': collaborator_id})
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower().replace(u'_', '') == [u'removecollaborator', u'removecollaborators']:
|
elif myarg in [u'removecollaborator', u'removecollaborators']:
|
||||||
remove_collaborators = sys.argv[i+1].split(u',')
|
remove_collaborators = sys.argv[i+1].split(u',')
|
||||||
for collaborator in sys.argv[i+1].split(u','):
|
for collaborator in sys.argv[i+1].split(u','):
|
||||||
if not cd:
|
if not cd:
|
||||||
@@ -7435,7 +7437,7 @@ def doGetVaultMatterInfo():
|
|||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
for i in range(0, len(result[u'matterPermissions'])):
|
for i in range(0, len(result[u'matterPermissions'])):
|
||||||
uid = u'uid:%s' % result[u'matterPermissions'][i][u'accountId']
|
uid = u'uid:%s' % result[u'matterPermissions'][i][u'accountId']
|
||||||
user_email = convertUserUIDtoEmailAddress(uid, cd=None)
|
user_email = convertUserUIDtoEmailAddress(uid, cd)
|
||||||
result[u'matterPermissions'][i][u'email'] = user_email
|
result[u'matterPermissions'][i][u'email'] = user_email
|
||||||
print_json(None, result)
|
print_json(None, result)
|
||||||
|
|
||||||
@@ -10184,7 +10186,7 @@ def doPrintVaultMatters():
|
|||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
sys.stderr.write(u'Retrieving all Vault Matters...\n')
|
sys.stderr.write(u'Retrieving all Vault Matters...\n')
|
||||||
page_message = u' got %%num_items%% matters...\n'
|
page_message = u' got %%num_items%% matters...\n'
|
||||||
matters = callGAPIpages(v.matters(), u'list', items=u'matters', view=view)
|
matters = callGAPIpages(v.matters(), u'list', u'matters', page_message=page_message, view=view)
|
||||||
for matter in matters:
|
for matter in matters:
|
||||||
csvRows.append(flatten_json(matter))
|
csvRows.append(flatten_json(matter))
|
||||||
for column in csvRows[-1]:
|
for column in csvRows[-1]:
|
||||||
@@ -10212,7 +10214,7 @@ def doPrintVaultHolds():
|
|||||||
print u'ERROR: %s is not a valid a valid argument to "gam print holds"' % myarg
|
print u'ERROR: %s is not a valid a valid argument to "gam print holds"' % myarg
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
if not matters:
|
if not matters:
|
||||||
matters_results = callGAPIpages(v.matters(), u'list', items=u'matters', view=u'BASIC', fields=u'matters(matterId,state),nextPageToken')
|
matters_results = callGAPIpages(v.matters(), u'list', u'matters', view=u'BASIC', fields=u'matters(matterId,state),nextPageToken')
|
||||||
for matter in matters_results:
|
for matter in matters_results:
|
||||||
if matter[u'state'] != u'OPEN':
|
if matter[u'state'] != u'OPEN':
|
||||||
print u'ignoring matter %s in state %s' % (matter[u'matterId'], matter[u'state'])
|
print u'ignoring matter %s in state %s' % (matter[u'matterId'], matter[u'state'])
|
||||||
@@ -10222,7 +10224,7 @@ def doPrintVaultHolds():
|
|||||||
matterIds.append(convertMatterNameToID(v, matter))
|
matterIds.append(convertMatterNameToID(v, matter))
|
||||||
for matterId in matterIds:
|
for matterId in matterIds:
|
||||||
sys.stderr.write(u'Retrieving holds for matter %s' % matterId)
|
sys.stderr.write(u'Retrieving holds for matter %s' % matterId)
|
||||||
holds = callGAPIpages(v.matters().holds(), u'list', items=u'holds', matterId=matterId)
|
holds = callGAPIpages(v.matters().holds(), u'list', u'holds', matterId=matterId)
|
||||||
for hold in holds:
|
for hold in holds:
|
||||||
csvRows.append(flatten_json(hold))
|
csvRows.append(flatten_json(hold))
|
||||||
for column in csvRows[-1]:
|
for column in csvRows[-1]:
|
||||||
|
|||||||
Reference in New Issue
Block a user