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
This commit is contained in:
Henrik Levkowetz 2020-07-15 13:08:55 +00:00
parent 0d0db4b154
commit c44dd5c5ea
3 changed files with 13 additions and 4 deletions

View file

@ -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)

View file

@ -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'}

View file

@ -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)
# ----------------------------------------------------------------------