Merge pull request #250 from taers232c/branch-3.63

Clean up gam print guardians
This commit is contained in:
Jay Lee
2016-08-27 12:37:04 +00:00
committed by GitHub
2 changed files with 43 additions and 41 deletions

View File

@ -647,7 +647,8 @@ gam print course-participants [todrive](course <CourseID>)* [teacher] [student]
gam create guardian|guardianinvite|inviteguardian <EmailAddress> <UserItem> gam create guardian|guardianinvite|inviteguardian <EmailAddress> <UserItem>
gam delete guardian|guardians <GuardianID <UserItem> gam delete guardian|guardians <GuardianID <UserItem>
gam print guardian|guardians [nocsv] [todrive] [invitedguardian <GuardianID>] [student <UserItem>] [invitations] [states <GuardianStateList>] [<UserTypeEntity>] gam show guardian|guardians [invitedguardian <GuardianID>] [student <UserItem>] [invitations] [states <GuardianStateList>] [<UserTypeEntity>]
gam print guardian|guardians [todrive] [invitedguardian <GuardianID>] [student <UserItem>] [invitations] [states <GuardianStateList>] [<UserTypeEntity>]
gam printer register gam printer register
gam update printer <PrinterID> <PrinterAttributes>+ gam update printer <PrinterID> <PrinterAttributes>+

View File

