From 5af1b7d005524cad9a04462d612a1ce2b85a58ff Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sat, 08 Sep 2007 10:11:03 +0000 Subject: Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar --- (limited to 'sugar') diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index b019627..a5661cd 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -487,6 +487,7 @@ class Activity(Window, gtk.Container): pass self._updating_jobject = True datastore.write(self._jobject, + transfer_ownership=True, reply_handler=self._internal_save_cb, error_handler=self._internal_save_error_cb) diff --git a/sugar/datastore/datastore.py b/sugar/datastore/datastore.py index 6409a8a..0be6a2f 100644 --- a/sugar/datastore/datastore.py +++ b/sugar/datastore/datastore.py @@ -186,7 +186,7 @@ def create(): metadata['mtime'] = metadata['ctime'] return DSObject(object_id=None, metadata=metadata, file_path=None) -def write(ds_object, update_mtime=True, reply_handler=None, error_handler=None, timeout=-1): +def write(ds_object, update_mtime=True, transfer_ownership=False, reply_handler=None, error_handler=None, timeout=-1): logging.debug('datastore.write') properties = ds_object.metadata.get_dictionary().copy() @@ -198,12 +198,14 @@ def write(ds_object, update_mtime=True, reply_handler=None, error_handler=None, dbus_helpers.update(ds_object.object_id, properties, ds_object.file_path, + transfer_ownership, reply_handler=reply_handler, error_handler=error_handler, timeout=timeout) else: ds_object.object_id = dbus_helpers.create(properties, - ds_object.file_path) + ds_object.file_path, + transfer_ownership) # TODO: register the object for updates logging.debug('Written object %s to the datastore.' % ds_object.object_id) diff --git a/sugar/datastore/dbus_helpers.py b/sugar/datastore/dbus_helpers.py index 6625d22..88dfb6d 100644 --- a/sugar/datastore/dbus_helpers.py +++ b/sugar/datastore/dbus_helpers.py @@ -40,20 +40,26 @@ def _get_data_store(): DS_DBUS_INTERFACE) return _data_store -def create(properties, filename): - object_id = _get_data_store().create(dbus.Dictionary(properties), filename) +def create(properties, filename, transfer_ownership=False): + object_id = _get_data_store().create(dbus.Dictionary(properties), filename, + transfer_ownership) logging.debug('dbus_helpers.create: ' + object_id) return object_id -def update(uid, properties, filename, reply_handler=None, error_handler=None, timeout=-1): - logging.debug('dbus_helpers.update: %s, %s, %s' % (uid, filename, properties)) +def update(uid, properties, filename, transfer_ownership=False, + reply_handler=None, error_handler=None, timeout=-1): + debug_props = properties.copy() + if debug_props.has_key("preview"): + debug_props["preview"] = "" + logging.debug('dbus_helpers.update: %s, %s, %s, %s' % (uid, filename, debug_props, transfer_ownership)) if reply_handler and error_handler: _get_data_store().update(uid, dbus.Dictionary(properties), filename, + transfer_ownership, reply_handler=reply_handler, error_handler=error_handler, timeout=timeout) else: - _get_data_store().update(uid, dbus.Dictionary(properties), filename) + _get_data_store().update(uid, dbus.Dictionary(properties), filename, transfer_ownership) def delete(uid): logging.debug('dbus_helpers.delete: %r' % uid) -- cgit v0.9.1