|
5 | 5 | from django.shortcuts import render_to_response as render, get_object_or_404 |
6 | 6 | from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches |
7 | 7 | from django.views.generic.list_detail import object_list |
8 | | -from django.http import HttpResponseRedirect, HttpResponse |
| 8 | +from django.http import HttpResponseRedirect, HttpResponse, Http404 |
9 | 9 | from django.core.urlresolvers import reverse |
10 | 10 | from django.db.models import Q |
11 | 11 | from django.template import RequestContext |
@@ -58,19 +58,29 @@ def get_plenary_agenda(meeting_num, id): |
58 | 58 | return "The Plenary has not been scheduled" |
59 | 59 |
|
60 | 60 | 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)) |
68 | 79 | 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))) |
70 | 81 | 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) |
74 | 84 | return timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda |
75 | 85 |
|
76 | 86 | def html_agenda(request, num=None): |
|
0 commit comments