Add owneremail option to print courses (#757)

This commit is contained in:
Ross Scroggs
2018-08-02 16:04:56 -07:00
committed by Jay Lee
parent 468928a2e6
commit 135ea0f120
2 changed files with 17 additions and 7 deletions

View File

@ -64,7 +64,7 @@ If an item contains spaces, it should be surrounded by ".
Google-Coordinate| Google-Coordinate|
Google-Drive-storage| Google-Drive-storage|
Google-Vault| Google-Vault|
101031 101001|101005|101031
<SKUID> ::= <SKUID> ::=
cloudidentity|identity|1010010001| cloudidentity|identity|1010010001|
cloudidentitypremium|identitypremium|1010050001| cloudidentitypremium|identitypremium|1010050001|
@ -1013,8 +1013,9 @@ gam create course id|alias <CourseAlias> <CourseAttributes>*
gam update course <CourseID> <CourseAttributes>+ gam update course <CourseID> <CourseAttributes>+
gam delete course <CourseID> gam delete course <CourseID>
gam info course <CourseID> gam info course <CourseID>
gam print courses [todrive] [teacher <UserItem>] [student <UserItem>] [states <CourseStateList>] [alias|aliases] [delimiter <Character>] gam print courses [todrive] [teacher <UserItem>] [student <UserItem>] [states <CourseStateList>]
[show all|students|teachers] [countsonly] [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>] [owneremail] [alias|aliases] [delimiter <Character>] [show all|students|teachers] [countsonly]
[fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>]
gam course <CourseID> add alias <CourseAlias> gam course <CourseID> add alias <CourseAlias>
gam course <CourseID> delete alias <CourseAlias> gam course <CourseID> delete alias <CourseAlias>

View File

@ -2493,11 +2493,9 @@ def doPrintCourses():
skipFieldsList = [] skipFieldsList = []
titles = [u'id',] titles = [u'id',]
csvRows = [] csvRows = []
teacherId = None ownerEmails = studentId = teacherId = None
studentId = None
courseStates = [] courseStates = []
showAliases = False countsOnly = showAliases = False
countsOnly = False
delimiter = u' ' delimiter = u' '
showMembers = u'' showMembers = u''
i = 3 i = 3
@ -2537,13 +2535,24 @@ def doPrintCourses():
elif myarg == u'skipfields': elif myarg == u'skipfields':
_processFieldsList(myarg, i, skipFieldsList) _processFieldsList(myarg, i, skipFieldsList)
i += 2 i += 2
elif myarg == u'owneremail':
ownerEmails = {}
cd = buildGAPIObject(u'directory')
i += 1
else: else:
systemErrorExit(2, '%s is not a valid argument for "gam print courses"' % sys.argv[i]) 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 fields = u'nextPageToken,courses({0})'.format(u','.join(set(fieldsList))) if fieldsList else None
printGettingAllItems(u'Courses', None) printGettingAllItems(u'Courses', None)
page_message = u'Got %%num_items%% Courses...\n' 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) 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: 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: for field in skipFieldsList:
course.pop(field, None) course.pop(field, None)
addRowTitlesToCSVfile(flatten_json(course), csvRows, titles) addRowTitlesToCSVfile(flatten_json(course), csvRows, titles)