[Pkg-sugar-commit] [sugar-toolkit] 51/118: ObjectChooser displays USB media files, but fails to access file #1241
Jonas Smedegaard
dr at jones.dk
Thu Apr 16 18:49:40 UTC 2015
This is an automated email from the git hooks/post-receive script.
js pushed a commit to annotated tag debian/0.84.10-1
in repository sugar-toolkit.
commit 576b62f84df7a326d536af2b41eaebd6730e0b84
Author: Aleksey Lim <alsroot at member.fsf.org>
Date: Fri Sep 4 16:49:03 2009 +0000
ObjectChooser displays USB media files, but fails to access file #1241
---
src/sugar/datastore/datastore.py | 46 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py
index 80d5936..8e8f361 100644
--- a/src/sugar/datastore/datastore.py
+++ b/src/sugar/datastore/datastore.py
@@ -23,9 +23,10 @@ import logging
import time
from datetime import datetime
import os
-
+import tempfile
import gobject
+from sugar import env
from sugar.datastore import dbus_helpers
from sugar import mime
@@ -136,10 +137,53 @@ class DSObject(object):
def copy(self):
return DSObject(None, self._metadata.copy(), self._file_path)
+class RawObject(object):
+
+ def __init__(self, file_path):
+ self.object_id = file_path
+ self._metadata = DSMetadata()
+ self._file_path = None
+ self._destroyed = False
+
+ def get_metadata(self):
+ return self._metadata
+
+ metadata = property(get_metadata)
+
+ def get_file_path(self, fetch=True):
+ # we have to create symlink since its a common practice
+ # to create hardlinks to jobject files
+ if self._file_path is None:
+ self._file_path = tempfile.mktemp(
+ prefix='rawobject',
+ dir=os.path.join(env.get_profile_path(), 'data'))
+ os.symlink(self.object_id, self._file_path)
+ return self._file_path
+
+ file_path = property(get_file_path)
+
+ def destroy(self):
+ if self._destroyed:
+ logging.warning('This RawObject has already been destroyed!.')
+ return
+ self._destroyed = True
+ if self._file_path is not None:
+ os.remove(self._file_path)
+ self._file_path = None
+
+ def __del__(self):
+ if not self._destroyed:
+ logging.warning('RawObject was deleted without cleaning up. '
+ 'Call RawObject.destroy() before disposing it.')
+ self.destroy()
+
def get(object_id):
logging.debug('datastore.get')
metadata = dbus_helpers.get_properties(object_id)
+ if object_id.startswith('/'):
+ return RawObject(object_id)
+
ds_object = DSObject(object_id, DSMetadata(metadata), None)
# TODO: register the object for updates
return ds_object
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-sugar/sugar-toolkit.git
More information about the pkg-sugar-commit
mailing list