@@ -231,28 +231,22 @@ def text_agenda(request, num=None):
231231 "plenaryw_agenda" :plenaryw_agenda , "plenaryt_agenda" :plenaryt_agenda , },
232232 RequestContext (request )), mimetype = "text/plain" )
233233
234- def session_agenda (request , num , session , ext = None ):
235- if ext :
236- extensions = [ ext .lstrip ("." ) ]
237- else :
238- extensions = ["html" , "htm" , "txt" , "HTML" , "HTM" , "TXT" , ]
239- for wg in [session , session .upper (), session .lower ()]:
240- for e in extensions :
241- path = settings .AGENDA_PATH_PATTERN % {"meeting" :num , "wg" :wg , "ext" :e }
242- if os .path .exists (path ):
243- file = open (path )
244- text = file .read ()
245- file .close ()
246- if e .lower () == "txt" :
247- return HttpResponse (text , mimetype = "text/plain" )
248- elif e .lower () == "pdf" :
249- return HttpResponse (text , mimetype = "application/pdf" )
250- else :
251- return HttpResponse (text )
252- if ext :
253- raise Http404 ("No %s agenda for the %s session of IETF %s is available" % (ext , session , num ))
254- else :
255- raise Http404 ("No agenda for the %s session of IETF %s is available" % (session , num ))
234+ def session_agenda (request , num , session ):
235+ d = Document .objects .filter (type = "agenda" , session__meeting__number = num , session__group__acronym = session )
236+ if d :
237+ agenda = d [0 ]
238+ content = read_agenda_file (num , agenda )
239+ _ , ext = os .path .splitext (agenda .external_url )
240+ ext = ext .lstrip ("." ).lower ()
241+
242+ if ext == "txt" :
243+ return HttpResponse (content , mimetype = "text/plain" )
244+ elif ext == "pdf" :
245+ return HttpResponse (content , mimetype = "application/pdf" )
246+ else :
247+ return HttpResponse (content )
248+
249+ raise Http404 ("No agenda for the %s session of IETF %s is available" % (session , num ))
256250
257251def convert_to_pdf (doc_name ):
258252 import subprocess
@@ -300,27 +294,30 @@ def convert_to_pdf(doc_name):
300294 pipe ("ps2pdf " + psname + " " + outpath )
301295 os .unlink (psname )
302296
297+ def read_agenda_file (num , doc ):
298+ path = os .path .join (settings .AGENDA_PATH , "%s/agenda/%s" % (num , doc .external_url ))
299+ if os .path .exists (path ):
300+ with open (path ) as f :
301+ return f .read ()
302+ else :
303+ return None
303304
304305def session_draft_list (num , session ):
305306 extensions = ["html" , "htm" , "txt" , "HTML" , "HTM" , "TXT" , ]
306307 result = []
307308 found = False
308- for wg in [session , session .upper (), session .lower ()]:
309- for e in extensions :
310- path = settings .AGENDA_PATH_PATTERN % {"meeting" :num , "wg" :wg , "ext" :e }
311- if os .path .exists (path ):
312- file = open (path )
313- agenda = file .read ()
314- file .close ()
315- found = True
316- break
317- if found :
318- break
319- else :
320- raise Http404 ("No agenda for the %s session of IETF %s is available" % (session , num ))
321-
322- drafts = set (re .findall ('(draft-[-a-z0-9]*)' ,agenda ))
323309
310+ drafts = set ()
311+
312+ for agenda in Document .objects .filter (type = "agenda" , session__meeting__number = num , session__group__acronym = session ):
313+ content = read_agenda_file (num , agenda )
314+ if content != None :
315+ found = True
316+ drafts .update (re .findall ('(draft-[-a-z0-9]*)' , content ))
317+
318+ if not found :
319+ raise Http404 ("No agenda for the %s group of IETF %s is available" % (session , num ))
320+
324321 for draft in drafts :
325322 try :
326323 if (re .search ('-[0-9]{2}$' ,draft )):
0 commit comments