From c44dd5c5ea8cc9f8aa78a17a50f5849cc94b69c7 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 15 Jul 2020 13:08:55 +0000 Subject: [PATCH] Added support for a meeting session order_number (denoting first session for this group in the meeting, second session, etc.) when filling in URL templates with session info using the 'format' filter. Used for the Meetecho video straming url for a session. - Legacy-Id: 18174 --- ietf/meeting/helpers.py | 3 +++ ietf/meeting/models.py | 6 ++++++ ietf/utils/templatetags/textfilters.py | 8 ++++---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py index 8fb35bf22..83f4f4368 100644 --- a/ietf/meeting/helpers.py +++ b/ietf/meeting/helpers.py @@ -195,6 +195,7 @@ def preprocess_assignments_for_agenda(assignments_queryset, meeting, extra_prefe for a in assignments: if a.session: a.session.historic_group = None + a.session.order_number = None if a.session.group and a.session.group not in groups: groups.append(a.session.group) @@ -212,6 +213,8 @@ def preprocess_assignments_for_agenda(assignments_queryset, meeting, extra_prefe if a.session.historic_group.parent_id: parent_id_set.add(a.session.historic_group.parent_id) + a.session.order_number = a.session.order_in_meeting() + parents = Group.objects.filter(pk__in=parent_id_set) parent_replacements = find_history_replacements_active_at(parents, meeting_time) diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index dd9ac7458..b9e36c255 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -1004,6 +1004,12 @@ class Session(models.Model): else: return [self] + def order_in_meeting(self): + if not hasattr(self, '_order_in_meeting'): + session_list = self.all_meeting_sessions_for_group() + self._order_in_meeting = session_list.index(self) + 1 + return self._order_in_meeting + def all_meeting_sessions_cancelled(self): return set(s.current_status for s in self.all_meeting_sessions_for_group()) == {'canceled'} diff --git a/ietf/utils/templatetags/textfilters.py b/ietf/utils/templatetags/textfilters.py index fed4144c7..87b4cbe02 100644 --- a/ietf/utils/templatetags/textfilters.py +++ b/ietf/utils/templatetags/textfilters.py @@ -31,10 +31,10 @@ def xslugify(value): @stringfilter def format(format, values): if not isinstance(values, dict): - tmp = {} - for f in values._meta.fields: - tmp[f.name] = getattr(values, f.name) - values = tmp + obj = values + values = obj.__dict__ + for f in obj._meta.fields: + values[f.name] = getattr(obj, f.name) return format.format(**values) # ----------------------------------------------------------------------