@ -2282,72 +2282,71 @@ def doGetDataTransferInfo():
print u' None' print u' None'
print print
def doPrintGuardians(): def doPrintShowGuardians(csvFormat):
croom = buildGAPIObject(u'classroom') croom = buildGAPIObject(u'classroom')
invitedEmailAddress = None invitedEmailAddress = None
studentIds = [u'-',] studentIds = [u'-',]
states = None states = None
service = croom.userProfiles().guardians() service = croom.userProfiles().guardians()
items = u'guardians' items = u'guardians'
guardians = [] itemName = 'Guardians'
show_csv = True if csvFormat:
csvRows = [] csvRows = []
todrive = False todrive = False
titles = [] titles = [u'studentEmail', u'studentId', u'invitedEmailAddress', u'guardianId']
i = 3 i = 3
while i < len(sys.argv): while i < len(sys.argv):
if sys.argv[i].lower() == u'invitedguardian': myarg = sys.argv[i].lower()
invitedEmailAddress = sys.argv[i+1] if csvFormat and myarg == u'todrive':
i += 2
elif sys.argv[i].lower() == u'nocsv':
show_csv = False
i += 1
elif sys.argv[i].lower() == u'todrive':
todrive = True todrive = True
i += 1 i += 1
elif sys.argv[i].lower() == u'student': elif myarg == u'invitedguardian':
invitedEmailAddress = sys.argv[i+1]
i += 2
elif myarg == u'student':
studentIds = [sys.argv[i+1],] studentIds = [sys.argv[i+1],]
i += 2 i += 2
elif sys.argv[i].lower() == u'invitations': elif myarg == u'invitations':
service = croom.userProfiles().guardianInvitations() service = croom.userProfiles().guardianInvitations()
items = u'guardianInvitations' items = u'guardianInvitations'
itemName = 'Guardian Invitations'
titles = [u'studentEmail', u'studentId', u'invitedEmailAddress', u'invitationId']
if states == None: if states == None:
states = [u'COMPLETE', u'PENDING', u'GUARDIAN_INVITATION_STATE_UNSPECIFIED'] states = [u'COMPLETE', u'PENDING', u'GUARDIAN_INVITATION_STATE_UNSPECIFIED']
i += 1 i += 1
elif sys.argv[i].lower() == u'states': elif myarg == u'states':
states = sys.argv[i+1].upper().replace(u',', u' ').split() states = sys.argv[i+1].upper().replace(u',', u' ').split()
i += 2 i += 2
elif sys.argv[i].lower() in usergroup_types: elif myarg in usergroup_types:
studentIds = getUsersToModify(entity_type=sys.argv[i], entity=sys.argv[i+1]) studentIds = getUsersToModify(entity_type=myarg, entity=sys.argv[i+1])
i += 2 i += 2
else: else:
print u'ERROR: %s is not a valid argument for "gam print guardians"' % sys.argv[i] print u'ERROR: %s is not a valid argument for "gam %s guardians"' % (sys.argv[i], [u'show', u'print'][csvFormat])
sys.exit(2) sys.exit(2)
n = 1 i = 0
count = len(studentIds)
for studentId in studentIds: for studentId in studentIds:
i += 1
kwargs = {u'invitedEmailAddress': invitedEmailAddress, u'studentId': studentId} kwargs = {u'invitedEmailAddress': invitedEmailAddress, u'studentId': studentId}
if items == u'guardianInvitations': if items == u'guardianInvitations':
kwargs[u'states'] = states kwargs[u'states'] = states
if studentId != u'-': if studentId != u'-':
sys.stderr.write('\r') if csvFormat:
sys.stderr.flush() sys.stderr.write('\r')
sys.stderr.write(u'Getting guardians for %s (%s/%s)%s' % (studentId, n, len(studentIds), u' ' * 40)) sys.stderr.flush()
student_guardians = callGAPIpages(service, u'list', items=items, soft_errors=True, **kwargs) sys.stderr.write(u'Getting %s for %s%s%s' % (itemName, studentId, currentCount(i, count), u' ' * 40))
# add student email to results since API does not return it guardians = callGAPIpages(service, u'list', items=items, soft_errors=True, **kwargs)
i = 0 if not csvFormat:
while i < len(student_guardians): print u'Student: {0}, {1}:{2}'.format(studentId, itemName, currentCount(i, count))
student_guardians[i][u'studentEmail'] = studentId for guardian in guardians:
i += 1 print_json(None, guardian, spacing=u' ')
guardians = guardians + student_guardians else:
n += 1 for guardian in guardians:
sys.stderr.write(u'\n') guardian[u'studentEmail'] = studentId
if show_csv: addRowTitlesToCSVfile(flatten_json(guardian), csvRows, titles)
for guardian in guardians: if csvFormat:
addRowTitlesToCSVfile(flatten_json(guardian), csvRows, titles) sys.stderr.write(u'\n')
writeCSVfile(csvRows, titles, u'Guardians', todrive) writeCSVfile(csvRows, titles, itemName, todrive)
else:
for guardian in guardians:
print_json(None, guardian)
def doInviteGuardian(): def doInviteGuardian():
croom = buildGAPIObject(u'classroom') croom = buildGAPIObject(u'classroom')
@ -10817,7 +10816,7 @@ def ProcessGAMCommand(args):
elif argument in [u'roles', u'adminroles']: elif argument in [u'roles', u'adminroles']:
doPrintAdminRoles() doPrintAdminRoles()
elif argument in [u'guardian', u'guardians']: elif argument in [u'guardian', u'guardians']:
doPrintGuardians() doPrintShowGuardians(True)
else: else:
print u'ERROR: %s is not a valid argument for "gam print"' % argument print u'ERROR: %s is not a valid argument for "gam print"' % argument
sys.exit(2) sys.exit(2)
@ -10826,6 +10825,8 @@ def ProcessGAMCommand(args):
argument = sys.argv[2].lower() argument = sys.argv[2].lower()
if argument in [u'schema', u'schemas']: if argument in [u'schema', u'schemas']:
doPrintShowUserSchemas(False) doPrintShowUserSchemas(False)
elif argument in [u'guardian', u'guardians']:
doPrintShowGuardians(False)
else: else:
print u'ERROR: %s is not a valid argument for "gam show"' % argument print u'ERROR: %s is not a valid argument for "gam show"' % argument
sys.exit(2) sys.exit(2)