Skip to content

Commit 09259ae

Browse files
committed
Merged in [12393] from rjsparks@nostrum.com:
Fixed bug where slides from multiple sessions for a group were not all showing. Improved handling of multiple minutes and agendas for groups. Fixes ietf-tools#2058. Commit should be patched into production. - Legacy-Id: 12395 Note: SVN reference [12393] has been migrated to Git commit 2b0ec6d
2 parents e8eacdc + 2b0ec6d commit 09259ae

3 files changed

Lines changed: 71 additions & 19 deletions

File tree

ietf/meeting/models.py

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,32 +1045,60 @@ def drafts(self):
10451045
return list(self.materials.filter(type='draft'))
10461046

10471047
def all_meeting_sessions_for_group(self):
1048-
if not hasattr(self, "_all_meeting_sessions_for_group_cache"):
1049-
assignments = self.timeslotassignments.filter(schedule_id=self.meeting.agenda_id).order_by('timeslot__time')
1050-
self._all_meeting_sessions_for_group_cache = [ a.session for a in assignments ]
1051-
return self._all_meeting_sessions_for_group_cache
1048+
if self.group.type_id in ['wg','rg']:
1049+
if not hasattr(self, "_all_meeting_sessions_for_group_cache"):
1050+
sessions = [s for s in self.meeting.session_set.filter(group=self.group,type=self.type) if s.official_timeslotassignment()]
1051+
self._all_meeting_sessions_for_group_cache = sorted(sessions, key = lambda x: x.official_timeslotassignment().timeslot.time)
1052+
return self._all_meeting_sessions_for_group_cache
1053+
else:
1054+
return [self]
10521055

10531056
def all_meeting_recordings(self):
1054-
recordings = []
1057+
recordings = [] # These are not sets because we need to preserve relative ordering or redo the ordering work later
10551058
sessions = self.all_meeting_sessions_for_group()
10561059
for session in sessions:
1057-
recordings.extend(session.recordings())
1060+
recordings.extend([r for r in session.recordings() if r not in recordings])
10581061
return recordings
10591062

10601063
def all_meeting_bluesheets(self):
10611064
bluesheets = []
10621065
sessions = self.all_meeting_sessions_for_group()
10631066
for session in sessions:
1064-
bluesheets.extend(session.bluesheets())
1067+
bluesheets.extend([b for b in session.bluesheets() if b not in bluesheets])
10651068
return bluesheets
10661069

10671070
def all_meeting_drafts(self):
10681071
drafts = []
10691072
sessions = self.all_meeting_sessions_for_group()
10701073
for session in sessions:
1071-
drafts.extend(session.drafts())
1074+
drafts.extend([d for d in session.drafts() if d not in drafts])
10721075
return drafts
10731076

1077+
def all_meeting_agendas(self):
1078+
agendas = []
1079+
sessions = self.all_meeting_sessions_for_group()
1080+
for session in sessions:
1081+
agenda = session.agenda()
1082+
if agenda and agenda not in agendas:
1083+
agendas.append(agenda)
1084+
return agendas
1085+
1086+
def all_meeting_slides(self):
1087+
slides = []
1088+
sessions = self.all_meeting_sessions_for_group()
1089+
for session in sessions:
1090+
slides.extend([s for s in session.slides() if s not in slides])
1091+
return slides
1092+
1093+
def all_meeting_minutes(self):
1094+
minutes = []
1095+
sessions = self.all_meeting_sessions_for_group()
1096+
for session in sessions:
1097+
minutes_doc = session.minutes()
1098+
if minutes_doc and minutes_doc not in minutes:
1099+
minutes.append(minutes_doc)
1100+
return minutes
1101+
10741102
def can_manage_materials(self, user):
10751103
return can_manage_materials(user,self.group)
10761104

