25 lines
826 B
Python
25 lines
826 B
Python
from assignments.models import Assignment
|
|
from django.db.models import Q, Count
|
|
|
|
"""
|
|
Get all assignments, evaluate all submissions and final (=shared) submissions and sort them by Topic and Module
|
|
|
|
todo: make this a Django command
|
|
"""
|
|
num_final = Count('submissions', filter=Q(submissions__final=True))
|
|
num_submissions = Count('submissions')
|
|
assignments=Assignment.objects.annotate(num_submissions=num_submissions).annotate(num_final=num_final).select_related('module').order_by('module')
|
|
|
|
topics = {}
|
|
for a in assignments:
|
|
topic = a.module.get_parent()
|
|
topic_title = topic.title
|
|
if topic_title not in topics:
|
|
topics[topic_title] = []
|
|
topics[topic_title].append(f'{a.module},{a.title},{a.num_final},{a.num_submissions}')
|
|
|
|
for t, value in topics.items():
|
|
for e in value:
|
|
print(f'{t},{e}')
|
|
|