@@ -666,9 +666,12 @@ def filter_by_time(cls, days=None, start_time=None, end_time=None):
666
666
"""Filter courses by available times."""
667
667
query = cls .objects .all ()
668
668
669
+ # Get the latest semester
670
+ current_semester = Semester .latest ()
671
+
672
+ section_conditions = Q (section__semester = current_semester )
673
+
669
674
if days :
670
- # Get the latest semester
671
- current_semester = Semester .latest ()
672
675
673
676
# Map day codes to field names
674
677
day_map = {
@@ -680,21 +683,18 @@ def filter_by_time(cls, days=None, start_time=None, end_time=None):
680
683
}
681
684
682
685
# Get unavailable days
683
- unavailable_days = {day_map [d ] for d in days if d in day_map } # {monday, wednesday}
686
+ unavailable_days = {day_map [d ] for d in days if d in day_map }
684
687
685
688
# Filter for sections that don't meet on unavailable days
686
- section_conditions = Q (section__semester = current_semester )
687
-
688
689
for day in unavailable_days :
689
690
section_conditions &= Q (** {f"section__sectiontime__{ day } " : False })
690
691
691
- if start_time :
692
- section_conditions &= Q (section__sectiontime__start_time__gte = start_time )
693
- if end_time :
694
- section_conditions &= Q (section__sectiontime__end_time__lte = end_time )
695
-
696
- query = query .filter (section_conditions )
692
+ if start_time :
693
+ section_conditions &= Q (section__sectiontime__start_time__gte = start_time )
694
+ if end_time :
695
+ section_conditions &= Q (section__sectiontime__end_time__lte = end_time )
697
696
697
+ query = query .filter (section_conditions )
698
698
return query .distinct ()
699
699
700
700
class Meta :
0 commit comments