From 527f5fef6ecde84da4e851064424932ecee0f96d Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Sun, 19 Jul 2009 20:49:21 +0000 Subject: sugar.datastore.datastore: some fixes, add DSMetadata.items() --- 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) -- cgit v0.9.1