diff options
author | Benjamin Saller <bcsaller@objectrealms.net> | 2007-06-24 17:55:41 (GMT) |
---|---|---|
committer | Benjamin Saller <bcsaller@objectrealms.net> | 2007-06-24 17:55:41 (GMT) |
commit | a7ad9d942c7ebba42d6bba58134006243ba3dffa (patch) | |
tree | e2fa19f9aaf7354f4c609e2e6c8522be79bf2603 /src/olpc/datastore/model.py | |
parent | ff72c194d59f331d1f608421bf9263f3cfc22f35 (diff) |
filename suggestion code
Diffstat (limited to 'src/olpc/datastore/model.py')
-rw-r--r-- | src/olpc/datastore/model.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/olpc/datastore/model.py b/src/olpc/datastore/model.py index bad2c38..be7de93 100644 --- a/src/olpc/datastore/model.py +++ b/src/olpc/datastore/model.py @@ -19,6 +19,8 @@ from sqlalchemy import MapperExtension, EXT_PASS from sqlalchemy.ext.sessioncontext import SessionContext import datetime +import mimetypes +import os import time # XXX: Open issues @@ -68,6 +70,30 @@ class Content(object): @property def filename(self): return self.file.name + def suggestName(self): + # we look for certain known property names + # - filename + # - ext + # and create a base file name that will be used for the + # checkout name + filename = self.get_property('filename', None) + ext = self.get_property('ext', '') + + if filename: + 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 = mimetypes.guess_extension(mt) + if ext: return None, ext + return None, None + + def get_data(self): f = self.file |