From 6d3d607ec7b82275b85a9ec2c7a337533f9ae760 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Mon, 12 Nov 2007 19:08:03 +0000 Subject: #4783 Try harder to guess the file extension. --- diff --git a/NEWS b/NEWS index acff56f..8d1c8b0 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,4 @@ +* #4783 Try harder to guess the file extension. (tomeu) * #4796 Ignore failure to chmod files in usb sticks. (tomeu) Snapshot 62a5c30d81 diff --git a/src/olpc/datastore/model.py b/src/olpc/datastore/model.py index 4558a10..cdaee9f 100644 --- a/src/olpc/datastore/model.py +++ b/src/olpc/datastore/model.py @@ -14,7 +14,10 @@ import datetime import os import time import warnings +import logging + from sugar import mime + from olpc.datastore.utils import timeparse @@ -227,7 +230,17 @@ class Content(object): else: v = '' d[k] = v return d - + + def _get_extension_from_mimetype(self): + # try to get an extension from the mimetype if available + mt = self.get_property('mime_type', None) + if mt is not None: + ext = mime.get_primary_extension(mt) + # .ksh is a strange ext for plain text + if ext and ext == '.ksh': ext = '.txt' + if ext and ext == '.jpe': ext = '.jpg' # fixes #3163 + return ext + return None def suggestName(self): # we look for certain known property names @@ -237,6 +250,10 @@ class Content(object): # checkout name filename = self.get_property('filename', None) ext = self.get_property('ext', '') + if not ext: + ext = self._get_extension_from_mimetype() + + logging.debug('Content.suggestName: %r %r' % (filename, ext)) if filename: # some backingstores keep the full relative path @@ -244,16 +261,9 @@ class Content(object): f, e = os.path.splitext(filename) if e: return filename, None if ext: return "%s.%s" % (filename, ext), None - elif ext: return None, ext - else: - # try to get an extension from the mimetype if available - mt = self.get_property('mime_type', None) - if mt: - ext = mime.get_primary_extension(mt) - # .ksh is a strange ext for plain text - if ext and ext == '.ksh': ext = '.txt' - if ext and ext == '.jpe': ext = '.jpg' # fixes #3163 - if ext: return None, ext + elif ext: + return None, ext + return None, None def get_file(self): -- cgit v0.9.1