Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/datastore/datastore.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sugar/datastore/datastore.py')
-rw-r--r--src/sugar/datastore/datastore.py45
1 files changed, 30 insertions, 15 deletions
diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py
index 2785355..5b12bbf 100644
--- a/src/sugar/datastore/datastore.py
+++ b/src/sugar/datastore/datastore.py
@@ -30,6 +30,7 @@ from sugar.datastore import dbus_helpers
from sugar import mime
from sugar import dispatch
+# TODO: subclass from dict
class DSMetadata(gobject.GObject):
__gsignals__ = {
'updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
@@ -69,6 +70,9 @@ class DSMetadata(gobject.GObject):
def keys(self):
return self._props.keys()
+ def items(self) :
+ return self._props.items()
+
def get_dictionary(self):
return self._props
@@ -151,6 +155,7 @@ class DSObject(object):
def copy(self):
return DSObject(None, self._metadata.copy(), self._file_path)
+
def get(object_id):
logging.debug('datastore.get %r' % (object_id,))
tree_id, version_id = object_id
@@ -216,19 +221,29 @@ def find(query, options={}, sorting=None, limit=None, offset=None, properties=No
if offset:
options['offset'] = offset
+ if reply_handler and error_handler :
+ w_reply_handler = (lambda entries, total_count:
+ reply_handler(_metadata_to_dsobjects(entries), total_count))
+
+ if querystring :
+ return dbus_helpers.textsearch(querystring, query, options,
+ w_reply_handler, error_handler)
+ else :
+ return dbus_helpers.find(query, options,
+ w_reply_handler, error_handler)
+
+
if querystring :
- entries, total_count = dbus_helpers.textsearch(query, options,
- reply_handler, error_handler)
+ entries, total_count = dbus_helpers.textsearch(querystring, query, options)
else :
- entries, total_count = dbus_helpers.find(query, options,
- reply_handler, error_handler)
+ entries, total_count = dbus_helpers.find(query, options)
- objects = [
- DSObject(metadata['tree_id'], metadata['version_id'],
- DSMetadata(metadata), None)
- for metadata in entries]
+ return _metadata_to_dsobjects(entries), total_count
- return objects, total_count
+def _metadata_to_dsobjects(entries) :
+ return [DSObject(metadata['tree_id'], metadata['version_id'],
+ DSMetadata(metadata), None)
+ for metadata in entries]
def copy(jobject, mount_point):
@@ -266,7 +281,7 @@ class DatastoreListener(object):
self._datastore = dbus_helpers._get_data_store()
self._signal_handlers = [
self._datastore.connect_to_signal(sig_name[0].upper()+sig_name[1:],
- getattr(self, "__datastore_%s_cb" % (sig_name,)))
+ getattr(self, "_datastore_%s_cb" % (sig_name,)))
for sig_name in self._sig_names]
for sig_name in self._sig_names :
setattr(self, sig_name, dispatch.Signal())
@@ -280,21 +295,21 @@ class DatastoreListener(object):
# have already been collected
pass
- def __datastore_saved_cb(self, tree_id, version_id):
+ def _datastore_saved_cb(self, tree_id, version_id):
metadata = get_metadata((tree_id, version_id))
self.saved.send(self, metadata=metadata)
- def __datastore_changedMetadata_cb(self, tree_id, version_id):
+ def _datastore_changedMetadata_cb(self, tree_id, version_id):
metadata = get_metadata((tree_id, version_id))
self.changedMetadata.send(self, metadata=metadata)
- def __datastore_deleted_cb(self, tree_id, version_id):
+ def _datastore_deleted_cb(self, tree_id, version_id):
self.deleted.send(self, object_id=(tree_id, version_id))
- def __datastore_ready(self):
+ def _datastore_ready_cb(self):
self.ready.send(self)
- def __datastore_stopped(self):
+ def _datastore_stopped_cb(self):
self.stopped.send(self)