Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-05-22 12:03:31 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-05-22 12:03:31 (GMT)
commit1dc104126df801b7093e550b4df89123bfae88a6 (patch)
treeb45b4c3051aab496488b30836e2329ccb1374505
parent490b939eb99687244752358cae7a56de3c7b5ea3 (diff)
Adapt to new DataStore API.
-rw-r--r--sugar/datastore/datastore.py37
1 files changed, 31 insertions, 6 deletions
diff --git a/sugar/datastore/datastore.py b/sugar/datastore/datastore.py
index 9d65670..82f5026 100644
--- a/sugar/datastore/datastore.py
+++ b/sugar/datastore/datastore.py
@@ -25,7 +25,7 @@ class DSObject(gobject.GObject):
([]))
}
- def __init__(self, object_id, metadata, file_path):
+ def __init__(self, object_id, metadata=None, file_path=None):
gobject.GObject.__init__(self)
self.object_id = object_id
self._metadata = metadata
@@ -43,6 +43,8 @@ class DSObject(gobject.GObject):
del self.metadata[key]
def get_metadata(self):
+ if self._metadata is None and not self.object_id is None:
+ self.set_metadata(dbus_helpers.get_properties(self.object_id))
return self._metadata
def set_metadata(self, metadata):
@@ -53,6 +55,8 @@ class DSObject(gobject.GObject):
metadata = property(get_metadata, set_metadata)
def get_file_path(self):
+ if self._file_path is None and not self.object_id is None:
+ self.set_file_path(dbus_helpers.get_filename(self.object_id))
return self._file_path
def set_file_path(self, file_path):
@@ -88,9 +92,30 @@ def write(ds_object, reply_handler=None, error_handler=None):
# TODO: register the object for updates
logging.debug('Written object %s to the datastore.' % ds_object.object_id)
-def find(query, reply_handler=None, error_handler=None):
- object_ids = dbus_helpers.find(query, reply_handler, error_handler)
+def find(query, sorting=None, limit=None, offset=None, reply_handler=None,
+ error_handler=None):
+ if sorting:
+ query['order_by'] = sorting
+ if limit:
+ query['limit'] = limit
+ if offset:
+ query['offset'] = offset
+
+ props_list, total_count = dbus_helpers.find(query, reply_handler, error_handler)
+
objects = []
- for object_id in object_ids:
- objects.append(get(object_id))
- return objects
+ for props in props_list:
+ if props.has_key('filename') and props['filename']:
+ file_path = props['filename']
+ del props['filename']
+ else:
+ file_path = None
+
+ object_id = props['uid']
+ del props['uid']
+
+ ds_object = DSObject(object_id, props, file_path)
+ objects.append(ds_object)
+
+ return objects, total_count
+