|
41 | 41 | from django.conf import settings
|
42 | 42 | from django.db import models
|
43 | 43 | from django.db.models.query import Q
|
44 |
| -from django.db.models import signals |
| 44 | +from django.db.models import signals, Sum |
45 | 45 | from django.db.models.manager import Manager
|
46 | 46 | from django.utils.datastructures import SortedDict
|
47 | 47 | from django.template.loader import render_to_string
|
@@ -209,20 +209,18 @@ def catalog_cached(self, program, ts=None, force_all=False, initial_queryset=Non
|
209 | 209 |
|
210 | 210 | if ts is not None:
|
211 | 211 | classes = classes.filter(sections__meeting_times=ts)
|
| 212 | + |
| 213 | + classes = classes.annotate(_num_students=Sum('sections__enrolled_students')) |
212 | 214 |
|
213 | 215 | # Retrieve the content type for finding class documents (generic relation)
|
214 | 216 | content_type_id = ContentType.objects.get_for_model(ClassSubject).id
|
215 | 217 |
|
216 |
| - select = SortedDict([( '_num_students', 'SELECT COUNT(DISTINCT "program_studentregistration"."user_id") FROM "program_studentregistration", "program_classsection" WHERE ("program_studentregistration"."relationship_id" = %s AND "program_studentregistration"."section_id" = "program_classsection"."id" AND "program_classsection"."parent_class_id" = "program_class"."id" AND ("program_studentregistration"."start_date" IS NULL OR "program_studentregistration"."start_date" <= %s) AND ("program_studentregistration"."end_date" IS NULL OR "program_studentregistration"."end_date" >= %s))'), |
217 |
| - ('teacher_ids', 'SELECT list(DISTINCT espuser_id) FROM program_class_teachers Where program_class_teachers.classsubject_id=program_class.id'), |
| 218 | + select = SortedDict([('teacher_ids', 'SELECT list(DISTINCT espuser_id) FROM program_class_teachers Where program_class_teachers.classsubject_id=program_class.id'), |
218 | 219 | ('media_count', 'SELECT COUNT(*) FROM "qsdmedia_media" WHERE ("qsdmedia_media"."owner_id" = "program_class"."id") AND ("qsdmedia_media"."owner_type_id" = %s)'),
|
219 | 220 | ('_index_qsd', 'SELECT list("qsd_quasistaticdata"."id") FROM "qsd_quasistaticdata" WHERE ("qsd_quasistaticdata"."name" = \'learn:index\' AND "qsd_quasistaticdata"."url" LIKE %s AND "qsd_quasistaticdata"."url" SIMILAR TO %s || "program_class"."id" || %s)'),
|
220 | 221 | ('_studentapps_count', 'SELECT COUNT(*) FROM "program_studentappquestion" WHERE ("program_studentappquestion"."subject_id" = "program_class"."id")')])
|
221 | 222 |
|
222 |
| - select_params = [ enrolled_type.id, |
223 |
| - now, |
224 |
| - now, |
225 |
| - content_type_id, |
| 223 | + select_params = [ content_type_id, |
226 | 224 | '%/Classes/%',
|
227 | 225 | '%[A-Z]',
|
228 | 226 | '/%',
|
|
0 commit comments