Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2010-06-03 14:00:26 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2010-06-03 14:00:26 (GMT)
commit7be57e2e9c1fa00dc1346e3c06626cf9929f5811 (patch)
treeb1bdc4f7fc4e5ed658462188243ec388a633fa1e
parentada4ccb107ca6cee061402624afb5fb9fc15e803 (diff)
append extension (derived from mime_type or data) to file name
-rwxr-xr-xdatastore-fuse.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/datastore-fuse.py b/datastore-fuse.py
index 1b45664..f51a9ca 100755
--- a/datastore-fuse.py
+++ b/datastore-fuse.py
@@ -19,6 +19,7 @@ import dbus
from sugar.logger import trace
import sugar.logger
+import sugar.mime
fuse.fuse_python_api = (0, 2)
@@ -519,7 +520,7 @@ class DataStoreFS(fuse.Fuse):
return name
metadata = self.get_metadata(object_id)
- name = self._generate_title_name(metadata)
+ name = self._generate_title_name(metadata, object_id)
self._add_title_name(name, object_id)
return name
@@ -529,7 +530,7 @@ class DataStoreFS(fuse.Fuse):
return name
@trace()
- def _generate_title_name(self, metadata):
+ def _generate_title_name(self, metadata, object_id):
title = metadata.get('title')
try:
mtime = float(metadata['timestamp'])
@@ -539,11 +540,18 @@ class DataStoreFS(fuse.Fuse):
time_human = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mtime))
name = '%s - %s' % (title, time_human)
name = self._safe_name(name)
- current_name = name
+ extension = self._guess_extension(metadata.get('mime_type'), object_id)
+ if extension:
+ current_name = '%s.%s' % (name, extension)
+ else:
+ current_name = name
counter = 1
while current_name in self._title_name_to_object_id:
counter += 1
- current_name = '%s %d' % (name, counter)
+ if extension:
+ current_name = '%s %d.%s' % (name, counter, extension)
+ else:
+ current_name = '%s %d' % (name, counter)
return current_name
@@ -560,6 +568,22 @@ class DataStoreFS(fuse.Fuse):
def _safe_name(self, name):
return name.replace('/', '_')
+ def _guess_extension(self, mime_type, object_id):
+ extension = None
+
+ if not mime_type:
+ file_name = self.get_data(object_id)
+ if file_name:
+ try:
+ mime_type = sugar.mime.get_for_file(file_name)
+ finally:
+ os.remove(file_name)
+
+ if mime_type:
+ extension = sugar.mime.get_primary_extension(mime_type)
+
+ return extension
+
def main():
usage = __doc__ + fuse.Fuse.fusage