Skip to content

Commit a98e005

Browse files
committed
Better handle materials with names that end with a string that looks like a version (-nn). May address ietf-tools#3040. Commit ready for merge.
- Legacy-Id: 18285
1 parent e07aafe commit a98e005

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

ietf/meeting/tests_views.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,16 @@ def test_materials_editable_groups(self):
448448
self.assertContains(r, meeting.number)
449449
self.assertContains(r, "You cannot manage the meeting materials for any groups")
450450

451+
@override_settings(MEETING_MATERIALS_SERVE_LOCALLY=True)
452+
def test_materials_name_endswith_hyphen_number_number(self):
453+
sp = SessionPresentationFactory(document__name='slides-junk-15',document__type_id='slides',document__states=[('reuse_policy','single')])
454+
sp.document.uploaded_filename = '%s-%s.pdf'%(sp.document.name,sp.document.rev)
455+
sp.document.save()
456+
self.write_materials_file(sp.session.meeting, sp.document, 'Fake slide contents')
457+
url = urlreverse("ietf.meeting.views.materials_document", kwargs=dict(document=sp.document.name,num=sp.session.meeting.number))
458+
r = self.client.get(url)
459+
self.assertEqual(r.status_code, 200)
460+
451461
def test_proceedings(self):
452462
meeting = make_meeting_test_data()
453463
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()

ietf/meeting/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,14 @@ def materials_document(request, document, num=None, ext=None):
200200
name, rev = document.rsplit('-', 1)
201201
else:
202202
name, rev = document, None
203-
doc = get_object_or_404(Document, name=name)
203+
# This view does not allow the use of DocAliases. Right now we are probably only creating one (identity) alias, but that may not hold in the future.
204+
doc = Document.objects.filter(name=name).first()
205+
# Handle edge case where the above name, rev splitter misidentifies the end of a document name as a revision mumber
206+
if not doc:
207+
name = name + '-' + rev
208+
rev = None
209+
doc = get_object_or_404(Document, name=name)
210+
204211
if not doc.meeting_related():
205212
raise Http404("Not a meeting related document")
206213
if not doc.session_set.filter(meeting__number=num).exists():

0 commit comments

Comments
 (0)