From 135ea0f120724b345f5c5d642a6ac0cd16d1a68e Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Thu, 2 Aug 2018 16:04:56 -0700 Subject: [PATCH] Add owneremail option to print courses (#757) --- src/GamCommands.txt | 7 ++++--- src/gam.py | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/GamCommands.txt b/src/GamCommands.txt index 87d621e3..d4be9d21 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -64,7 +64,7 @@ If an item contains spaces, it should be surrounded by ". Google-Coordinate| Google-Drive-storage| Google-Vault| - 101031 + 101001|101005|101031 ::= cloudidentity|identity|1010010001| cloudidentitypremium|identitypremium|1010050001| @@ -1013,8 +1013,9 @@ gam create course id|alias * gam update course + gam delete course gam info course -gam print courses [todrive] [teacher ] [student ] [states ] [alias|aliases] [delimiter ] - [show all|students|teachers] [countsonly] [fields ] [skipfields ] +gam print courses [todrive] [teacher ] [student ] [states ] + [owneremail] [alias|aliases] [delimiter ] [show all|students|teachers] [countsonly] + [fields ] [skipfields ] gam course add alias gam course delete alias diff --git a/src/gam.py b/src/gam.py index 4172e697..9b16cdb1 100755 --- a/src/gam.py +++ b/src/gam.py @@ -2493,11 +2493,9 @@ def doPrintCourses(): skipFieldsList = [] titles = [u'id',] csvRows = [] - teacherId = None - studentId = None + ownerEmails = studentId = teacherId = None courseStates = [] - showAliases = False - countsOnly = False + countsOnly = showAliases = False delimiter = u' ' showMembers = u'' i = 3 @@ -2537,13 +2535,24 @@ def doPrintCourses(): elif myarg == u'skipfields': _processFieldsList(myarg, i, skipFieldsList) i += 2 + elif myarg == u'owneremail': + ownerEmails = {} + cd = buildGAPIObject(u'directory') + i += 1 else: systemErrorExit(2, '%s is not a valid argument for "gam print courses"' % sys.argv[i]) + if ownerEmails is not None and fieldsList: + fieldsList.append(u'ownerId') fields = u'nextPageToken,courses({0})'.format(u','.join(set(fieldsList))) if fieldsList else None printGettingAllItems(u'Courses', None) page_message = u'Got %%num_items%% Courses...\n' all_courses = callGAPIpages(croom.courses(), u'list', u'courses', page_message=page_message, teacherId=teacherId, studentId=studentId, courseStates=courseStates, fields=fields) for course in all_courses: + if ownerEmails is not None: + ownerId = course[u'ownerId'] + if ownerId not in ownerEmails: + ownerEmails[ownerId] = convertUIDtoEmailAddress(u'uid:%s' % ownerId, cd=cd) + course[u'ownerEmail'] = ownerEmails[ownerId] for field in skipFieldsList: course.pop(field, None) addRowTitlesToCSVfile(flatten_json(course), csvRows, titles)