Skip to content

Commit

Permalink
Fixed bug where slides from multiple sessions for a group were not al…
Browse files Browse the repository at this point in the history
…l showing. Improved handling of multiple minutes and agendas for groups. Fixes #2058. Commit ready for merge. Commit should be patched into production.

 - Legacy-Id: 12393
  • Loading branch information
rjsparks committed Nov 23, 2016
1 parent b63f374 commit 2b0ec6d
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 19 deletions.
44 changes: 36 additions & 8 deletions ietf/meeting/models.py
Expand Up @@ -1045,32 +1045,60 @@ def drafts(self):
return list(self.materials.filter(type='draft'))

def all_meeting_sessions_for_group(self):
if not hasattr(self, "_all_meeting_sessions_for_group_cache"):
assignments = self.timeslotassignments.filter(schedule_id=self.meeting.agenda_id).order_by('timeslot__time')
self._all_meeting_sessions_for_group_cache = [ a.session for a in assignments ]
return self._all_meeting_sessions_for_group_cache
if self.group.type_id in ['wg','rg']:
if not hasattr(self, "_all_meeting_sessions_for_group_cache"):
sessions = [s for s in 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)
return self._all_meeting_sessions_for_group_cache
else:
return [self]

def all_meeting_recordings(self):
recordings = []
recordings = [] # These are not sets because we need to preserve relative ordering or redo the ordering work later
sessions = self.all_meeting_sessions_for_group()
for session in sessions:
recordings.extend(session.recordings())
recordings.extend([r for r in session.recordings() if r not in recordings])
return recordings

def all_meeting_bluesheets(self):
bluesheets = []
sessions = self.all_meeting_sessions_for_group()
for session in sessions:
bluesheets.extend(session.bluesheets())
bluesheets.extend([b for b in session.bluesheets() if b not in bluesheets])
return bluesheets

def all_meeting_drafts(self):
drafts = []
sessions = self.all_meeting_sessions_for_group()
for session in sessions:
drafts.extend(session.drafts())
drafts.extend([d for d in session.drafts() if d not in drafts])
return drafts

def all_meeting_agendas(self):
agendas = []
sessions = self.all_meeting_sessions_for_group()
for session in sessions:
agenda = session.agenda()
if agenda and agenda not in agendas:
agendas.append(agenda)
return agendas

def all_meeting_slides(self):
slides = []
sessions = self.all_meeting_sessions_for_group()
for session in sessions:
slides.extend([s for s in session.slides() if s not in slides])
return slides

def all_meeting_minutes(self):
minutes = []
sessions = self.all_meeting_sessions_for_group()
for session in sessions:
minutes_doc = session.minutes()
if minutes_doc and minutes_doc not in minutes:
minutes.append(minutes_doc)
return minutes

def can_manage_materials(self, user):
return can_manage_materials(user,self.group)

Expand Down
24 changes: 18 additions & 6 deletions ietf/templates/meeting/group_materials.html
Expand Up @@ -25,27 +25,39 @@
{% endif %}
{% else %}
<td>
{% if session.agenda %}
<a href="https://www.ietf.org/proceedings/{{ meeting_num }}/agenda/{{ session.agenda.external_url }}">Agenda</a>
{% if session.all_meeting_agendas %}
{% if session.all_meeting_agendas|length == 1 %}
<a href="{{ session.all_meeting_agendas.0|meeting_href:session.meeting }}">Agenda</a><br>
{% else %}
{% for agenda in session.all_meeting_agendas %}
<a href="{{agenda|meeting_href:session.meeting}}">Agenda {{agenda.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
{% endfor %}
{% endif %}
{% else %}
{% if show_agenda == "True" %}
<span class="label label-warning">No agenda</span>
{% endif %}
{% endif %}
</td>
<td>
{% if session.minutes %}
<a href="https://www.ietf.org/proceedings/{{ meeting_num }}/minutes/{{ session.minutes.external_url }}">Minutes</a>
{% if session.all_meeting_minutes %}
{% if session.all_meeting_minutes|length == 1 %}
<a href="{{ session.all_meeting_minutes.0|meeting_href:session.meeting }}">Minutes</a><br>
{% else %}
{% for minutes in sesison.all_meeting_minutes %}
<a href="{{ minutes|meeting_href:session.meeting}}">Minutes {{minutes.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
{% endfor %}
{% endif %}
{% else %}
{% if show_agenda == "True" %}
<span class="label label-warning">No minutes</span>
{% endif %}
{% endif %}
</td>
<td>
{% with session.slides as slides %}
{% with session.all_meeting_slides as slides %}
{% for slide in slides %}
<a href="https://www.ietf.org/proceedings/{{ meeting_num }}/slides/{{ slide.external_url }}">{{ slide.title|clean_whitespace }}</a>
<a href="{{ slide|meeting_href:session.meeting}}">{{ slide.title|clean_whitespace }}</a>
<br>
{% empty %}
<span class="label label-warning">No slides</span>
Expand Down
22 changes: 17 additions & 5 deletions ietf/templates/meeting/group_proceedings.html
Expand Up @@ -22,15 +22,27 @@
<td colspan="3"><span class="label label-danger">Session cancelled</span></td>
{% else %}
<td>
{% if session.agenda %}
<a href="{{ session.agenda|meeting_href:meeting }}">Agenda</a><br>
{% if session.all_meeting_agendas %}
{% if session.all_meeting_agendas|length == 1 %}
<a href="{{ session.all_meeting_agendas.0|meeting_href:meeting }}">Agenda</a><br>
{% else %}
{% for agenda in session.all_meeting_agendas %}
<a href="{{agenda|meeting_href:meeting}}">Agenda {{agenda.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
{% endfor %}
{% endif %}
{% else %}
{% if show_agenda == "True" and not meeting.proceedings_final %}
<span class="label label-warning">No agenda</span><br>
{% endif %}
{% endif %}
{% if session.minutes %}
<a href="{{ session.minutes|meeting_href:meeting }}">Minutes</a><br>
{% if session.all_meeting_minutes %}
{% if session.all_meeting_minutes|length == 1 %}
<a href="{{ session.all_meeting_minutes.0|meeting_href:meeting }}">Minutes</a><br>
{% else %}
{% for minutes in session.all_meeting_minutes %}
<a href="{{ minutes|meeting_href:meeting}}">Minutes {{minutes.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
{% endfor %}
{% endif %}
{% else %}
{% if show_agenda == "True" and not meeting.proceedings_final %}
<span class="label label-warning">No minutes</span><br>
Expand Down Expand Up @@ -64,7 +76,7 @@
{% endif %}
</td>
<td>
{% with session.slides as slides %}
{% with session.all_meeting_slides as slides %}
{% for slide in slides %}
<a href="{{ slide|meeting_href:meeting }}">{{ slide.title|clean_whitespace }}</a>
<br>
Expand Down

0 comments on commit 2b0ec6d

Please sign in to comment.