Add countsonly option to gam print courses to get student/teacher counts without full profiles (#473)

* Add countsonly option to gam print courses

* When countsonly is true, only get ids, not full profile

* Update documentation
This commit is contained in:
Ross Scroggs
2017-04-03 12:21:00 -07:00
committed by Jay Lee
parent 39193ae92f
commit 38b6fd213f
2 changed files with 38 additions and 9 deletions

View File

@ -2064,6 +2064,8 @@ def doPrintCourses():
jcount = len(participants)
course[role] = jcount
addTitlesToCSVfile([role], titles)
if countsOnly:
return
j = 0
for member in participants:
memberTitles = []
@ -2096,6 +2098,7 @@ def doPrintCourses():
teacherId = None
studentId = None
showAliases = False
countsOnly = False
delimiter = u' '
showMembers = u''
i = 3
@ -2113,6 +2116,9 @@ def doPrintCourses():
elif myarg in [u'alias', u'aliases']:
showAliases = True
i += 1
elif myarg == u'countsonly':
countsOnly = True
i += 1
elif myarg == u'delimiter':
delimiter = sys.argv[i+1]
i += 2
@ -2144,6 +2150,13 @@ def doPrintCourses():
if showAliases or showMembers:
if showAliases:
titles.append(u'Aliases')
if showMembers:
if countsOnly:
teachersFields = u'nextPageToken,teachers(profile(id))'
studentsFields = u'nextPageToken,students(profile(id))'
else:
teachersFields = u'nextPageToken,teachers(profile)'
studentsFields = u'nextPageToken,students(profile)'
i = 0
count = len(csvRows)
for course in csvRows:
@ -2160,13 +2173,13 @@ def doPrintCourses():
teacher_message = u' got %%%%num_items%%%% teachers for course %s%s' % (courseId, currentCount(i, count))
results = callGAPIpages(croom.courses().teachers(), u'list', u'teachers',
page_message=teacher_message,
courseId=courseId, fields=u'nextPageToken,teachers(profile)')
courseId=courseId, fields=teachersFields)
_saveParticipants(course, results, u'teachers')
if showMembers != u'teachers':
student_message = u' got %%%%num_items%%%% students for course %s%s' % (courseId, currentCount(i, count))
results = callGAPIpages(croom.courses().students(), u'list', u'students',
page_message=student_message,
courseId=courseId, fields=u'nextPageToken,students(profile)')
courseId=courseId, fields=studentsFields)
_saveParticipants(course, results, u'students')
sortCSVTitles([u'id', u'name'], titles)
writeCSVfile(csvRows, titles, u'Courses', todrive)