Skip to content

Commit 6b88439

Browse files
committed
Serve older ietf meetings locally. Add tests to verify we have not set up a redirect to self. Commit ready for merge.
- Legacy-Id: 18202
1 parent 9bcd644 commit 6b88439

2 files changed

Lines changed: 41 additions & 15 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from pyquery import PyQuery
1616
from io import StringIO, BytesIO
1717
from bs4 import BeautifulSoup
18-
from urllib.parse import urlparse
18+
from urllib.parse import urlparse, urlsplit
1919

2020
from django.urls import reverse as urlreverse
2121
from django.conf import settings
@@ -293,17 +293,41 @@ def test_agenda_week_view(self):
293293
self.assertEqual(r.status_code,200)
294294
self.assertTrue(all([x in unicontent(r) for x in ['var all_items', 'maximize', 'draw_calendar', ]]))
295295

296-
@override_settings(MEETING_MATERIALS_SERVE_LOCALLY=False)
296+
@override_settings(MEETING_MATERIALS_SERVE_LOCALLY=False, MEETING_DOC_HREFS = settings.MEETING_DOC_CDN_HREFS)
297297
def test_materials_through_cdn(self):
298-
meeting = make_meeting_test_data()
299-
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
300-
self.write_materials_files(meeting, session)
301-
for document in (session.agenda(),session.minutes(),session.slides()[0]):
302-
url = urlreverse("ietf.meeting.views.materials_document",
303-
kwargs=dict(num=meeting.number, document=document))
304-
r = self.client.get(url)
305-
self.assertEqual(r.status_code,302)
306-
self.assertEqual(r['Location'],document.get_href())
298+
meeting = make_meeting_test_data(create_interims=True)
299+
300+
session107 = SessionFactory(meeting__number='172',group__acronym='mars')
301+
doc = DocumentFactory.create(name='agenda-172-mars', type_id='agenda', title="Agenda",
302+
uploaded_filename="agenda-172-mars.txt", group=session107.group, rev='00', states=[('agenda','active')])
303+
pres = SessionPresentation.objects.create(session=session107,document=doc,rev=doc.rev)
304+
session107.sessionpresentation_set.add(pres) #
305+
doc = DocumentFactory.create(name='minutes-172-mars', type_id='minutes', title="Minutes",
306+
uploaded_filename="minutes-172-mars.md", group=session107.group, rev='00', states=[('minutes','active')])
307+
pres = SessionPresentation.objects.create(session=session107,document=doc,rev=doc.rev)
308+
session107.sessionpresentation_set.add(pres)
309+
doc = DocumentFactory.create(name='slides-172-mars-1-active', type_id='slides', title="Slideshow",
310+
uploaded_filename="slides-172-mars.txt", group=session107.group, rev='00',
311+
states=[('slides','active'), ('reuse_policy', 'single')])
312+
pres = SessionPresentation.objects.create(session=session107,document=doc,rev=doc.rev)
313+
session107.sessionpresentation_set.add(pres)
314+
315+
for session in (
316+
Session.objects.filter(meeting=meeting, group__acronym="mars").first(),
317+
session107,
318+
Session.objects.filter(meeting__type_id='interim', group__acronym='mars', schedulingevent__status='sched').first(),
319+
):
320+
self.write_materials_files(session.meeting, session)
321+
for document in (session.agenda(),session.minutes(),session.slides()[0]):
322+
url = urlreverse("ietf.meeting.views.materials_document",
323+
kwargs=dict(num=session.meeting.number, document=document))
324+
r = self.client.get(url)
325+
if session.meeting.number.isdigit() and int(session.meeting.number)<=96:
326+
self.assertEqual(r.status_code,200)
327+
else:
328+
self.assertEqual(r.status_code,302)
329+
self.assertEqual(r['Location'],document.get_href())
330+
self.assertNotEqual(urlsplit(r['Location'])[2],url)
307331

308332
def test_materials(self):
309333
meeting = make_meeting_test_data()

ietf/meeting/views.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,8 @@ def current_materials(request):
190190

191191
@cache_page(1 * 60)
192192
def materials_document(request, document, num=None, ext=None):
193-
if num is None:
194-
num = get_meeting(num).number
193+
meeting=get_meeting(num,type_in=['ietf','interim'])
194+
num = meeting.number
195195
if (re.search(r'^\w+-\d+-.+-\d\d$', document) or
196196
re.search(r'^\w+-interim-\d+-.+-\d\d-\d\d$', document) or
197197
re.search(r'^\w+-interim-\d+-.+-sess[a-z]-\d\d$', document) or
@@ -221,7 +221,9 @@ def materials_document(request, document, num=None, ext=None):
221221
if not os.path.exists(filename):
222222
raise Http404("File not found: %s" % filename)
223223

224-
if settings.MEETING_MATERIALS_SERVE_LOCALLY :
224+
old_proceedings_format = meeting.number.isdigit() and int(meeting.number) <= 96
225+
226+
if settings.MEETING_MATERIALS_SERVE_LOCALLY or old_proceedings_format:
225227
with io.open(filename, 'rb') as file:
226228
bytes = file.read()
227229

@@ -246,7 +248,7 @@ def materials_document(request, document, num=None, ext=None):
246248
response['Content-Disposition'] = 'inline; filename="%s"' % basename
247249
return response
248250
else:
249-
return HttpResponseRedirect(redirect_to=doc.get_href())
251+
return HttpResponseRedirect(redirect_to=doc.get_href(meeting=meeting))
250252

251253
@login_required
252254
def materials_editable_groups(request, num=None):

0 commit comments

Comments
 (0)