f string formatting, sixth of many (#1091)

Got message cleanup
This commit is contained in:
Ross Scroggs
2020-02-09 06:05:05 -08:00
committed by GitHub
parent 0f0cb0f28d
commit 5092e3fc65
5 changed files with 81 additions and 84 deletions

View File

@@ -1278,7 +1278,7 @@ def showReport():
sys.exit(1) sys.exit(1)
if fullData == 0: if fullData == 0:
continue continue
page_message = 'Got %%total_items%% Users\n' page_message = gapi.setGotTotalItems('Users', '\n')
usage = gapi.get_all_pages(rep.userUsageReport(), 'get', 'usageReports', page_message=page_message, throw_reasons=[gapi.errors.ErrorReason.INVALID], usage = gapi.get_all_pages(rep.userUsageReport(), 'get', 'usageReports', page_message=page_message, throw_reasons=[gapi.errors.ErrorReason.INVALID],
date=tryDate, userKey=userKey, customerId=customerId, orgUnitID=orgUnitId, filters=filters, parameters=parameters) date=tryDate, userKey=userKey, customerId=customerId, orgUnitID=orgUnitId, filters=filters, parameters=parameters)
break break
@@ -1382,7 +1382,7 @@ def showReport():
report = 'token' report = 'token'
elif report == 'group': elif report == 'group':
report = 'groups' report = 'groups'
page_message = 'Got %%total_items%% items\n' page_message = gapi.setGotTotalItems('items', '\n')
activities = gapi.get_all_pages(rep.activities(), 'list', 'items', activities = gapi.get_all_pages(rep.activities(), 'list', 'items',
page_message=page_message, page_message=page_message,
applicationName=report, userKey=userKey, applicationName=report, userKey=userKey,
@@ -2530,7 +2530,7 @@ def doPrintCourses():
fieldsList.append('ownerId') fieldsList.append('ownerId')
fields = f'nextPageToken,courses({",".join(set(fieldsList))})' if fieldsList else None fields = f'nextPageToken,courses({",".join(set(fieldsList))})' if fieldsList else None
printGettingAllItems('Courses', None) printGettingAllItems('Courses', None)
page_message = 'Got %%total_items%% Courses...\n' page_message = gapi.setGotTotalItems('Courses', '...\n')
all_courses = gapi.get_all_pages(croom.courses(), 'list', 'courses', page_message=page_message, teacherId=teacherId, studentId=studentId, courseStates=courseStates, fields=fields) all_courses = gapi.get_all_pages(croom.courses(), 'list', 'courses', page_message=page_message, teacherId=teacherId, studentId=studentId, courseStates=courseStates, fields=fields)
for course in all_courses: for course in all_courses:
if ownerEmails is not None: if ownerEmails is not None:
@@ -2557,20 +2557,20 @@ def doPrintCourses():
i += 1 i += 1
courseId = course['id'] courseId = course['id']
if showAliases: if showAliases:
alias_message = ' Got %%%%total_items%%%% Aliases for course %s%s' % (courseId, currentCount(i, count)) alias_message = gapi.setGotTotalItems(f'Aliases for course {courseId}{currentCount(i, count)}')
course_aliases = gapi.get_all_pages(croom.courses().aliases(), 'list', 'aliases', course_aliases = gapi.get_all_pages(croom.courses().aliases(), 'list', 'aliases',
page_message=alias_message, page_message=alias_message,
courseId=courseId) courseId=courseId)
course['Aliases'] = delimiter.join([alias['alias'][2:] for alias in course_aliases]) course['Aliases'] = delimiter.join([alias['alias'][2:] for alias in course_aliases])
if showMembers: if showMembers:
if showMembers != 'students': if showMembers != 'students':
teacher_message = ' Got %%%%total_items%%%% Teachers for course %s%s' % (courseId, currentCount(i, count)) teacher_message = gapi.setGotTotalItems(f'Teachers for course {courseId}{currentCount(i, count)}')
results = gapi.get_all_pages(croom.courses().teachers(), 'list', 'teachers', results = gapi.get_all_pages(croom.courses().teachers(), 'list', 'teachers',
page_message=teacher_message, page_message=teacher_message,
courseId=courseId, fields=teachersFields) courseId=courseId, fields=teachersFields)
_saveParticipants(course, results, 'teachers') _saveParticipants(course, results, 'teachers')
if showMembers != 'teachers': if showMembers != 'teachers':
student_message = ' Got %%%%total_items%%%% Students for course %s%s' % (courseId, currentCount(i, count)) student_message = gapi.setGotTotalItems(f'Students for course {courseId}{currentCount(i, count)}')
results = gapi.get_all_pages(croom.courses().students(), 'list', 'students', results = gapi.get_all_pages(croom.courses().students(), 'list', 'students',
page_message=student_message, page_message=student_message,
courseId=courseId, fields=studentsFields) courseId=courseId, fields=studentsFields)
@@ -2616,7 +2616,7 @@ def doPrintCourseParticipants():
controlflow.invalid_argument_exit(sys.argv[i], "gam print course-participants") controlflow.invalid_argument_exit(sys.argv[i], "gam print course-participants")
if not courses: if not courses:
printGettingAllItems('Courses', None) printGettingAllItems('Courses', None)
page_message = 'Got %%total_items%% Courses...\n' page_message = gapi.setGotTotalItems('Courses', '...\n')
all_courses = gapi.get_all_pages(croom.courses(), 'list', 'courses', page_message=page_message, all_courses = gapi.get_all_pages(croom.courses(), 'list', 'courses', page_message=page_message,
teacherId=teacherId, studentId=studentId, courseStates=courseStates, fields='nextPageToken,courses(id,name)') teacherId=teacherId, studentId=studentId, courseStates=courseStates, fields='nextPageToken,courses(id,name)')
else: else:
@@ -2629,12 +2629,12 @@ def doPrintCourseParticipants():
i += 1 i += 1
courseId = course['id'] courseId = course['id']
if showMembers != 'students': if showMembers != 'students':
page_message = ' Got %%%%total_items%%%% Teachers for course %s (%s/%s)' % (courseId, i, count) page_message = gapi.setGotTotalItems(f'Teachers for course {courseId} ({i}/{count})')
teachers = gapi.get_all_pages(croom.courses().teachers(), 'list', 'teachers', page_message=page_message, courseId=courseId) teachers = gapi.get_all_pages(croom.courses().teachers(), 'list', 'teachers', page_message=page_message, courseId=courseId)
for teacher in teachers: for teacher in teachers:
addRowTitlesToCSVfile(flatten_json(teacher, flattened={'courseId': courseId, 'courseName': course['name'], 'userRole': 'TEACHER'}), csvRows, titles) addRowTitlesToCSVfile(flatten_json(teacher, flattened={'courseId': courseId, 'courseName': course['name'], 'userRole': 'TEACHER'}), csvRows, titles)
if showMembers != 'teachers': if showMembers != 'teachers':
page_message = ' Got %%%%total_items%%%% Students for course %s (%s/%s)' % (courseId, i, count) page_message = gapi.setGotTotalItems(f'Students for course {courseId} ({i}/{count})')
students = gapi.get_all_pages(croom.courses().students(), 'list', 'students', page_message=page_message, courseId=courseId) students = gapi.get_all_pages(croom.courses().students(), 'list', 'students', page_message=page_message, courseId=courseId)
for student in students: for student in students:
addRowTitlesToCSVfile(flatten_json(student, flattened={'courseId': courseId, 'courseName': course['name'], 'userRole': 'STUDENT'}), csvRows, titles) addRowTitlesToCSVfile(flatten_json(student, flattened={'courseId': courseId, 'courseName': course['name'], 'userRole': 'STUDENT'}), csvRows, titles)
@@ -3520,7 +3520,7 @@ def doCalendarPrintEvents():
i += 1 i += 1
else: else:
controlflow.invalid_argument_exit(sys.argv[i], "gam calendar <email> printevents") controlflow.invalid_argument_exit(sys.argv[i], "gam calendar <email> printevents")
page_message = 'Got %%%%total_items%%%% events for %s' % calendarId page_message = gapi.setGotTotalItems(f'events for {calendarId}')
results = gapi.get_all_pages(cal.events(), 'list', 'items', page_message=page_message, results = gapi.get_all_pages(cal.events(), 'list', 'items', page_message=page_message,
calendarId=calendarId, q=q, showDeleted=showDeleted, calendarId=calendarId, q=q, showDeleted=showDeleted,
showHiddenInvitations=showHiddenInvitations, showHiddenInvitations=showHiddenInvitations,
@@ -3985,7 +3985,7 @@ def printDriveActivity(users):
user, activity = buildActivityGAPIObject(user) user, activity = buildActivityGAPIObject(user)
if not activity: if not activity:
continue continue
page_message = 'Got %%%%total_items%%%% activities for %s' % user page_message = gapi.setGotTotalItems(f'activities for {user}')
feed = gapi.get_all_pages(activity.activities(), 'list', 'activities', feed = gapi.get_all_pages(activity.activities(), 'list', 'activities',
page_message=page_message, source='drive.google.com', userId='me', page_message=page_message, source='drive.google.com', userId='me',
drive_ancestorId=drive_ancestorId, groupingStrategy='none', drive_ancestorId=drive_ancestorId, groupingStrategy='none',
@@ -4266,7 +4266,7 @@ def printDriveFileList(users):
if not drive: if not drive:
continue continue
sys.stderr.write(f'Getting files for {user}...\n') sys.stderr.write(f'Getting files for {user}...\n')
page_message = ' Got %%%%total_items%%%% files for %s...\n' % user page_message = gapi.setGotTotalItems(f'files for {user}', '...\n')
feed = gapi.get_all_pages(drive.files(), 'list', 'items', feed = gapi.get_all_pages(drive.files(), 'list', 'items',
page_message=page_message, soft_errors=True, page_message=page_message, soft_errors=True,
q=query, orderBy=orderBy, fields=fields) q=query, orderBy=orderBy, fields=fields)
@@ -4318,7 +4318,7 @@ def printDriveFileList(users):
def doDriveSearch(drive, query=None, quiet=False): def doDriveSearch(drive, query=None, quiet=False):
if not quiet: if not quiet:
print(f'Searching for files with query: "{query}"...') print(f'Searching for files with query: "{query}"...')
page_message = ' Got %%total_items%% files...\n' page_message = gapi.setGotTotalItems('files', '...\n')
else: else:
page_message = None page_message = None
files = gapi.get_all_pages(drive.files(), 'list', 'items', files = gapi.get_all_pages(drive.files(), 'list', 'items',
@@ -4441,7 +4441,7 @@ def showDriveFileTree(users):
continue continue
root_folder = gapi.call(drive.about(), 'get', fields='rootFolderId')['rootFolderId'] root_folder = gapi.call(drive.about(), 'get', fields='rootFolderId')['rootFolderId']
sys.stderr.write(f'Getting all files for {user}...\n') sys.stderr.write(f'Getting all files for {user}...\n')
page_message = ' Got %%%%total_items%%%% files for %s...\n' % user page_message = gapi.setGotTotalItems(f'files for {user}', '...\n')
feed = gapi.get_all_pages(drive.files(), 'list', 'items', page_message=page_message, feed = gapi.get_all_pages(drive.files(), 'list', 'items', page_message=page_message,
q=query, orderBy=orderBy, fields='items(id,title,parents(id),mimeType),nextPageToken') q=query, orderBy=orderBy, fields='items(id,title,parents(id),mimeType),nextPageToken')
printDriveFolderContents(feed, root_folder, 0) printDriveFolderContents(feed, root_folder, 0)
@@ -4455,7 +4455,7 @@ def deleteEmptyDriveFolders(users):
deleted_empty = True deleted_empty = True
while deleted_empty: while deleted_empty:
sys.stderr.write(f'Getting folders for {user}...\n') sys.stderr.write(f'Getting folders for {user}...\n')
page_message = ' Got %%%%total_items%%%% folders for %s...\n' % user page_message = gapi.setGotTotalItems(f'folders for {user}', '...\n')
feed = gapi.get_all_pages(drive.files(), 'list', 'items', page_message=page_message, feed = gapi.get_all_pages(drive.files(), 'list', 'items', page_message=page_message,
q=query, fields='items(title,id),nextPageToken') q=query, fields='items(title,id),nextPageToken')
deleted_empty = False deleted_empty = False
@@ -4980,7 +4980,7 @@ def transferDriveFiles(users):
source_root = source_about['rootFolderId'] source_root = source_about['rootFolderId']
source_permissionid = source_about['permissionId'] source_permissionid = source_about['permissionId']
print(f'Getting file list for source user: {user}...') print(f'Getting file list for source user: {user}...')
page_message = ' Got %%total_items%% files\n' page_message = gapi.setGotTotalItems('files', '\n')
source_drive_files = gapi.get_all_pages(source_drive.files(), 'list', 'items', page_message=page_message, source_drive_files = gapi.get_all_pages(source_drive.files(), 'list', 'items', page_message=page_message,
q="'me' in owners and trashed = false", fields='items(id,parents,mimeType),nextPageToken') q="'me' in owners and trashed = false", fields='items(id,parents,mimeType),nextPageToken')
all_source_file_ids = [] all_source_file_ids = []
@@ -4988,7 +4988,7 @@ def transferDriveFiles(users):
all_source_file_ids.append(source_drive_file['id']) all_source_file_ids.append(source_drive_file['id'])
total_count = len(source_drive_files) total_count = len(source_drive_files)
print(f'Getting folder list for target user: {target_user}...') print(f'Getting folder list for target user: {target_user}...')
page_message = ' Got %%total_items%% folders\n' page_message = gapi.setGotTotalItems('folders', '\n')
target_folders = gapi.get_all_pages(target_drive.files(), 'list', 'items', page_message=page_message, target_folders = gapi.get_all_pages(target_drive.files(), 'list', 'items', page_message=page_message,
q="'me' in owners and mimeType = 'application/vnd.google-apps.folder'", fields='items(id,title),nextPageToken') q="'me' in owners and mimeType = 'application/vnd.google-apps.folder'", fields='items(id,title),nextPageToken')
got_top_folder = False got_top_folder = False
@@ -5810,7 +5810,7 @@ def doProcessMessagesOrThreads(users, function, unit='messages'):
continue continue
print(f'Searching {unit} for {user}') print(f'Searching {unit} for {user}')
unitmethod = getattr(gmail.users(), unit) unitmethod = getattr(gmail.users(), unit)
page_message = 'Got %%%%total_items%%%% %s for user %s' % (unit, user) page_message = gapi.setGotTotalItems(f'{unit} for user {user}')
listResult = gapi.get_all_pages(unitmethod(), 'list', unit, page_message=page_message, listResult = gapi.get_all_pages(unitmethod(), 'list', unit, page_message=page_message,
userId='me', q=query, includeSpamTrash=True, soft_errors=True, fields=f'nextPageToken,{unit}(id)') userId='me', q=query, includeSpamTrash=True, soft_errors=True, fields=f'nextPageToken,{unit}(id)')
result_count = len(listResult) result_count = len(listResult)
@@ -8410,7 +8410,7 @@ def doDownloadCloudStorageBucket():
else: else:
controlflow.system_error_exit(5, 'Could not find a takeout-export-* bucket in that URL') controlflow.system_error_exit(5, 'Could not find a takeout-export-* bucket in that URL')
s = buildGAPIObject('storage') s = buildGAPIObject('storage')
page_message = 'Got %%total_items%% files...' page_message = gapi.setGotTotalItems('files', '...')
objects = gapi.get_all_pages(s.objects(), 'list', 'items', page_message=page_message, bucket=bucket, projection='noAcl', fields='nextPageToken,items(name,id,md5Hash)') objects = gapi.get_all_pages(s.objects(), 'list', 'items', page_message=page_message, bucket=bucket, projection='noAcl', fields='nextPageToken,items(name,id,md5Hash)')
i = 1 i = 1
for object_ in objects: for object_ in objects:
@@ -9425,7 +9425,7 @@ def doUpdateGroup():
group = normalizeEmailAddressOrUID(group) group = normalizeEmailAddressOrUID(group)
member_type_message = f'{roles.lower()}s' member_type_message = f'{roles.lower()}s'
sys.stderr.write(f'Getting {member_type_message} of {group} (may take some time for large groups)...\n') sys.stderr.write(f'Getting {member_type_message} of {group} (may take some time for large groups)...\n')
page_message = 'Got %%%%total_items%%%% %s...' % member_type_message page_message = gapi.setGotTotalItems(f'{member_type_message}', '...')
validRoles, listRoles, listFields = _getRoleVerification(roles, f'nextPageToken,members({",".join(fields)})') validRoles, listRoles, listFields = _getRoleVerification(roles, f'nextPageToken,members({",".join(fields)})')
try: try:
result = gapi.get_all_pages(cd.members(), 'list', 'members', result = gapi.get_all_pages(cd.members(), 'list', 'members',
@@ -9611,7 +9611,7 @@ def doUpdateMobile():
if resourceIds[:6] == 'query:': if resourceIds[:6] == 'query:':
query = resourceIds[6:] query = resourceIds[6:]
fields = 'nextPageToken,mobiledevices(resourceId,email)' fields = 'nextPageToken,mobiledevices(resourceId,email)'
page_message = 'Got %%total_items%% mobile devices...\n' page_message = gapi.setGotTotalItems('Mobile Devices', '...\n')
devices = gapi.get_all_pages(cd.mobiledevices(), 'list', devices = gapi.get_all_pages(cd.mobiledevices(), 'list',
page_message=page_message, page_message=page_message,
customerId=GC_Values[GC_CUSTOMER_ID], customerId=GC_Values[GC_CUSTOMER_ID],
@@ -10754,7 +10754,7 @@ def doGetOrgInfo(name=None, return_attrib=None):
print_json(None, result) print_json(None, result)
if get_users: if get_users:
name = result['orgUnitPath'] name = result['orgUnitPath']
page_message = 'Got %%total_items%% Users: %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('Users')
users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
message_attribute='primaryEmail', customer=GC_Values[GC_CUSTOMER_ID], query=orgUnitPathQuery(name, checkSuspended), message_attribute='primaryEmail', customer=GC_Values[GC_CUSTOMER_ID], query=orgUnitPathQuery(name, checkSuspended),
fields='users(primaryEmail,orgUnitPath),nextPageToken') fields='users(primaryEmail,orgUnitPath),nextPageToken')
@@ -11491,7 +11491,7 @@ def doPrintUsers():
fields = None fields = None
for query in queries: for query in queries:
printGettingAllItems('Users', query) printGettingAllItems('Users', query)
page_message = 'Got %%total_items%% Users: %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('Users')
all_users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, all_users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
message_attribute='primaryEmail', customer=customer, domain=domain, fields=fields, message_attribute='primaryEmail', customer=customer, domain=domain, fields=fields,
showDeleted=deleted_only, orderBy=orderBy, sortOrder=sortOrder, viewType=viewType, showDeleted=deleted_only, orderBy=orderBy, sortOrder=sortOrder, viewType=viewType,
@@ -11744,7 +11744,7 @@ def doPrintGroups():
if not ownersCountOnly: if not ownersCountOnly:
addTitlesToCSVfile(['Owners',], titles) addTitlesToCSVfile(['Owners',], titles)
printGettingAllItems('Groups', None) printGettingAllItems('Groups', None)
page_message = 'Got %%total_items%% Groups: %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('Groups')
entityList = gapi.get_all_pages(cd.groups(), 'list', 'groups', entityList = gapi.get_all_pages(cd.groups(), 'list', 'groups',
page_message=page_message, message_attribute='email', page_message=page_message, message_attribute='email',
customer=customer, domain=usedomain, userKey=usemember, query=usequery, customer=customer, domain=usedomain, userKey=usemember, query=usequery,
@@ -11763,7 +11763,7 @@ def doPrintGroups():
group[fieldsTitles[field]] = groupEntity[field] group[fieldsTitles[field]] = groupEntity[field]
if roles: if roles:
sys.stderr.write(f' Getting {roles} for {groupEmail} ({i}/{count})\n') sys.stderr.write(f' Getting {roles} for {groupEmail} ({i}/{count})\n')
page_message = ' Got %%total_items%% members: %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('members')
validRoles, listRoles, listFields = _getRoleVerification(roles, 'nextPageToken,members(email,id,role)') validRoles, listRoles, listFields = _getRoleVerification(roles, 'nextPageToken,members(email,id,role)')
groupMembers = gapi.get_all_pages(cd.members(), 'list', 'members', groupMembers = gapi.get_all_pages(cd.members(), 'list', 'members',
page_message=page_message, message_attribute='email', page_message=page_message, message_attribute='email',
@@ -11952,7 +11952,7 @@ def doPrintAliases():
if doUsers: if doUsers:
for query in queries: for query in queries:
printGettingAllItems('User Aliases', query) printGettingAllItems('User Aliases', query)
page_message = 'Got %%total_items%% Users %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('Users')
all_users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, all_users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
message_attribute='primaryEmail', customer=GC_Values[GC_CUSTOMER_ID], query=query, message_attribute='primaryEmail', customer=GC_Values[GC_CUSTOMER_ID], query=query,
fields=f'nextPageToken,users({",".join(userFields)})') fields=f'nextPageToken,users({",".join(userFields)})')
@@ -11963,7 +11963,7 @@ def doPrintAliases():
csvRows.append({'NonEditableAlias': alias, 'Target': user['primaryEmail'], 'TargetType': 'User'}) csvRows.append({'NonEditableAlias': alias, 'Target': user['primaryEmail'], 'TargetType': 'User'})
if doGroups: if doGroups:
printGettingAllItems('Group Aliases', None) printGettingAllItems('Group Aliases', None)
page_message = 'Got %%total_items%% Groups %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('Groups')
all_groups = gapi.get_all_pages(cd.groups(), 'list', 'groups', page_message=page_message, all_groups = gapi.get_all_pages(cd.groups(), 'list', 'groups', page_message=page_message,
message_attribute='email', customer=GC_Values[GC_CUSTOMER_ID], message_attribute='email', customer=GC_Values[GC_CUSTOMER_ID],
fields=f'nextPageToken,groups({",".join(groupFields)})') fields=f'nextPageToken,groups({",".join(groupFields)})')
@@ -12107,7 +12107,7 @@ def doPrintVaultMatters():
else: else:
controlflow.invalid_argument_exit(myarg, "gam print matters") controlflow.invalid_argument_exit(myarg, "gam print matters")
printGettingAllItems('Vault Matters', None) printGettingAllItems('Vault Matters', None)
page_message = 'Got %%total_items%% Vault Matters...\n' page_message = gapi.setGotTotalItems('Vault Matters', '...\n')
matters = gapi.get_all_pages(v.matters(), 'list', 'matters', page_message=page_message, view=view) matters = gapi.get_all_pages(v.matters(), 'list', 'matters', page_message=page_message, view=view)
for matter in matters: for matter in matters:
addRowTitlesToCSVfile(flatten_json(matter), csvRows, titles) addRowTitlesToCSVfile(flatten_json(matter), csvRows, titles)
@@ -12240,7 +12240,7 @@ def doPrintMobileDevices():
controlflow.invalid_argument_exit(sys.argv[i], "gam print mobile") controlflow.invalid_argument_exit(sys.argv[i], "gam print mobile")
for query in queries: for query in queries:
printGettingAllItems('Mobile Devices', query) printGettingAllItems('Mobile Devices', query)
page_message = 'Got %%total_items%% Mobile Devices...\n' page_message = gapi.setGotTotalItems('Mobile Devices', '...\n')
all_mobile = gapi.get_all_pages(cd.mobiledevices(), 'list', 'mobiledevices', page_message=page_message, all_mobile = gapi.get_all_pages(cd.mobiledevices(), 'list', 'mobiledevices', page_message=page_message,
customerId=GC_Values[GC_CUSTOMER_ID], query=query, projection=projection, fields=fields, customerId=GC_Values[GC_CUSTOMER_ID], query=query, projection=projection, fields=fields,
orderBy=orderBy, sortOrder=sortOrder) orderBy=orderBy, sortOrder=sortOrder)
@@ -12357,7 +12357,7 @@ def doPrintCrosActivity():
fields = f'nextPageToken,chromeosdevices({",".join(fieldsList)})' fields = f'nextPageToken,chromeosdevices({",".join(fieldsList)})'
for query in queries: for query in queries:
printGettingAllItems('CrOS Devices', query) printGettingAllItems('CrOS Devices', query)
page_message = 'Got %%total_items%% CrOS Devices...\n' page_message = gapi.setGotTotalItems('CrOS Devices', '...\n')
all_cros = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message, all_cros = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message,
query=query, customerId=GC_Values[GC_CUSTOMER_ID], projection='FULL', query=query, customerId=GC_Values[GC_CUSTOMER_ID], projection='FULL',
fields=fields, orgUnitPath=orgUnitPath) fields=fields, orgUnitPath=orgUnitPath)
@@ -12538,7 +12538,7 @@ def doPrintCrosDevices():
fields = None fields = None
for query in queries: for query in queries:
printGettingAllItems('CrOS Devices', query) printGettingAllItems('CrOS Devices', query)
page_message = 'Got %%total_items%% CrOS Devices...\n' page_message = gapi.setGotTotalItems('CrOS Devices', '...\n')
all_cros = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message, all_cros = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message,
query=query, customerId=GC_Values[GC_CUSTOMER_ID], projection=projection, orgUnitPath=orgUnitPath, query=query, customerId=GC_Values[GC_CUSTOMER_ID], projection=projection, orgUnitPath=orgUnitPath,
orderBy=orderBy, sortOrder=sortOrder, fields=fields) orderBy=orderBy, sortOrder=sortOrder, fields=fields)
@@ -12668,7 +12668,7 @@ def doPrintLicenses(returnFields=None, skus=None, countsOnly=False, returnCounts
product, sku = getProductAndSKU(sku) product, sku = getProductAndSKU(sku)
else: else:
product = products[0] product = products[0]
page_message = 'Got %%%%total_items%%%% Licenses for %s...\n' % SKUS.get(sku, {'displayName': sku})['displayName'] page_message = gapi.setGotTotalItems(f'Licenses for {SKUS.get(sku, {"displayName": sku})["displayName"]}', '...\n')
try: try:
licenses += gapi.get_all_pages(lic.licenseAssignments(), 'listForProductAndSku', 'items', throw_reasons=[gapi.errors.ErrorReason.INVALID, gapi.errors.ErrorReason.FORBIDDEN], page_message=page_message, licenses += gapi.get_all_pages(lic.licenseAssignments(), 'listForProductAndSku', 'items', throw_reasons=[gapi.errors.ErrorReason.INVALID, gapi.errors.ErrorReason.FORBIDDEN], page_message=page_message,
customerId=GC_Values[GC_DOMAIN], productId=product, skuId=sku, fields=fields) customerId=GC_Values[GC_DOMAIN], productId=product, skuId=sku, fields=fields)
@@ -12681,7 +12681,7 @@ def doPrintLicenses(returnFields=None, skus=None, countsOnly=False, returnCounts
if not products: if not products:
products = sorted(PRODUCTID_NAME_MAPPINGS) products = sorted(PRODUCTID_NAME_MAPPINGS)
for productId in products: for productId in products:
page_message = 'Got %%%%total_items%%%% Licenses for %s...\n' % PRODUCTID_NAME_MAPPINGS.get(productId, productId) page_message = gapi.setGotTotalItems(f'Licenses for {PRODUCTID_NAME_MAPPINGS.get(productId, productId)}', '...\n')
try: try:
licenses += gapi.get_all_pages(lic.licenseAssignments(), 'listForProduct', 'items', throw_reasons=[gapi.errors.ErrorReason.INVALID, gapi.errors.ErrorReason.FORBIDDEN], page_message=page_message, licenses += gapi.get_all_pages(lic.licenseAssignments(), 'listForProduct', 'items', throw_reasons=[gapi.errors.ErrorReason.INVALID, gapi.errors.ErrorReason.FORBIDDEN], page_message=page_message,
customerId=GC_Values[GC_DOMAIN], productId=productId, fields=fields) customerId=GC_Values[GC_DOMAIN], productId=productId, fields=fields)
@@ -12886,7 +12886,7 @@ def doPrintResourceCalendars():
if 'buildingId' in fieldsList: if 'buildingId' in fieldsList:
addFieldToCSVfile('buildingName', {'buildingName': ['buildingName',]}, fieldsList, fieldsTitles, titles) addFieldToCSVfile('buildingName', {'buildingName': ['buildingName',]}, fieldsList, fieldsTitles, titles)
printGettingAllItems('Resource Calendars', None) printGettingAllItems('Resource Calendars', None)
page_message = 'Got %%total_items%% Resource Calendars: %%first_item%% - %%last_item%%\n' page_message = gapi.setGotTotalItemsFirsLast('Resource Calendars')
resources = gapi.get_all_pages(cd.resources().calendars(), 'list', 'items', resources = gapi.get_all_pages(cd.resources().calendars(), 'list', 'items',
page_message=page_message, message_attribute='resourceId', page_message=page_message, message_attribute='resourceId',
customer=GC_Values[GC_CUSTOMER_ID], query=query, customer=GC_Values[GC_CUSTOMER_ID], query=query,
@@ -12955,7 +12955,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
page_message = None page_message = None
if not silent: if not silent:
sys.stderr.write(f'Getting {member_type_message} of {group} (may take some time for large groups)...\n') sys.stderr.write(f'Getting {member_type_message} of {group} (may take some time for large groups)...\n')
page_message = 'Got %%%%total_items%%%% %s...' % member_type_message page_message = gapi.setGotTotalItems(f'{member_type_message}', '...')
validRoles, listRoles, listFields = _getRoleVerification(member_type, 'nextPageToken,members(email,id,type,status)') validRoles, listRoles, listFields = _getRoleVerification(member_type, 'nextPageToken,members(email,id,type,status)')
members = gapi.get_all_pages(cd.members(), 'list', 'members', page_message=page_message, members = gapi.get_all_pages(cd.members(), 'list', 'members', page_message=page_message,
groupKey=group, roles=listRoles, fields=listFields) groupKey=group, roles=listRoles, fields=listFields)
@@ -12978,7 +12978,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
page_message = None page_message = None
if not silent: if not silent:
printGettingAllItems('Users', query) printGettingAllItems('Users', query)
page_message = 'Got %%total_items%% Users...' page_message = gapi.setGotTotalItems('Users', '...')
members = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, members = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
customer=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,users(primaryEmail,orgUnitPath)', customer=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,users(primaryEmail,orgUnitPath)',
query=query) query=query)
@@ -13000,7 +13000,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
page_message = None page_message = None
if not silent: if not silent:
printGettingAllItems('Users', query) printGettingAllItems('Users', query)
page_message = 'Got %%total_items%% Users...' page_message = gapi.setGotTotalItems('Users', '...')
members = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, members = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
customer=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,users(primaryEmail)', customer=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,users(primaryEmail)',
query=query) query=query)
@@ -13019,7 +13019,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
for query in queries: for query in queries:
if not silent: if not silent:
printGettingAllItems('Users', query) printGettingAllItems('Users', query)
page_message = 'Got %%total_items%% Users...' page_message = gapi.setGotTotalItems('Users', '...')
members = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, members = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
customer=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,users(primaryEmail,suspended)', customer=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,users(primaryEmail,suspended)',
query=query) query=query)
@@ -13064,14 +13064,14 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
users = [] users = []
entity = addCourseIdScope(entity) entity = addCourseIdScope(entity)
if entity_type in ['courseparticipants', 'teachers']: if entity_type in ['courseparticipants', 'teachers']:
page_message = 'Got %%total_items%% Teachers...' page_message = gapi.setGotTotalItems('Teachers', '...')
teachers = gapi.get_all_pages(croom.courses().teachers(), 'list', 'teachers', page_message=page_message, courseId=entity) teachers = gapi.get_all_pages(croom.courses().teachers(), 'list', 'teachers', page_message=page_message, courseId=entity)
for teacher in teachers: for teacher in teachers:
email = teacher['profile'].get('emailAddress', None) email = teacher['profile'].get('emailAddress', None)
if email: if email:
users.append(email) users.append(email)
if entity_type in ['courseparticipants', 'students']: if entity_type in ['courseparticipants', 'students']:
page_message = 'Got %%total_items%% Students...' page_message = gapi.setGotTotalItems('Students', '...')
students = gapi.get_all_pages(croom.courses().students(), 'list', 'students', page_message=page_message, courseId=entity) students = gapi.get_all_pages(croom.courses().students(), 'list', 'students', page_message=page_message, courseId=entity)
for student in students: for student in students:
email = student['profile'].get('emailAddress', None) email = student['profile'].get('emailAddress', None)
@@ -13085,7 +13085,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
query = 'isSuspended=False' query = 'isSuspended=False'
if not silent: if not silent:
printGettingAllItems('Users', None) printGettingAllItems('Users', None)
page_message = 'Got %%total_items%% Users...' page_message = gapi.setGotTotalItems('Users', '...')
all_users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message, all_users = gapi.get_all_pages(cd.users(), 'list', 'users', page_message=page_message,
customer=GC_Values[GC_CUSTOMER_ID], query=query, customer=GC_Values[GC_CUSTOMER_ID], query=query,
fields='nextPageToken,users(primaryEmail)') fields='nextPageToken,users(primaryEmail)')
@@ -13096,7 +13096,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
elif entity == 'cros': elif entity == 'cros':
if not silent: if not silent:
printGettingAllItems('CrOS Devices', None) printGettingAllItems('CrOS Devices', None)
page_message = 'Got %%total_items%% CrOS Devices...' page_message = gapi.setGotTotalItems('CrOS Devices', '...')
all_cros = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message, all_cros = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message,
customerId=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,chromeosdevices(deviceId)') customerId=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,chromeosdevices(deviceId)')
for member in all_cros: for member in all_cros:
@@ -13120,7 +13120,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, member_type=No
for query in queries: for query in queries:
if not silent: if not silent:
printGettingAllItems('CrOS Devices', query) printGettingAllItems('CrOS Devices', query)
page_message = 'Got %%total_items%% CrOS Devices...' page_message = gapi.setGotTotalItems('CrOS Devices', '...')
members = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message, members = gapi.get_all_pages(cd.chromeosdevices(), 'list', 'chromeosdevices', page_message=page_message,
customerId=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,chromeosdevices(deviceId)', customerId=GC_Values[GC_CUSTOMER_ID], fields='nextPageToken,chromeosdevices(deviceId)',
query=query) query=query)

View File

@@ -16,6 +16,16 @@ from var import (GM_Globals, GM_CURRENT_API_SCOPES, GM_CURRENT_API_USER,
MESSAGE_API_ACCESS_DENIED, MESSAGE_SERVICE_NOT_APPLICABLE) MESSAGE_API_ACCESS_DENIED, MESSAGE_SERVICE_NOT_APPLICABLE)
TOTAL_ITEMS_MARKER = '%%total_items%%'
FIRST_ITEM_MARKER = '%%first_item%%'
LAST_ITEM_MARKER = '%%last_item%%'
def setGotTotalItems(items, eol=''):
return f'Got {TOTAL_ITEMS_MARKER} {items}{eol}'
def setGotTotalItemsFirsLast(items):
return f'Got {TOTAL_ITEMS_MARKER} {items}: {FIRST_ITEM_MARKER} - {LAST_ITEM_MARKER}'+'\n'
def call(service, def call(service,
function, function,
silent_errors=False, silent_errors=False,
@@ -79,22 +89,17 @@ def call(service,
controlflow.wait_on_failure(n, retries, reason) controlflow.wait_on_failure(n, retries, reason)
continue continue
if soft_errors: if soft_errors:
display.print_error('{0}: {1} - {2}{3}'.format(http_status, message, display.print_error(f'{http_status}: {message} - {reason}{["", ": Giving up."][n > 1]}')
reason,
['',
': Giving up.'][n > 1]))
return None return None
controlflow.system_error_exit( controlflow.system_error_exit(
int(http_status), '{0}: {1} - {2}'.format(http_status, message, int(http_status), f'{http_status}: {message} - {reason}')
reason))
except google.auth.exceptions.RefreshError as e: except google.auth.exceptions.RefreshError as e:
handle_oauth_token_error( handle_oauth_token_error(
e, soft_errors or e, soft_errors or
errors.ErrorReason.SERVICE_NOT_AVAILABLE in throw_reasons) errors.ErrorReason.SERVICE_NOT_AVAILABLE in throw_reasons)
if errors.ErrorReason.SERVICE_NOT_AVAILABLE in throw_reasons: if errors.ErrorReason.SERVICE_NOT_AVAILABLE in throw_reasons:
raise errors.GapiServiceNotAvailableError(str(e)) raise errors.GapiServiceNotAvailableError(str(e))
display.print_error('User {0}: {1}'.format( display.print_error(f'User {GM_Globals[GM_CURRENT_API_USER]}: {str(e)}')
GM_Globals[GM_CURRENT_API_USER], str(e)))
return None return None
except ValueError as e: except ValueError as e:
if hasattr(service._http, 'cache') and service._http.cache is not None: if hasattr(service._http, 'cache') and service._http.cache is not None:
@@ -199,11 +204,11 @@ def get_all_pages(service,
page_message: String, a message to be displayed to the user during paging. page_message: String, a message to be displayed to the user during paging.
Template strings allow for dynamic content to be inserted during paging. Template strings allow for dynamic content to be inserted during paging.
Supported template strings: Supported template strings:
%%total_items%% : The current number of items discovered across all TOTAL_ITEMS_MARKER : The current number of items discovered across all
pages. pages.
%%first_item%% : In conjunction with `message_attribute` arg, will FIRST_ITEM_MARKER : In conjunction with `message_attribute` arg, will
display a unique property of the first item in the current page. display a unique property of the first item in the current page.
%%last_item%% : In conjunction with `message_attribute` arg, will LAST_ITEM_MARKER : In conjunction with `message_attribute` arg, will
display a unique property of the last item in the current page. display a unique property of the last item in the current page.
message_attribute: String, the name of a signature field within a single message_attribute: String, the name of a signature field within a single
returned item which identifies that unique item. This field is used with returned item which identifies that unique item. This field is used with
@@ -248,14 +253,12 @@ def get_all_pages(service,
# Show a paging message to the user that indicates paging progress # Show a paging message to the user that indicates paging progress
if page_message: if page_message:
show_message = page_message.replace('%%total_items%%', str(total_items)) show_message = page_message.replace(TOTAL_ITEMS_MARKER, str(total_items))
if message_attribute: if message_attribute:
first_item = page_items[0] if num_page_items > 0 else {} first_item = page_items[0] if num_page_items > 0 else {}
last_item = page_items[-1] if num_page_items > 1 else first_item last_item = page_items[-1] if num_page_items > 1 else first_item
show_message = show_message.replace( show_message = show_message.replace(FIRST_ITEM_MARKER, str(first_item.get(message_attribute, '')))
'%%first_item%%', str(first_item.get(message_attribute, ''))) show_message = show_message.replace(LAST_ITEM_MARKER, str(last_item.get(message_attribute, '')))
show_message = show_message.replace(
'%%last_item%%', str(last_item.get(message_attribute, '')))
sys.stderr.write('\r') sys.stderr.write('\r')
sys.stderr.flush() sys.stderr.flush()
sys.stderr.write(show_message) sys.stderr.write(show_message)
@@ -294,5 +297,4 @@ def handle_oauth_token_error(e, soft_errors):
19, 19,
MESSAGE_SERVICE_NOT_APPLICABLE.format( MESSAGE_SERVICE_NOT_APPLICABLE.format(
GM_Globals[GM_CURRENT_API_USER])) GM_Globals[GM_CURRENT_API_USER]))
controlflow.system_error_exit(18, controlflow.system_error_exit(18, f'Authentication Token Error - {str(e)}')
'Authentication Token Error - {0}'.format(e))

View File

@@ -354,5 +354,5 @@ def get_gapi_error_detail(e,
if 'Cyclic memberships not allowed' in message: if 'Cyclic memberships not allowed' in message:
reason = ErrorReason.CYCLIC_MEMBERSHIPS_NOT_ALLOWED.value reason = ErrorReason.CYCLIC_MEMBERSHIPS_NOT_ALLOWED.value
except KeyError: except KeyError:
reason = '{0}'.format(http_status) reason = f'{http_status}'
return (http_status, reason, message) return (http_status, reason, message)

View File

@@ -27,16 +27,13 @@ def create_http(cache=None,
Returns: Returns:
httplib2.Http with the specified options. httplib2.Http with the specified options.
""" """
tls_minimum_version = override_min_tls if override_min_tls else GC_Values[ tls_minimum_version = override_min_tls if override_min_tls else GC_Values[GC_TLS_MIN_VERSION]
GC_TLS_MIN_VERSION] tls_maximum_version = override_max_tls if override_max_tls else GC_Values[GC_TLS_MAX_VERSION]
tls_maximum_version = override_max_tls if override_max_tls else GC_Values[ return httplib2.Http(ca_certs=GC_Values[GC_CA_FILE],
GC_TLS_MAX_VERSION] tls_maximum_version=tls_maximum_version,
return httplib2.Http( tls_minimum_version=tls_minimum_version,
ca_certs=GC_Values[GC_CA_FILE], cache=cache,
tls_maximum_version=tls_maximum_version, timeout=timeout)
tls_minimum_version=tls_minimum_version,
cache=cache,
timeout=timeout)
def create_request(http=None): def create_request(http=None):
@@ -69,8 +66,7 @@ def _force_user_agent(user_agent):
if kwargs['headers'].get('user-agent'): if kwargs['headers'].get('user-agent'):
if user_agent not in kwargs['headers']['user-agent']: if user_agent not in kwargs['headers']['user-agent']:
# Save the existing user-agent header and tack on our own. # Save the existing user-agent header and tack on our own.
kwargs['headers']['user-agent'] = '%s %s' % ( kwargs['headers']['user-agent'] = f'{user_agent} {kwargs["headers"]["user-agent"]}'
user_agent, kwargs['headers']['user-agent'])
else: else:
kwargs['headers']['user-agent'] = user_agent kwargs['headers']['user-agent'] = user_agent
else: else:

View File

@@ -26,7 +26,7 @@ class _DeHTMLParser(HTMLParser):
if cp: if cp:
self.__text.append(chr(cp)) self.__text.append(chr(cp))
else: else:
self.__text.append('&' + name) self.__text.append('&'+name)
def handle_starttag(self, tag, attrs): def handle_starttag(self, tag, attrs):
if tag == 'p': if tag == 'p':
@@ -36,21 +36,20 @@ class _DeHTMLParser(HTMLParser):
elif tag == 'a': elif tag == 'a':
for attr in attrs: for attr in attrs:
if attr[0] == 'href': if attr[0] == 'href':
self.__text.append('({0}) '.format(attr[1])) self.__text.append(f'({attr[1]}) ')
break break
elif tag == 'div': elif tag == 'div':
if not attrs: if not attrs:
self.__text.append('\n') self.__text.append('\n')
elif tag in ['http:', 'https']: elif tag in {'http:', 'https'}:
self.__text.append(' ({0}//{1}) '.format(tag, attrs[0][0])) self.__text.append(f' ({tag}//{attrs[0][0]}) ')
def handle_startendtag(self, tag, attrs): def handle_startendtag(self, tag, attrs):
if tag == 'br': if tag == 'br':
self.__text.append('\n\n') self.__text.append('\n\n')
def text(self): def text(self):
return re.sub(r'\n{2}\n+', '\n\n', return re.sub(r'\n{2}\n+', '\n\n', re.sub(r'\n +', '\n', ''.join(self.__text))).strip()
re.sub(r'\n +', '\n', ''.join(self.__text))).strip()
def dehtml(text): def dehtml(text):
@@ -85,14 +84,14 @@ def formatFileSize(fileSize):
if fileSize < ONE_KILO_BYTES: if fileSize < ONE_KILO_BYTES:
return '1kb' return '1kb'
if fileSize < ONE_MEGA_BYTES: if fileSize < ONE_MEGA_BYTES:
return '{0}kb'.format(fileSize // ONE_KILO_BYTES) return f'{fileSize // ONE_KILO_BYTES}kb'
if fileSize < ONE_GIGA_BYTES: if fileSize < ONE_GIGA_BYTES:
return '{0}mb'.format(fileSize // ONE_MEGA_BYTES) return f'{fileSize // ONE_MEGA_BYTES}mb'
return '{0}gb'.format(fileSize // ONE_GIGA_BYTES) return f'{fileSize // ONE_GIGA_BYTES}gb'
def formatMilliSeconds(millis): def formatMilliSeconds(millis):
seconds, millis = divmod(millis, 1000) seconds, millis = divmod(millis, 1000)
minutes, seconds = divmod(seconds, 60) minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60) hours, minutes = divmod(minutes, 60)
return '%02d:%02d:%02d' % (hours, minutes, seconds) return f'{hours:02d}:{minutes:02d}:{seconds:02d}'