From 3c191909ca36db0bdc53471947fed995e4715b28 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 21 Oct 2022 11:04:27 -0500 Subject: [PATCH] fix: stable and correct ordering of agenda items (#4621) * fix: align session sorting across functions * fix: sessions of a group can have different types --- ietf/meeting/models.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 0265dad4c..f7b72070d 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -1105,8 +1105,18 @@ class Session(models.Model): from ietf.meeting.utils import add_event_info_to_session_qs if self.group.features.has_meetings: if not hasattr(self, "_all_meeting_sessions_for_group_cache"): - sessions = [s for s in add_event_info_to_session_qs(self.meeting.session_set.filter(group=self.group,type=self.type)) if s.official_timeslotassignment()] - self._all_meeting_sessions_for_group_cache = sorted(sessions, key = lambda x: x.official_timeslotassignment().timeslot.time) + sessions = [s for s in add_event_info_to_session_qs(self.meeting.session_set.filter(group=self.group)) if s.official_timeslotassignment()] + for s in sessions: + s.ota = s.official_timeslotassignment() + # Align this sort with SchedTimeSessAssignment default sort order since many views base their order on that + self._all_meeting_sessions_for_group_cache = sorted( + sessions, key = lambda x: ( + x.ota.timeslot.time, + x.ota.timeslot.type.slug, + x.ota.session.group.parent.name if x.ota.session.group.parent else None, + x.ota.session.name + ) + ) return self._all_meeting_sessions_for_group_cache else: return [self]