Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/olpc/datastore/model.py
diff options
context:
space:
mode:
authorBenjamin Saller <bcsaller@objectrealms.net>2007-06-24 17:55:41 (GMT)
committer Benjamin Saller <bcsaller@objectrealms.net>2007-06-24 17:55:41 (GMT)
commita7ad9d942c7ebba42d6bba58134006243ba3dffa (patch)
treee2fa19f9aaf7354f4c609e2e6c8522be79bf2603 /src/olpc/datastore/model.py
parentff72c194d59f331d1f608421bf9263f3cfc22f35 (diff)
filename suggestion code
Diffstat (limited to 'src/olpc/datastore/model.py')
-rw-r--r--src/olpc/datastore/model.py26
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