Hi,

This seems to be new behaviour from somewhere after sugar-0.84.
(probably after 0.88 as well)

If you take an entry from the datastore, examine its file path, adjust
metadata and save, you lose your data.

Simple test case:

Take a datastore ID of any item in your journal that you don't mind losing.

Open Terminal activity, run "python" to launch python shell
In shell:

>>> from sugar.datastore import datastore
>>> import dbus
>>> import os

Now lookup the datastore item

>>> obj = datastore.get("fc3e2c72-0ea3-4ddf-977f-cb5299e4d972")
>>> obj
<sugar.datastore.datastore.DSObject object at 0x948c52c>

Retreive its file path, check its size:

>>> path = obj.file_path
>>> path
dbus.String(u'/home/olpc/.sugar/default/data/fc3e2c72-0ea3-4ddf-977f-cb5299e4d972_B1OFZW.png')
>>> os.path.getsize(path)
10474L

Change the metadata:

>>> obj.metadata['title'] = dbus.ByteArray("my new title")

Now save:

>>> datastore.write(obj)

Now observe truncated file:

>>> os.path.getsize(path)
0L

bye bye data :(

The net effect of this is that if you change the title of a photo in
record, you lose your photo.

Daniel
_______________________________________________
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel

Reply via email to