#10807 NORM 11.2.0-: Can not copy book downloaded with getbook to usb key
Zarro Boogs per Child
bugtracker at laptop.org
Mon Apr 11 08:11:31 EDT 2011
#10807: Can not copy book downloaded with getbook to usb key
------------------------------+---------------------------------------------
Reporter: erikos | Owner: erikos
Type: defect | Status: new
Priority: normal | Milestone: 11.2.0-M4
Component: sugar | Version: Development build as of this date
Resolution: | Keywords:
Next_action: review | Verified: 0
Deployment_affected: | Blockedby:
Blocking: |
------------------------------+---------------------------------------------
Changes (by sascha_silbe):
* cc: silbe (removed)
* cc: sascha_silbe (added)
Comment:
Replying to [comment:3 erikos]:
> b) we can think about if we should omit data that can not be written to
the json-format before, and as well if we should convert it to something
writable before trying to write the json format (would need to detect and
restore those entries then as well).
I expected this to bite us sooner or later. All existing metadata import /
export code - except that in [http://activities.sugarlabs.org/en-
US/sugar/addon/4326 Backup] and [http://activities.sugarlabs.org/en-
US/sugar/addon/4327 Restore] - assumes that {{{preview}}} is the only
"binary" property. We touched that topic slightly during review (on IRC),
but did not discuss it in depth - partially because the current
[http://git.sugarlabs.org/sugar/mainline/blobs/master/src/jarabe/journal/journalentrybundle.py
JEB support code] has the same issue.
The Sugar 0.84+ data store D-Bus API [http://git.sugarlabs.org/sugar-
datastore/mainline/blobs/master/src/carquinyol/metadatareader.c#line82
treats] all properties as D-Bus byte arrays (signature {{{ay}}}). The low-
level Activity API documentation
[http://wiki.sugarlabs.org/go/Development_Team/Low-
level_Activity_API#Meta_Data mentions this]. So property values should be
treated as byte strings ("binary"), not characters strings (unicode).
Character strings should be serialised to UTF-8.
The problem we're facing is that JSON doesn't have support for byte
strings, only character strings. That's why
[http://wiki.laptop.org/go/Journal_entry_bundles JEB]s have "external"
properties, i.e. values stored outside of the JSON file. Most code only
handles a single external property called {{{preview}}}, but there's no
inherent reason for not doing the same with other properties that are
large or contain data that cannot be represented in UTF-8 (like Backup and
Restore already do).
--
Ticket URL: <http://dev.laptop.org/ticket/10807#comment:6>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list