Merge pull request #3621 from edx/han/cert-report
Added totals for different student tracks
This commit is contained in:
@@ -61,11 +61,23 @@ class Command(BaseCommand):
|
||||
# find students who are active
|
||||
# enrolled students are always downloable + notpassing
|
||||
print "Looking up certificate states for {0}".format(course_id)
|
||||
active_students = User.objects.filter(
|
||||
enrolled_current = User.objects.filter(
|
||||
courseenrollment__course_id=course_id,
|
||||
courseenrollment__is_active=True)
|
||||
enrolled_total = User.objects.filter(
|
||||
courseenrollment__course_id=course_id)
|
||||
verified_enrolled = GeneratedCertificate.objects.filter(
|
||||
course_id__exact=course_id, mode__exact='verified')
|
||||
honor_enrolled = GeneratedCertificate.objects.filter(
|
||||
course_id__exact=course_id, mode__exact='honor')
|
||||
audit_enrolled = GeneratedCertificate.objects.filter(
|
||||
course_id__exact=course_id, mode__exact='audit')
|
||||
|
||||
cert_data[course_id] = {'active': active_students.count()}
|
||||
cert_data[course_id] = {'enrolled_current': enrolled_current.count(),
|
||||
'enrolled_total': enrolled_total.count(),
|
||||
'verified_enrolled': verified_enrolled.count(),
|
||||
'honor_enrolled': honor_enrolled.count(),
|
||||
'audit_enrolled': audit_enrolled.count()}
|
||||
|
||||
status_tally = GeneratedCertificate.objects.filter(
|
||||
course_id__exact=course_id).values('status').annotate(
|
||||
@@ -83,21 +95,21 @@ class Command(BaseCommand):
|
||||
for mode in mode_tally})
|
||||
|
||||
# all states we have seen far all courses
|
||||
status_headings = set(
|
||||
status_headings = sorted(set(
|
||||
[status for course in cert_data
|
||||
for status in cert_data[course]])
|
||||
for status in cert_data[course]]))
|
||||
|
||||
# print the heading for the report
|
||||
print "{:>20}".format("course ID"),
|
||||
print ' '.join(["{:>12}".format(heading)
|
||||
print "{:>26}".format("course ID"),
|
||||
print ' '.join(["{:>16}".format(heading)
|
||||
for heading in status_headings])
|
||||
|
||||
# print the report
|
||||
for course_id in cert_data:
|
||||
print "{0:>20}".format(course_id[0:18]),
|
||||
print "{0:>26}".format(course_id[0:24]),
|
||||
for heading in status_headings:
|
||||
if heading in cert_data[course_id]:
|
||||
print "{:>12}".format(cert_data[course_id][heading]),
|
||||
print "{:>16}".format(cert_data[course_id][heading]),
|
||||
else:
|
||||
print " " * 12,
|
||||
print " " * 16,
|
||||
print
|
||||
|
||||
Reference in New Issue
Block a user