Skip to content

Commit d6baa38

Browse files
committed
Fix problem with reading agenda files, generate it from the actual
agenda document rather than trying various combinations of extensions and upper/lower case - Legacy-Id: 4046
1 parent 140e4be commit d6baa38

3 files changed

Lines changed: 36 additions & 39 deletions

File tree

ietf/meeting/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
(r'^(?P<num>\d+)/agenda/week-view.html$', views.week_view),
2323
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf),
2424
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile),
25-
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)(?P<ext>\.[A-Za-z0-9]+)?$', views.session_agenda),
25+
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-agenda/$', views.session_agenda),
2626
(r'^$', views.current_materials),
2727
)
2828

ietf/meeting/views.py

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

257251
def 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

304305
def 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)):

ietf/templates/meeting/agenda.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ <h2 class="ietf-divider">{{ slot.meeting_date|date:"l"|upper }}, {{ slot.meeting
319319
<td></td>
320320
<td colspan="3">
321321
{% if session.info.agenda_file %}
322-
<iframe width="100%" height="400px" src="about:blank" xsrc="/meeting/{{ session.info.agenda_file }}" onload="r(this)"></iframe>
322+
<iframe width="100%" height="400px" src="about:blank" xsrc="/meeting/{{ meeting.num }}/agenda/{{ session.info.acronym }}-agenda/" onload="r(this)"></iframe>
323323
{% else %}
324324
<b>No Agenda Submitted</b>
325325
{% endif %}

0 commit comments

Comments
 (0)