55from django .shortcuts import render_to_response as render , get_object_or_404
66from ietf .proceedings .models import Meeting , MeetingTime , WgMeetingSession , NonSession , MeetingVenue , IESGHistory , Proceeding , Switches
77from django .views .generic .list_detail import object_list
8- from django .http import HttpResponseRedirect , HttpResponsePermanentRedirect , Http404
8+ from django .http import HttpResponseRedirect , HttpResponsePermanentRedirect , Http404 , HttpResponse
99from django .core .urlresolvers import reverse
10- from django .db .models import Q
10+ from django .db .models import Q
11+ from django .template import RequestContext
12+ from django .template .loader import render_to_string
1113import datetime
1214
1315def show_html_materials (request , meeting_num = None ):
@@ -39,45 +41,47 @@ def current_materials(request):
3941 meeting = Meeting .objects .order_by ('-meeting_num' )[0 ]
4042 return HttpResponseRedirect ( reverse (show_html_materials , args = [meeting .meeting_num ]) )
4143
42- def show_html_agenda (request , meeting_num = None , html_or_txt = None ):
43- queryset_list = MeetingTime .objects .filter (meeting = meeting_num ,day_id__gt = '0' ).order_by ("day_id" ,"time_desc" )
44- queryset_list_pre_session = MeetingTime .objects .filter (meeting = meeting_num ,day_id__lte = '0' ).order_by ("day_id" ,"time_desc" )
45- meeting_info = get_object_or_404 (Meeting , meeting_num = meeting_num )
46- nonsession_info = NonSession .objects .filter (meeting = meeting_num ,day_id__gte = '0' ).order_by ("day_id" )
47- meetingvenue_info = get_object_or_404 (MeetingVenue , meeting_num = meeting_num )
48- last_update_info = get_object_or_404 (Switches ,id = 1 )
44+ def get_plenary_agenda (meeting_num , id ):
4945 try :
50- plenaryt_agenda_file = "/a/www/ietf/proceedings/%s" % WgMeetingSession .objects .get (meeting = meeting_num ,group_acronym_id = - 2 ).agenda_file ()
46+ plenary_agenda_file = "/a/www/ietf/proceedings/%s" % WgMeetingSession .objects .get (meeting = meeting_num ,group_acronym_id = id ).agenda_file ()
5147 try :
52- f = open (plenaryt_agenda_file )
53- plenaryt_agenda = f .read ()
48+ f = open (plenary_agenda_file )
49+ plenary_agenda = f .read ()
5450 f .close ()
51+ return plenary_agenda
5552 except IOError :
56- plenaryt_agenda = "THE AGENDA HAS NOT BEEN UPLOADED YET"
53+ return "THE AGENDA HAS NOT BEEN UPLOADED YET"
5754 except WgMeetingSession .DoesNotExist :
58- plenaryt_agenda = "The Technical Plenary has not been scheduled"
59- if html_or_txt == "html" :
60- template_file = "meeting/agenda.html"
61- elif html_or_txt == "txt" :
62- template_file = "meeting/agenda.txt"
63- else :
64- raise Http404
65- try :
66- plenaryw_agenda_file = "/a/www/ietf/proceedings/%s" % WgMeetingSession .objects .get (meeting = meeting_num ,group_acronym_id = - 1 ).agenda_file ()
67- try :
68- f = open (plenaryw_agenda_file )
69- plenaryw_agenda = f .read ()
70- f .close ()
71- except IOError :
72- plenaryw_agenda = "THE AGENDA HAS NOT BEEN UPLOADED YET"
73- except WgMeetingSession .DoesNotExist :
74- plenaryw_agenda = "THE IETF Operations and Administration Plenary has not been secheduled"
75- # Due to a bug in Django@0.96 we can't use foreign key lookup in
76- # order_by(), see http://code.djangoproject.com/ticket/2076. Changeset
77- # [133] is broken because it requires a patched Django to run. Work
78- # around this instead. Later: FIXME (revert to the straightforward code
79- # when this bug has been fixed in the Django release we're running.)
80- queryset_list_ads = list (IESGHistory .objects .filter (meeting = meeting_num ))
81- queryset_list_ads .sort (key = (lambda item : item .area .area_acronym .acronym ))
82- return object_list (request ,queryset = queryset_list , template_name = template_file ,allow_empty = True , extra_context = {'queryset_list_pre_session' :queryset_list_pre_session , 'meeting_info' :meeting_info , 'meeting_num' :meeting_num , 'nonsession_info' :nonsession_info , 'meetingvenue_info' :meetingvenue_info , 'plenaryw_agenda' :plenaryw_agenda , 'plenaryt_agenda' :plenaryt_agenda , 'qs_ads' :queryset_list_ads ,'last_update_info' :last_update_info })
55+ return "The Plenary has not been scheduled"
56+
57+ def html_agenda (request , num = None ):
58+ if not num :
59+ num = list (Meeting .objects .all ())[- 1 ].meeting_num
60+ timeslots = MeetingTime .objects .filter (meeting = num ).order_by ("day_id" , "time_desc" )
61+ update = get_object_or_404 (Switches ,id = 1 )
62+ meeting = get_object_or_404 (Meeting , meeting_num = num )
63+ venue = get_object_or_404 (MeetingVenue , meeting_num = num )
64+ ads = list (IESGHistory .objects .filter (meeting = num ))
65+ if not ads :
66+ ads = list (IESGHistory .objects .filter (meeting = str (int (num )- 1 )))
67+ ads .sort (key = (lambda item : item .area .area_acronym .acronym ))
68+ plenaryw_agenda = get_plenary_agenda (num , - 1 )
69+ plenaryt_agenda = get_plenary_agenda (num , - 2 )
70+ return render ("meeting/agenda.html" ,
71+ {"timeslots" :timeslots , "update" :update , "meeting" :meeting , "venue" :venue , "ads" :ads ,
72+ "ops_plenary_agenda" :plenaryw_agenda , "tech_plenary_agenda" :plenaryt_agenda , },
73+ RequestContext (request ))
8374
75+ def text_agenda (request , num ):
76+ timeslots = MeetingTime .objects .filter (meeting = num ).order_by ("day_id" , "time_desc" )
77+ update = get_object_or_404 (Switches ,id = 1 )
78+ meeting = get_object_or_404 (Meeting , meeting_num = num )
79+ venue = get_object_or_404 (MeetingVenue , meeting_num = num )
80+ ads = list (IESGHistory .objects .filter (meeting = num ))
81+ if not ads :
82+ ads = list (IESGHistory .objects .filter (meeting = str (int (num )- 1 )))
83+ ads .sort (key = (lambda item : item .area .area_acronym .acronym ))
84+ return HttpResponse (render_to_string ("meeting/agenda.txt" ,
85+ {"timeslots" :timeslots , "update" :update , "meeting" :meeting , "venue" :venue , "ads" :ads },
86+ RequestContext (request )), mimetype = "text/plain" )
87+
0 commit comments