Skip to content

Commit f16a631

Browse files
committed
The 'current agenda' url can fail between meetings, when the 'current meeting number' has been bumped up, but not all relevant information has been entered yet. Fall back to the most recent meeting for which an agenda can be produced in that case.
- Legacy-Id: 1926
1 parent e8fb0f0 commit f16a631

1 file changed

Lines changed: 22 additions & 12 deletions

File tree

ietf/meeting/views.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.shortcuts import render_to_response as render, get_object_or_404
66
from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches
77
from django.views.generic.list_detail import object_list
8-
from django.http import HttpResponseRedirect, HttpResponse
8+
from django.http import HttpResponseRedirect, HttpResponse, Http404
99
from django.core.urlresolvers import reverse
1010
from django.db.models import Q
1111
from django.template import RequestContext
@@ -58,19 +58,29 @@ def get_plenary_agenda(meeting_num, id):
5858
return "The Plenary has not been scheduled"
5959

6060
def agenda_info(num=None):
61-
if not num:
62-
num = list(Meeting.objects.all())[-1].meeting_num
63-
timeslots = MeetingTime.objects.select_related().filter(meeting=num).order_by("day_id", "time_desc")
64-
update = get_object_or_404(Switches,id=1)
65-
meeting=get_object_or_404(Meeting, meeting_num=num)
66-
venue = get_object_or_404(MeetingVenue, meeting_num=num)
67-
ads = list(IESGHistory.objects.select_related().filter(meeting=num))
61+
if num:
62+
meetings = [ num ]
63+
else:
64+
meetings =list(Meeting.objects.all())
65+
meetings.reverse()
66+
meetings = [ meeting.meeting_num for meeting in meetings ]
67+
for n in meetings:
68+
try:
69+
timeslots = MeetingTime.objects.select_related().filter(meeting=n).order_by("day_id", "time_desc")
70+
update = Switches.objects.get(id=1)
71+
meeting= Meeting.objects.get(meeting_num=n)
72+
venue = MeetingVenue.objects.get(meeting_num=n)
73+
break
74+
except (MeetingTime.DoesNotExist, Switches.DoesNotExist, Meeting.DoesNotExist, MeetingVenue.DoesNotExist):
75+
continue
76+
else:
77+
raise Http404("No meeting information for meeting %s available" % num)
78+
ads = list(IESGHistory.objects.select_related().filter(meeting=n))
6879
if not ads:
69-
ads = list(IESGHistory.objects.select_related().filter(meeting=str(int(num)-1)))
80+
ads = list(IESGHistory.objects.select_related().filter(meeting=str(int(n)-1)))
7081
ads.sort(key=(lambda item: item.area.area_acronym.acronym))
71-
plenaryw_agenda = get_plenary_agenda(num, -1)
72-
plenaryt_agenda = get_plenary_agenda(num, -2)
73-
82+
plenaryw_agenda = get_plenary_agenda(n, -1)
83+
plenaryt_agenda = get_plenary_agenda(n, -2)
7484
return timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda
7585

7686
def html_agenda(request, num=None):

0 commit comments

Comments
 (0)