From 63edf0d7d71ff5fd88f80ef73c68a3f2a8d1a9f3 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 30 Mar 2016 17:48:05 +0200 Subject: [PATCH 3/6] output all possible extensions when formating mimetypes (#10477) Returned value by mimetypes.guess_extension() is completely random as it's based on listing keys of a dictionnary used as reversed index. --- tests/test_misc.py | 8 ++++++-- wcs/admin/settings.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/test_misc.py b/tests/test_misc.py index 5b55f57..840248e 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -4,6 +4,7 @@ import json import pytest import os import pickle +import re from quixote import cleanup @@ -51,8 +52,11 @@ def test_format_mimetypes(): 'application/pdf (.pdf)' assert FileTypesDirectory.format_mimetypes(['application/pdf', 'text/rtf']) == \ 'application/pdf (.pdf), text/rtf' - assert FileTypesDirectory.format_mimetypes(['application/pdf', 'application/msword']) == \ - 'application/pdf (.pdf), application/msword (.doc)' + description = FileTypesDirectory.format_mimetypes(['application/pdf', 'application/msword']) + matches = re.finditer(r'(?:, *)?(?P[a-z/]+) \((?P[^)]*)\)', description) + s = dict((m.group('mimetype'), set(m.group('extensions').split(', '))) for m in matches) + assert s == dict([('application/msword', set(['.doc', '.dot', '.wiz'])), + ('application/pdf', set(['.pdf']))]) assert FileTypesDirectory.format_mimetypes(['application/pdf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/msword']) == \ diff --git a/wcs/admin/settings.py b/wcs/admin/settings.py index c038ac2..878cbe0 100644 --- a/wcs/admin/settings.py +++ b/wcs/admin/settings.py @@ -253,9 +253,9 @@ class FileTypesDirectory(Directory): # string got too long already, stop this now and we'll get an # ellipsis break - ext = mimetypes.guess_extension(mimetype) + ext = mimetypes.guess_all_extensions(mimetype) if ext: - l.append('%s (%s)' % (mimetype, ext)) + l.append('%s (%s)' % (mimetype, ', '.join(ext))) else: l.append(mimetype) else: -- 2.1.4