Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-10-14 18:18:21 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-10-14 18:18:21 (GMT)
commit456507d22c1c4457d7eea2a5b1dd1a692a9ee923 (patch)
tree7f26ed946874fe742df3dbc171c99fd51cd58d49
parentf441ac2a55137fcfcf3a3bc819bcd60c7e9350f2 (diff)
Encode unicode strings as utf-8
-rw-r--r--src/olpc/datastore/indexstore.py6
-rw-r--r--src/olpc/datastore/metadatastore.py10
-rw-r--r--src/olpc/datastore/migration.py6
3 files changed, 19 insertions, 3 deletions
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()