From 456507d22c1c4457d7eea2a5b1dd1a692a9ee923 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Tue, 14 Oct 2008 18:18:21 +0000 Subject: Encode unicode strings as utf-8 --- diff --git a/src/olpc/datastore/indexstore.py b/src/olpc/datastore/indexstore.py index ec97b4a..bd689b0 100644 --- a/src/olpc/datastore/indexstore.py +++ b/src/olpc/datastore/indexstore.py @@ -116,7 +116,11 @@ class IndexStore(object): if key not in _PROPERTIES_NOT_TO_INDEX: if text: text += ' ' - text += str(value) + if isinstance(value, unicode): + value = value.encode('utf-8') + elif not isinstance(value, basestring): + value = str(value) + text += value return text def find(self, query): diff --git a/src/olpc/datastore/metadatastore.py b/src/olpc/datastore/metadatastore.py index 8d1e377..5cd97ba 100644 --- a/src/olpc/datastore/metadatastore.py +++ b/src/olpc/datastore/metadatastore.py @@ -20,7 +20,15 @@ class MetadataStore(object): metadata['uid'] = uid for key, value in metadata.items(): - open(os.path.join(metadata_path, key), 'w').write(str(value)) + f = open(os.path.join(metadata_path, key), 'w') + try: + if isinstance(value, unicode): + value = value.encode('utf-8') + elif not isinstance(value, basestring): + value = str(value) + f.write(value) + finally: + f.close() def retrieve(self, uid, properties=None): dir_path = layoutmanager.get_instance().get_entry_path(uid) diff --git a/src/olpc/datastore/migration.py b/src/olpc/datastore/migration.py index b94cd93..2cc1bd8 100644 --- a/src/olpc/datastore/migration.py +++ b/src/olpc/datastore/migration.py @@ -65,7 +65,11 @@ def _migrate_metadata(root_path, old_root_path, uid): for key, value in metadata.items(): f = open(os.path.join(metadata_path, key), 'w') try: - f.write(str(value)) + if isinstance(value, unicode): + value = value.encode('utf-8') + if not isinstance(value, basestring): + value = str(value) + f.write(value) finally: f.close() -- cgit v0.9.1