Skip to content

Commit 07fd714

Browse files
committed
Refined the URL patterns and handling of alternative meeting material file formats, which were broken by an earlier refactoring (v6.57.0). Fixes issue ietf-tools#2436.
- Legacy-Id: 14521
1 parent 87f4997 commit 07fd714

4 files changed

Lines changed: 12 additions & 11 deletions

File tree

ietf/doc/views_doc.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -551,18 +551,16 @@ def document_main(request, name, rev=None):
551551
content = None
552552
other_types = []
553553
globs = glob.glob(pathname + ".*")
554+
url = doc.href()
555+
urlbase, urlext = os.path.splitext(url)
554556
for g in globs:
555557
extension = os.path.splitext(g)[1]
556558
t = os.path.splitext(g)[1].lstrip(".")
557-
url = doc.href()
558559
if not url.endswith("/") and not url.endswith(extension):
559-
urlbase, urlext = os.path.splitext(url)
560560
url = urlbase + extension
561-
562561
if extension == ".txt":
563562
content = doc.text_or_error() # pyflakes:ignore
564563
t = "plain text"
565-
566564
other_types.append((t, url))
567565

568566
return render(request, "doc/document_material.html",

ietf/meeting/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
type_interim_patterns = [
6262
url(r'^agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf),
6363
url(r'^agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile),
64-
url(r'^materials/%(document)s/?$' % settings.URL_REGEXPS, views.materials_document),
64+
url(r'^materials/%(document)s((?P<ext>\.[a-z0-9]+)|/)?$' % settings.URL_REGEXPS, views.materials_document),
6565
]
6666

6767
type_ietf_only_patterns_id_optional = [
@@ -80,7 +80,7 @@
8080
url(r'^week-view(?:.html)?/?$', views.week_view),
8181
url(r'^room-view(?:.html)?/?$', views.room_view),
8282
url(r'^materials(?:.html)?/?$', views.materials),
83-
url(r'^materials/%(document)s/?$' % settings.URL_REGEXPS, views.materials_document),
83+
url(r'^materials/%(document)s((?P<ext>\.[a-z0-9]+)|/)?$' % settings.URL_REGEXPS, views.materials_document),
8484
url(r'^session/?$', views.materials_editable_groups),
8585
url(r'^proceedings(?:.html)?/?$', views.proceedings),
8686
url(r'^proceedings(?:.html)?/finalize/?$', views.finalize_proceedings),

ietf/meeting/views.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def current_materials(request):
156156
raise Http404('No such meeting')
157157

158158
@cache_page(1 * 60)
159-
def materials_document(request, document, num=None, ):
159+
def materials_document(request, document, num=None, ext=None):
160160
if num is None:
161161
num = get_meeting(num).number
162162
doc = get_object_or_404(Document, name=document)
@@ -165,7 +165,10 @@ def materials_document(request, document, num=None, ):
165165
if not doc.session_set.filter(meeting__number=num).exists():
166166
raise Http404("No such document for meeting %s" % num)
167167
filename = doc.get_file_name()
168-
basename = doc.get_base_name()
168+
if ext and not filename.endswith(ext):
169+
name, _ = os.path.splitext(filename)
170+
filename = name + ext
171+
_, basename = os.path.split(filename)
169172
if not os.path.exists(filename):
170173
raise Http404("File not found: %s" % filename)
171174
with open(filename, 'rb') as file:

ietf/settings.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -594,9 +594,9 @@ def skip_unreadable_post(record):
594594
}
595595

596596
MEETING_DOC_HREFS = {
597-
"agenda": "/meeting/{meeting.number}/materials/{doc.name}/",
598-
"minutes": "/meeting/{meeting.number}/materials/{doc.name}/",
599-
"slides": "/meeting/{meeting.number}/materials/{doc.name}/",
597+
"agenda": "/meeting/{meeting.number}/materials/{doc.name}",
598+
"minutes": "/meeting/{meeting.number}/materials/{doc.name}",
599+
"slides": "/meeting/{meeting.number}/materials/{doc.name}",
600600
"recording": "{doc.external_url}",
601601
"bluesheets": "https://www.ietf.org/proceedings/{meeting.number}/bluesheets/{doc.external_url}",
602602
}

0 commit comments

Comments
 (0)