Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-11-12 19:08:03 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-11-12 19:08:03 (GMT)
commit6d3d607ec7b82275b85a9ec2c7a337533f9ae760 (patch)
tree4ce980539508b25462bfabdb83640cca80910afd
parent32726e020b14edb72547acff779d7ab15f9dcd8d (diff)
#4783 Try harder to guess the file extension.
-rw-r--r--NEWS1
-rw-r--r--src/olpc/datastore/model.py32
2 files changed, 22 insertions, 11 deletions
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):