diff --git a/program/services.py b/program/services.py index 255d1b4513527c18c024a7829aac93a548870cef..baba59fa17f5cf17b42d26b10c0c9f2b5b3edb7f 100644 --- a/program/services.py +++ b/program/services.py @@ -745,13 +745,15 @@ def generate_program_entries( start = timezone.now() if end is None: end = start + timedelta(days=1) + + queryset = queryset.order_by("start") # Find all timeslots that # * have started before the specified start value but end after it # * or end after the specified end value but start before it - queryset = queryset.filter(end__gt=start, start__lt=end).order_by("start") + timeslots = queryset.filter(end__gt=start, start__lt=end) if not include_virtual: - yield from (create_timeslot_entry(timeslot) for timeslot in queryset) + yield from (create_timeslot_entry(timeslot) for timeslot in timeslots) return # Program entries that are not based on scheduled timeslots are generated using the fallback @@ -760,7 +762,7 @@ def generate_program_entries( entry_start = start timeslot: TimeSlot - for timeslot in queryset: + for timeslot in timeslots: if timeslot.start > entry_start: yield create_entry(entry_start, timeslot.start, fallback_show) yield create_timeslot_entry(timeslot)