Clean up Cloud Identity groups/Fix get drivefile csvsheet (#1228)

* Clean up Cloud Identity groups

* Fix issue in get drivefile

Updated code in downloadDriveFile to handle unexpected data in spreadsheetUrl after /edit
```
https://docs.google.com/spreadsheets/d/%3Cdocidhere%3E/edit?ouid=1234567890123456&urlBuilderDomain=mydomain.edu
```
This commit is contained in:
Ross Scroggs
2020-08-27 11:35:48 -07:00
committed by GitHub
parent 88c17af8ef
commit 884cbc52a3
2 changed files with 19 additions and 24 deletions

View File

@@ -3890,7 +3890,7 @@ def downloadDriveFile(users):
if sheet['properties']['title'].lower( if sheet['properties']['title'].lower(
) == csvSheetTitleLower: ) == csvSheetTitleLower:
spreadsheetUrl = '{0}?format=csv&id={1}&gid={2}'.format( spreadsheetUrl = '{0}?format=csv&id={1}&gid={2}'.format(
re.sub('/edit$', '/export', re.sub('/edit.*$', '/export',
spreadsheet['spreadsheetUrl']), spreadsheet['spreadsheetUrl']),
fileId, sheet['properties']['sheetId']) fileId, sheet['properties']['sheetId'])
break break

View File

@@ -17,9 +17,7 @@ def create():
initialGroupConfig = 'EMPTY' initialGroupConfig = 'EMPTY'
gapi_directory_customer.setTrueCustomerId() gapi_directory_customer.setTrueCustomerId()
parent = f'customers/{GC_Values[GC_CUSTOMER_ID]}' parent = f'customers/{GC_Values[GC_CUSTOMER_ID]}'
body = {'groupKey': { body = {'groupKey': {'id': gam.normalizeEmailAddressOrUID(sys.argv[3], noUid=True)},
'id': gam.normalizeEmailAddressOrUID(sys.argv[3], noUid=True)
},
'parent': parent, 'parent': parent,
'labels': {'cloudidentity.googleapis.com/groups.discussion_forum': ''}, 'labels': {'cloudidentity.googleapis.com/groups.discussion_forum': ''},
} }
@@ -148,7 +146,6 @@ def print_():
members = membersCountOnly = managers = managersCountOnly = owners = ownersCountOnly = False members = membersCountOnly = managers = managersCountOnly = owners = ownersCountOnly = False
gapi_directory_customer.setTrueCustomerId() gapi_directory_customer.setTrueCustomerId()
parent = f'customers/{GC_Values[GC_CUSTOMER_ID]}' parent = f'customers/{GC_Values[GC_CUSTOMER_ID]}'
aliasDelimiter = ' '
memberDelimiter = '\n' memberDelimiter = '\n'
todrive = False todrive = False
titles = [] titles = []
@@ -161,7 +158,7 @@ def print_():
todrive = True todrive = True
i += 1 i += 1
elif myarg == 'delimiter': elif myarg == 'delimiter':
aliasDelimiter = memberDelimiter = sys.argv[i + 1] memberDelimiter = sys.argv[i + 1]
i += 2 i += 2
elif myarg == 'sortheaders': elif myarg == 'sortheaders':
sortHeaders = True sortHeaders = True
@@ -235,7 +232,7 @@ def print_():
sys.stderr.write( sys.stderr.write(
f' Getting {roles} for {groupEmail}{gam.currentCountNL(i, count)}') f' Getting {roles} for {groupEmail}{gam.currentCountNL(i, count)}')
page_message = gapi.got_total_items_first_last_msg('Members') page_message = gapi.got_total_items_first_last_msg('Members')
validRoles, listRoles, listFields = gam._getRoleVerification( validRoles, _, _ = gam._getRoleVerification(
roles, 'nextPageToken,members(email,id,role)') roles, 'nextPageToken,members(email,id,role)')
groupMembers = gapi.get_all_pages(ci.groups().memberships(), groupMembers = gapi.get_all_pages(ci.groups().memberships(),
'list', 'list',
@@ -555,7 +552,6 @@ def update():
name = membership_email_to_id(ci, parent, users_email[0]) name = membership_email_to_id(ci, parent, users_email[0])
addRoles = [] addRoles = []
removeRoles = [] removeRoles = []
new_role = {'role': role}
current_roles = gapi.call(ci.groups().memberships(), 'get', name=name, current_roles = gapi.call(ci.groups().memberships(), 'get', name=name,
fields='roles').get('roles', []) fields='roles').get('roles', [])
current_roles = [role['name'] for role in current_roles] current_roles = [role['name'] for role in current_roles]
@@ -670,7 +666,7 @@ def group_email_to_id(ci, group, i=0, count=0):
gapi_errors.GapiDomainNotFoundError, gapi_errors.GapiDomainNotFoundError,
gapi_errors.GapiDomainCannotUseApisError, gapi_errors.GapiDomainCannotUseApisError,
gapi_errors.GapiForbiddenError, gapi_errors.GapiBadRequestError): gapi_errors.GapiForbiddenError, gapi_errors.GapiBadRequestError):
entityUnknownWarning('Group', group, i, count) gam.entityUnknownWarning('Group', group, i, count)
return None return None
def membership_email_to_id(ci, parent, membership, i=0, count=0): def membership_email_to_id(ci, parent, membership, i=0, count=0):
@@ -687,7 +683,7 @@ def membership_email_to_id(ci, parent, membership, i=0, count=0):
gapi_errors.GapiDomainNotFoundError, gapi_errors.GapiDomainNotFoundError,
gapi_errors.GapiDomainCannotUseApisError, gapi_errors.GapiDomainCannotUseApisError,
gapi_errors.GapiForbiddenError, gapi_errors.GapiBadRequestError): gapi_errors.GapiForbiddenError, gapi_errors.GapiBadRequestError):
entityUnknownWarning('Membership', member_email, i, count) gam.entityUnknownWarning('Membership', membership, i, count)
return None return None
@@ -695,7 +691,7 @@ def get_single_role(roles):
''' returns the highest role of member ''' ''' returns the highest role of member '''
roles = [role.get('name') for role in roles] roles = [role.get('name') for role in roles]
if not roles: if not roles:
return return ROLE_MEMBER
for a_role in [ROLE_OWNER, ROLE_MANAGER, ROLE_MEMBER]: for a_role in [ROLE_OWNER, ROLE_MANAGER, ROLE_MEMBER]:
if a_role in roles: if a_role in roles:
return a_role return a_role
@@ -706,6 +702,5 @@ def filter_members_to_roles(members, roles):
for member in members: for member in members:
role = get_single_role(member.get('roles', [])) role = get_single_role(member.get('roles', []))
if role in roles: if role in roles:
filtered_members.include(member) filtered_members.append(member)
return filtered_members return filtered_members