@@ -157,11 +157,17 @@ def current_assignment_info(course: Course, now) -> tuple[str, dict | None]:
157157 return "Last assignment" , assignments [- 1 ]
158158
159159
160- def add_course_homepage_info (course : Course , now ) -> None :
160+ def add_course_homepage_info (
161+ course : Course ,
162+ now ,
163+ enrolled_course_ids : set [int ] | None = None ,
164+ ) -> None :
161165 today = timezone .localdate (now )
166+ enrolled_course_ids = enrolled_course_ids or set ()
162167
163168 course .home_outcome = get_course_outcome (course )
164169 course .home_year = course_year (course )
170+ course .home_is_enrolled = course .id in enrolled_course_ids
165171 course .home_duration_label = course_duration_label (course )
166172 course .home_registration_open = (
167173 bool (course .registration_url )
@@ -176,6 +182,16 @@ def add_course_homepage_info(course: Course, now) -> None:
176182
177183def course_list (request ):
178184 now = timezone .now ()
185+ enrolled_course_ids = set ()
186+
187+ if request .user .is_authenticated :
188+ enrolled_course_ids = set (
189+ Enrollment .objects .filter (student = request .user ).values_list (
190+ "course_id" ,
191+ flat = True ,
192+ )
193+ )
194+
179195 courses = (
180196 Course .objects .filter (visible = True )
181197 .annotate (
@@ -192,7 +208,7 @@ def course_list(request):
192208 archive_courses_by_year = defaultdict (list )
193209
194210 for course in courses :
195- add_course_homepage_info (course , now )
211+ add_course_homepage_info (course , now , enrolled_course_ids )
196212
197213 if course .finished :
198214 finished_courses .append (course )
0 commit comments