Skip to content

Commit c201685

Browse files
committed
Made the materials_document() view function more robust in handling various materials document names.
- Legacy-Id: 14827
1 parent 37655a0 commit c201685

1 file changed

Lines changed: 21 additions & 10 deletions

File tree

ietf/meeting/views.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
22

3+
import csv
34
import datetime
5+
import glob
6+
import json
47
import os
8+
import pytz
59
import re
610
import tarfile
711
import urllib
8-
from tempfile import mkstemp
9-
from collections import OrderedDict, Counter, deque
10-
import csv
11-
import json
12-
import pytz
1312

14-
from wsgiref.handlers import format_date_time
1513
from calendar import timegm
14+
from collections import OrderedDict, Counter, deque
15+
from tempfile import mkstemp
16+
from wsgiref.handlers import format_date_time
1617

1718
import debug # pyflakes:ignore
1819

@@ -158,8 +159,12 @@ def current_materials(request):
158159
def materials_document(request, document, num=None, ext=None):
159160
if num is None:
160161
num = get_meeting(num).number
161-
if re.search('-\d\d$', document):
162+
if (re.search('^\w+-\d+-\w+-\d\d$', document) or
163+
re.search('^\w+-interim-\d+-\w+-\d\d-\d\d$', document)):
162164
name, rev = document.rsplit('-', 1)
165+
else:
166+
name, rev = document, None
167+
163168
doc = get_object_or_404(Document, name=name)
164169
if not doc.meeting_related():
165170
raise Http404("Not a meeting related document")
@@ -169,11 +174,17 @@ def materials_document(request, document, num=None, ext=None):
169174
filename = doc.get_file_name()
170175
else:
171176
filename = os.path.join(doc.get_file_path(), document)
172-
if ext and not filename.endswith(ext):
173-
name, _ = os.path.splitext(filename)
174-
filename = name + ext
177+
if ext:
178+
if not filename.endswith(ext):
179+
name, _ = os.path.splitext(filename)
180+
filename = name + ext
181+
else:
182+
filenames = glob.glob(filename+'.*')
183+
if filenames:
184+
filename = filenames[0]
175185
_, basename = os.path.split(filename)
176186
if not os.path.exists(filename):
187+
177188
raise Http404("File not found: %s" % filename)
178189
with open(filename, 'rb') as file:
179190
bytes = file.read()

0 commit comments

Comments
 (0)