From 4a565dacac6da71d73d2fe6967ffc46c66657dbc Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Fri, 25 Apr 2014 15:11:37 -0300 Subject: [PATCH] Add a method to get all the extensions associated to a mime type This is needed to solve problems with mismanaged extensions in the journal. --- src/sugar3/mime.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/sugar3/mime.py b/src/sugar3/mime.py index 329df78d..a4f4a47a 100644 --- a/src/sugar3/mime.py +++ b/src/sugar3/mime.py @@ -210,7 +210,7 @@ def _get_mime_data_directories(): return dirs -def get_primary_extension(mime_type): +def _init_mime_information(): global _extensions global _globs_timestamps @@ -230,8 +230,8 @@ def get_primary_extension(mime_type): _extensions = {} # FIXME Properly support these types in the system. (#4855) - _extensions['audio/ogg'] = 'ogg' - _extensions['video/ogg'] = 'ogg' + _extensions['audio/ogg'] = ['ogg'] + _extensions['video/ogg'] = ['ogg'] for globs_path in globs_path_list: globs_file = open(globs_path) @@ -240,16 +240,30 @@ def get_primary_extension(mime_type): if not line.startswith('#'): line_type, glob = line.split(':') if glob.startswith('*.'): - _extensions[line_type] = glob[2:] + if line_type in _extensions: + _extensions[line_type].append(glob[2:]) + else: + _extensions[line_type] = [glob[2:]] _globs_timestamps = timestamps + +def get_primary_extension(mime_type): + _init_mime_information() if mime_type in _extensions: - return _extensions[mime_type] + return _extensions[mime_type][0] else: return None +def get_extensions_by_mimetype(mime_type): + _init_mime_information() + if mime_type in _extensions: + return _extensions[mime_type] + else: + return [] + + _MIME_TYPE_BLACK_LIST = [ # Target used only between gtk.TextBuffer instances 'application/x-gtk-text-buffer-rich-text',