Fix #1373 use of cyrllic paths

This commit is contained in:
Andrew Resch 2010-10-16 12:56:00 -07:00
parent 2a3eb0578c
commit 6d2a001635
3 changed files with 17 additions and 5 deletions

View File

@ -475,7 +475,7 @@ def free_space(path):
sectors, bytes, free, total = map(long, win32file.GetDiskFreeSpace(path))
return (free * sectors * bytes)
else:
disk_data = os.statvfs(path)
disk_data = os.statvfs(path.encode("utf8"))
block_size = disk_data.f_bsize
return disk_data.f_bavail * block_size

View File

@ -191,6 +191,7 @@ what is currently in the config and it could not convert the value
if isinstance(value, basestring):
value = deluge.common.utf8_encoded(value)
if not self.__config.has_key(key):
self.__config[key] = value
log.debug("Setting '%s' to %s of %s", key, value, type(value))
@ -204,7 +205,10 @@ what is currently in the config and it could not convert the value
if value is not None and oldtype != type(None) and oldtype != newtype:
try:
value = oldtype(value)
if oldtype == unicode:
value = oldtype(value, "utf8")
else:
value = oldtype(value)
except ValueError:
log.warning("Type '%s' invalid for '%s'", newtype, key)
raise
@ -254,7 +258,10 @@ what is currently in the config and it could not convert the value
5
"""
return self.__config[key]
if isinstance(self.__config[key], str):
return self.__config[key].decode("utf8")
else:
return self.__config[key]
def register_change_callback(self, callback):
"""
@ -404,7 +411,7 @@ what is currently in the config and it could not convert the value
# The config has not changed so lets just return
if self._save_timer and self._save_timer.active():
self._save_timer.cancel()
return
return True
except IOError, e:
log.warning("Unable to open config file: %s because: %s", filename, e)

View File

@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
from twisted.trial import unittest
from twisted.python.failure import Failure
@ -6,7 +8,7 @@ import os
from deluge.config import Config
DEFAULTS = {"string": "foobar", "int": 1, "float": 0.435, "bool": True}
DEFAULTS = {"string": "foobar", "int": 1, "float": 0.435, "bool": True, "unicode": u"foobar"}
class ConfigTestCase(unittest.TestCase):
def setUp(self):
@ -27,6 +29,9 @@ class ConfigTestCase(unittest.TestCase):
config["foo"] = 2
self.assertEquals(config.get_item("foo"), 2)
config["unicode"] = u"ВИДЕОФИЛЬМЫ"
self.assertEquals(config["unicode"], u"ВИДЕОФИЛЬМЫ")
config._save_timer.cancel()
def test_load(self):