Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2010-02-06 22:08:17 (GMT)
committer Simon Schampijer <simon@schampijer.de>2010-02-06 22:08:17 (GMT)
commit394870f4ad42032f173e29ab3256d37002349b64 (patch)
treef1edd1b6e8940b23f95ad2071e79babb979fbea3
parentb5bcbe2ed4fe1a7d1b840bf7ad85f7daa88cb308 (diff)
Synchronize changes made to a Journal entry #1358
-rw-r--r--src/sugar/datastore/datastore.py24
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)