ietf/templates/meeting/group_materials.html

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,39 @@
2525
{% endif %}
2626
{% else %}
2727
<td>
28-
{% if session.agenda %}
29-
<a href="https://www.ietf.org/proceedings/{{ meeting_num }}/agenda/{{ session.agenda.external_url }}">Agenda</a>
28+
{% if session.all_meeting_agendas %}
29+
{% if session.all_meeting_agendas|length == 1 %}
30+
<a href="{{ session.all_meeting_agendas.0|meeting_href:session.meeting }}">Agenda</a><br>
31+
{% else %}
32+
{% for agenda in session.all_meeting_agendas %}
33+
<a href="{{agenda|meeting_href:session.meeting}}">Agenda {{agenda.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
34+
{% endfor %}
35+
{% endif %}
3036
{% else %}
3137
{% if show_agenda == "True" %}
3238
<span class="label label-warning">No agenda</span>
3339
{% endif %}
3440
{% endif %}
3541
</td>
3642
<td>
37-
{% if session.minutes %}
38-
<a href="https://www.ietf.org/proceedings/{{ meeting_num }}/minutes/{{ session.minutes.external_url }}">Minutes</a>
43+
{% if session.all_meeting_minutes %}
44+
{% if session.all_meeting_minutes|length == 1 %}
45+
<a href="{{ session.all_meeting_minutes.0|meeting_href:session.meeting }}">Minutes</a><br>
46+
{% else %}
47+
{% for minutes in sesison.all_meeting_minutes %}
48+
<a href="{{ minutes|meeting_href:session.meeting}}">Minutes {{minutes.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
49+
{% endfor %}
50+
{% endif %}
3951
{% else %}
4052
{% if show_agenda == "True" %}
4153
<span class="label label-warning">No minutes</span>
4254
{% endif %}
4355
{% endif %}
4456
</td>
4557
<td>
46-
{% with session.slides as slides %}
58+
{% with session.all_meeting_slides as slides %}
4759
{% for slide in slides %}
48-
<a href="https://www.ietf.org/proceedings/{{ meeting_num }}/slides/{{ slide.external_url }}">{{ slide.title|clean_whitespace }}</a>
60+
<a href="{{ slide|meeting_href:session.meeting}}">{{ slide.title|clean_whitespace }}</a>
4961
<br>
5062
{% empty %}
5163
<span class="label label-warning">No slides</span>

ietf/templates/meeting/group_proceedings.html

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,27 @@
2222
<td colspan="3"><span class="label label-danger">Session cancelled</span></td>
2323
{% else %}
2424
<td>
25-
{% if session.agenda %}
26-
<a href="{{ session.agenda|meeting_href:meeting }}">Agenda</a><br>
25+
{% if session.all_meeting_agendas %}
26+
{% if session.all_meeting_agendas|length == 1 %}
27+
<a href="{{ session.all_meeting_agendas.0|meeting_href:meeting }}">Agenda</a><br>
28+
{% else %}
29+
{% for agenda in session.all_meeting_agendas %}
30+
<a href="{{agenda|meeting_href:meeting}}">Agenda {{agenda.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
31+
{% endfor %}
32+
{% endif %}
2733
{% else %}
2834
{% if show_agenda == "True" and not meeting.proceedings_final %}
2935
<span class="label label-warning">No agenda</span><br>
3036
{% endif %}
3137
{% endif %}
32-
{% if session.minutes %}
33-
<a href="{{ session.minutes|meeting_href:meeting }}">Minutes</a><br>
38+
{% if session.all_meeting_minutes %}
39+
{% if session.all_meeting_minutes|length == 1 %}
40+
<a href="{{ session.all_meeting_minutes.0|meeting_href:meeting }}">Minutes</a><br>
41+
{% else %}
42+
{% for minutes in session.all_meeting_minutes %}
43+
<a href="{{ minutes|meeting_href:meeting}}">Minutes {{minutes.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
44+
{% endfor %}
45+
{% endif %}
3446
{% else %}
3547
{% if show_agenda == "True" and not meeting.proceedings_final %}
3648
<span class="label label-warning">No minutes</span><br>
@@ -64,7 +76,7 @@
6476
{% endif %}
6577
</td>
6678
<td>
67-
{% with session.slides as slides %}
79+
{% with session.all_meeting_slides as slides %}
6880
{% for slide in slides %}
6981
<a href="{{ slide|meeting_href:meeting }}">{{ slide.title|clean_whitespace }}</a>
7082
<br>

0 commit comments

Comments
 (0)