Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/carquinyol/datastore.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/carquinyol/datastore.py')
-rw-r--r--src/carquinyol/datastore.py80
1 files changed, 29 insertions, 51 deletions
diff --git a/src/carquinyol/datastore.py b/src/carquinyol/datastore.py
index 0d81063..ccad08a 100644
--- a/src/carquinyol/datastore.py
+++ b/src/carquinyol/datastore.py
@@ -115,59 +115,35 @@ class DataStore(dbus.service.Object):
else:
return True
- @trace()
- def _create_completion_cb(self, async_cb, async_err_cb, tree_id, version_id, exc=None):
- if exc is not None:
- async_err_cb(exc)
- return
-
- self.Created(tree_id, version_id)
- self._optimizer.optimize(tree_id, version_id)
- logger.debug("created (%s,%s)" % (tree_id,version_id))
- async_cb(tree_id,version_id)
-
@dbus.service.method(DS_DBUS_INTERFACE,
in_signature='a{sv}sb',
out_signature='ss',
- async_callbacks=('async_cb', 'async_err_cb'),
byte_arrays=True)
- def create(self, props, file_path, transfer_ownership,
- async_cb, async_err_cb):
+ @trace()
+ def create(self, props, file_path, transfer_ownership):
"""
Short-term compatibility wrapper for save().
"""
- tree_id, child_id = self.save('', '', props, file_path, transfer_ownership)
+ tree_id, child_id = self._save('', '', props, file_path, transfer_ownership)
self.Created(tree_id, child_id)
return (tree_id, child_id)
+ @trace()
@dbus.service.signal(DS_DBUS_INTERFACE, signature="ss")
def Created(self, tree_id, version_id):
pass
- @trace()
- def _update_completion_cb(self, async_cb, async_err_cb, tree_id, version_id, exc=None):
- if exc is not None:
- async_err_cb(exc)
- return
-
- self.Updated(tree_id,version_id)
- self._optimizer.optimize(tree_id,version_id)
- logger.debug("updated %s %s" % (tree_id, version_id))
- async_cb(tree_id, version_id)
-
@dbus.service.method(DS_DBUS_INTERFACE,
in_signature='ssa{sv}sb',
out_signature='ss',
- async_callbacks=('async_cb', 'async_err_cb'),
byte_arrays=True)
- @trace(skip_args=[3], skip_kwargs=["props"]) # "preview" metadata will clutter logfile otherwise
- def update(self, tree_id, version_id, props, file_path, transfer_ownership,
- async_cb, async_err_cb):
+ @trace()
+ def update(self, tree_id, version_id, props, file_path, transfer_ownership):
"""
Short-term compatibility wrapper for save() / change_metadata().
"""
if file_path :
- tree_id, child_id = self.save(tree_id, version_id, props, file_path, transfer_ownership)
+ tree_id, child_id = self._save(tree_id, version_id, props, file_path, transfer_ownership)
else :
self.change_metadata(tree_id, version_id, props)
child_id = version_id
@@ -183,19 +159,22 @@ class DataStore(dbus.service.Object):
in_signature='ssa{sv}sb',
out_signature='ss',
byte_arrays=True)
- @trace(skip_args=[3], skip_kwargs=["metadata"]) # "preview" metadata will clutter logfile otherwise
+ @trace()
def save(self, tree_id, parent_id, metadata, path, delete_after):
+ return self._save(self, tree_id, parent_id, metadata, path, delete_after)
+
+ def _save(self, tree_id, parent_id, metadata, path, delete_after):
# TODO: copy docstring from datastore-redesign.html
if (not tree_id) and parent_id :
raise sugar.datastore.InvalidArgumentError("tree_id is empty but parent_id is not")
if tree_id and not parent_id :
- # TODO: check tree_id does not exist yet
- pass
+ if self._find({'tree_id': tree_id}, {'limit': 1})[1] :
+ raise sugar.datastore.InvalidArgumentError("no parent_id given but tree_id already exists")
elif parent_id :
- # TODO: check parent_id does exist
- pass
+ if not self._find({'tree_id': tree_id, 'version_id': parent_id}, {'limit': 1})[1] :
+ raise sugar.datastore.InvalidArgumentError("given parent_id does not exist")
if not tree_id :
tree_id = self._gen_uuid()
@@ -244,17 +223,26 @@ class DataStore(dbus.service.Object):
in_signature='ssa{sv}',
out_signature='',
byte_arrays=True)
- @trace(skip_args=[3], skip_kwargs=["metadata"]) # "preview" metadata will clutter logfile otherwise
+ @trace()
def change_metadata(self, tree_id, version_id, metadata) :
# TODO: copy docstring from datastore-redesign.html
- # TODO
- pass
+ self._metadata_store.store(tree_id, version_id, metadata)
@dbus.service.method(DS_DBUS_INTERFACE,
in_signature='a{sv}a{sv}',
out_signature='aa{sv}u')
@trace()
- def find(self, query, options, querystring = None):
+ def find(self, query, options):
+ return self._find(query, options)
+
+ @dbus.service.method(DS_DBUS_INTERFACE,
+ in_signature='sa{sv}a{sv}',
+ out_signature='aa{sv}u')
+ @trace()
+ def textsearch(self, querystring, query, options) :
+ return self._find(query, options, querystring = querystring)
+
+ def _find(self, query, options, querystring = None) :
t = time.time()
# don't expose internal details
@@ -303,19 +291,9 @@ class DataStore(dbus.service.Object):
metadata = self._metadata_store.retrieve(tree_id, version_id, options.get('metadata'))
entries.append(metadata)
- logger.debug('find(): %r' % (time.time() - t))
-# logger.debug('count=%r, entries=%r' % (count, entries))
- logger.debug('count=%r' % (count,))
return entries, count
@dbus.service.method(DS_DBUS_INTERFACE,
- in_signature='sa{sv}a{sv}',
- out_signature='aa{sv}u')
- @trace()
- def textsearch(self, querystring, query, options) :
- return self.find(query, options, querystring = querystring)
-
- @dbus.service.method(DS_DBUS_INTERFACE,
in_signature='ss',
out_signature='s',
sender_keyword='sender')
@@ -324,7 +302,7 @@ class DataStore(dbus.service.Object):
"""
Short-term compatibility wrapper for get_filename().
"""
- return self.get_data(uid, vid, sender)
+ return self.get_data(tree_id, version_id, sender)
@dbus.service.method(DS_DBUS_INTERFACE,
in_signature='ss',