From b9dbf5cd53f1bbdd01870a352462d1e660d9d74b Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 26 Jul 2010 11:57:27 +0000 Subject: [PATCH] Make WG agendas available trough datatracker URLs; this will avoid problems when the text from these pages are incorporated in frames in other datatracker pages. - Legacy-Id: 2416 --- ietf/meeting/urls.py | 5 +++-- ietf/meeting/views.py | 28 ++++++++++++++++++++++++++-- ietf/settings.py | 3 +++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index b6c7c411e..4479b91d7 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -6,10 +6,11 @@ from ietf.meeting import views urlpatterns = patterns('', (r'^(?P\d+)/materials.html$', views.show_html_materials), (r'^agenda/$', views.html_agenda), - (r'^agenda.html$', views.html_agenda), + (r'^agenda(.html)?$', views.html_agenda), (r'^agenda.txt$', views.text_agenda), - (r'^(?P\d+)/agenda.html$', views.html_agenda), + (r'^(?P\d+)/agenda(.html)?$', views.html_agenda), (r'^(?P\d+)/agenda.txt$', views.text_agenda), + (r'^(?P\d+)/session/(?P[A-Za-z0-9-]+)(?P\.[A-Za-z0-9]+)?$', views.session_agenda), (r'^$', views.current_materials), ) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 80e976cdc..0719f462e 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -2,8 +2,10 @@ # Create your views here. #import models +import datetime +import os + from django.shortcuts import render_to_response, get_object_or_404 -from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities from django.views.generic.list_detail import object_list from django.http import HttpResponseRedirect, HttpResponse, Http404 from django.core.urlresolvers import reverse @@ -14,7 +16,9 @@ from django.conf import settings from django.utils.decorators import decorator_from_middleware from django.middleware.gzip import GZipMiddleware from django.db.models import Count -import datetime + +from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities + @decorator_from_middleware(GZipMiddleware) def show_html_materials(request, meeting_num=None): @@ -118,3 +122,23 @@ def text_agenda(request, num=None): "plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, }, RequestContext(request)), mimetype="text/plain") +def session_agenda(request, num, session, ext=None): + if ext: + extensions = [ ext.lstrip(".") ] + else: + extensions = ["html", "htm", "txt", "HTML", "HTM", "TXT", ] + for wg in (session, session.upper(), session.lower()): + for e in extensions: + path = settings.AGENDA_PATH_PATTERN % {"meeting":num, "wg":session, "ext":e} + if os.path.exists(path): + file = open(path) + text = file.read() + file.close() + if e.lower() == "txt": + return HttpResponse(text, mimetype="text/plain") + else: + return HttpResponse(text) + if ext: + raise Http404("No %s agenda for the %s session of IETF %s is available" % (ext, session, num)) + else: + raise Http404("No agenda for the %s session of IETF %s is available" % (session, num)) diff --git a/ietf/settings.py b/ietf/settings.py index 10ad21fc4..c4c9a3440 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -156,6 +156,9 @@ TEST_RUNNER = 'ietf.utils.test_runner.run_tests' INTERNET_DRAFT_PATH = '/a/www/ietf-ftp/internet-drafts/' RFC_PATH = '/a/www/ietf-ftp/rfc/' AGENDA_PATH = '/a/www/www6s/proceedings/' +AGENDA_PATH_PATTERN = '/a/www/www6s/proceedings/%(meeting)s/agenda/%(wg)s.%(ext)s' +MINUTES_PATH_PATTERN = '/a/www/www6s/proceedings/%(meeting)s/minutes/%(wg)s.%(ext)s' +SLIDES_PATH_PATTERN = '/a/www/www6s/proceedings/%(meeting)s/slides/%(wg)s-*' IPR_DOCUMENT_PATH = '/a/www/ietf-ftp/ietf/IPR/' IETFWG_DESCRIPTIONS_PATH = '/a/www/www6s/wg-descriptions/' IESG_TASK_FILE = '/a/www/www6/iesg/internal/task.txt'