diff options
author | Simon Schampijer <simon@schampijer.de> | 2010-02-06 22:08:17 (GMT) |
---|---|---|
committer | Simon Schampijer <simon@schampijer.de> | 2010-02-06 22:08:17 (GMT) |
commit | 394870f4ad42032f173e29ab3256d37002349b64 (patch) | |
tree | f1edd1b6e8940b23f95ad2071e79babb979fbea3 | |
parent | b5bcbe2ed4fe1a7d1b840bf7ad85f7daa88cb308 (diff) |
Synchronize changes made to a Journal entry #1358
-rw-r--r-- | src/sugar/datastore/datastore.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py index 9502ad5..b83b2e2 100644 --- a/src/sugar/datastore/datastore.py +++ b/src/sugar/datastore/datastore.py @@ -129,17 +129,39 @@ class DSMetadata(gobject.GObject): else: return default + def update(self, properties): + """Update all of the metadata""" + for (key, value) in properties.items(): + self[key] = value + class DSObject(object): """A representation of a DS entry.""" def __init__(self, object_id, metadata=None, file_path=None): - self.object_id = object_id + self._object_id = object_id self._metadata = metadata self._file_path = file_path self._destroyed = False self._owns_file = False + def get_object_id(self): + return self._object_id + + def set_object_id(self, object_id): + if object_id is not None: + _get_data_store().connect_to_signal('Updated', + self.__object_updated_cb, + arg0=object_id) + self._object_id = object_id + + object_id = property(get_object_id, set_object_id) + + def __object_updated_cb(self, object_id): + properties = _get_data_store().get_properties(self.object_id, + byte_arrays=True) + self._metadata.update(properties) + def get_metadata(self): if self._metadata is None and not self.object_id is None: properties = _get_data_store().get_properties(self.object_id) |